12 2012 档案
摘要:我们知道printk分为两步,一是把要输出的信息放到缓冲区log_buf,另外一个是通过控制台输出信息。 这里构造myprintk函数,仿照printk的输出信息到缓冲区,并且把缓冲区对应/proc/mymsg文件节点,当cat /proc/msg的时候会输出缓冲区信息 关于log_buf缓冲区的重
阅读全文
摘要:以下源码基于Linux-2.6.32.2 printk是Linux内核空间的信息输出函数,printk入口位于kernel/Printk.c 以下是printk的流程解析: 以上流程可以知道,printk最终会调用到控制台的写函数,用于输出数据另外,在设置bootargs的时候,设置了console
阅读全文
摘要:上面的信息是从度娘百科引用过来的,对于jtag没有了解过的人来说,上面的大部分内容都不知道说什么,当然,我是一开始看的时候也看不懂。 不过从上面得出来的信息知道,jtag是一个协议,标准有4个引脚,用于芯片的测试与编程调试。 jtag是有硬件实现的。 在cpu(注意:这里的cpu是指运算处理单元,只
阅读全文
摘要:const变量,也就是常量,当某个变量加上const属性的时候,表明这个变量不可修改。 const变量是不可写的,那么我们对于const变量的处理只剩下读操作了。 当我们读一般的变量的时候,会先获取该变量的地址,然后到该地址去取数据,那么对于const变量的读操作是怎么样的呢。 下面代码有助于更好理
阅读全文
摘要:一般来说,以 “=” 作为分界,左边的叫左值(l-value),右边的叫右值(r-value)。 虽然通俗,不过这种说法,我是认为是不妥的。 今天有人问了条面试题, a=++b++; 这式子编译无法通过,error: non-lvalue in increment 错误信息翻译过来就是:自增无左值
阅读全文
摘要:一般来说,我们写的代码都是在main函数内运行,main函数就是一切的核心,这的确没错, main函数包含我们所写的代码的主要流程,我们会把想法灌注到其中去,写出一段段代码,最终编译出程序, 即使面向对象的应用开发也是如此。 不过main函数是个函数,它跟其他函数有没有什么根本上的区别? 答案是否定
阅读全文
摘要:ASOC(ALSA system on chip)。是由wolfson公司做的一个针对嵌入式移动设备的声音驱动的架构。支持三种不同的CODEC接口:AC97(Intel),I2S(Philips),PCM接口。ASOC在实现上区分了具体的平台和CODEC,从而使得同一个CODEC芯片可以在不同的体系
阅读全文
摘要:uda1341连接soc的引脚分为两类:数据引脚、控制引脚。 数据引脚用于音频码流的传输, 控制引脚用于该声卡芯片控制,比如说音量控制等 如下图为uda1341的声卡 其中连接soc的引脚用红框框了出来 上面那个是数据传输引脚 下面的是控制引脚 引脚说明: CDCLK : uda1341的工作时钟
阅读全文
摘要:对于字符设备驱动,当file_operations注册好了之后,这只是实现了该驱动的内部功能,我们还要向用户提供操作接口,也就是在/dev/目录下创建字符设备节点,其中device_create函数就用于实现该功能。 创建设备节点是device_create的功能之一,下面主要分析该功能的主要流程。
阅读全文
摘要:DMA(Direct Memory Access,直接内存存取) 一般来说,计算机对内存数据进行处理的时候,需要从内存把数据读进寄存器,然后进行进一步的操作(比如运算处理)。 但是有些数据并不需要运算处理这一类型的操作,只是单纯的移动数据,而把数据读进寄存器,然后再把数据从寄存器写进内存会消耗cpu
阅读全文