嵌入式开发之道——菜鸟成长日志与项目经理的私房菜 邱毅凌著
读书笔记文档下载:http://download.csdn.net/detail/luckywang1103/8710299
1、一般函数调用与中断ISR的区别
一般程序都是循序执行的,CPU一定要执行到main()的第20行,才有可能去调用sub_fun()函数,而中断可以发生在任何的时间地点。例如,使用者可以在任何时候按下键盘的某个键,此时不论CPU下个要执行的指令是什么,CPU都会先记录目前的状态,然后参考中断向量表,接着去执行键盘中断的处理程序。等ISR执行完后,CPU会取回中断之前的状态,然后返回被中断的地址继续循序执行。
2、中断分为CPU自行产生的内部中断及由外围设备产生的外部中断。
3、*(volatile unsigned char*)0x300022&=0xfd; C语言用指针取地址里面的东西
asm(“xld.w %r0,0x300022”);
Asm(“bset [%r0],0x1”); 汇编用[]取地址里面的东西
4、linux的基本执行单元是process,而thread是process内的执行单位
RTOS的基本执行单位是task,这些task共享地址空间,和多个thread共享一个process一样。在linux上多个thread最多把一个process搞死,而某个task作乱,整个系统都会被影响。(thread与RTOS上的task思想相同)。
5、FAE(field application engineer)现场应用工程师,FAE非常了解自家的产品,最主要的工作是协助客户解决使用产品上的问题。跟RD比较起来,RD做的事情比较封闭,只是呆在办公室里做研发。
6、CPU内部有一段小程序,供电后会从NAND FLASH的第一个block,读出16KB的程序到CPU的内部存储器中。
CPU将控制权交给内部存储器的程序,这个程序就是BootLoader
BootLoader会初始化SDRAM,再从NAND FLASH将主程序载入到SDRAM
BootLoader将控制权交给SDRAM内的主程序
7、NAND FLASH(以2Gbit的NAND为例)
NAND的基本单位是block,这个设备共有2048个block
每个block里有64个page
每个page的size是(2048+64)Byte,其中2048Byte是Data Area,而64Byte是Redundant Area(用于存储校验信息和其他信息)
对于NAND Flash 来讲,地址和命令只能在I/O[7:0]上传递,数据宽度是8 位
Nand flash 以页为单位读写数据,而以块为单位擦除数据。按照这样的组织方式可以形成所谓的三类地址: –Block Address – Page Address –Column Address
NOR FLASH
Nor Flash采用并行地址总线和数据总线,若有21bit地址总线,16bit数据总线,则该Nor Flash最大可寻址为2M的地址空间。Nor Flash可寻址每一个存储单元。
Nand Flash
数据和地址均通过8bit 的I/O总线串行控制。Nand部支持连续空间寻址,无法在片内运行程序。