摘要:
flex与bison是编译器设计工具。这里的编译器为广义,其中包括一般的编译器、脚本解析器等,需要进行语言结构解析来得出意义的程序。 当我们需要用一个语言来设计一款编译器时,需要考虑太多设计重心外的东西,如内存管理、模块设计、字符识别等,flex与bison就很好地为我们处理了这些事情,将设计重心放 阅读全文
摘要:
比如说某二叉树 前序遍历结果: 中序遍历结果: 前序遍历就是先输出根节点,然后左节点,然后右节点 中序遍历就是先输出左节点,然后根节点,最后右节点 对于上面的二叉树我们可以这样分析: 其中绿色的为根结点,也就是1, 然后通过中序遍历结果,得到 1 左边的(粉红)为左子树,右边的(浅蓝)为右子树, 左 阅读全文
摘要:
我们知道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的工作时钟 阅读全文