总体来看,需要一个阶段性总结了,因为现在SD卡的调试也进入了卡壳期。大概会出一系列的总结文章,主要涉及的主题在下面列出:
1、开发工具:gcc/gdb/vim/ctags
2、Makefile和KConfig:linux内核的配置与编译,更好的理解模块化开发
3、调试技术:
无敌的printf等;注意整体的流程以及与内核的交互;
4、常用的shell命令:
grep查找特定字符串;find查找指定的文件
5、特定驱动总结【从体系结构相关arch和体系结构无关driver两边分析以及它们之间的交互】
(1)触屏驱动开发总结
(2)LCD/Framebuffer等显示系统驱动开发总结
(3)SD卡驱动总结以及调试遇到的问题
6、相关技术
(1)中断系统在驱动开发中的应用,特别是在基于Xen这一层之后,中断的发生过程要仔细分析一次
(2)进程调度子系统在驱动开发中的应用,在SD卡中要观察wat_for_completion
(3)利用u-boot从nandflash启动的原理:关键词:Steppingstone,垫脚石。引自:s3c2440由NANDFLASH启动原理
不同与NOR FLASH,NAND FLASH对外接口中的数据与地址线是分时复用的,这也就造成了NAND FLASH本身对外没有专门的地址线可以直接连接到CPU的引脚上,NAND FLASH 与CPU的交互要通过一个中介来完成,那就是NAND FLASH 控制器,在S3C2440芯片中就集成有这样一个控制器。
由于NAND FLASH不能与CPU直连,而CPU在加电后会去0x0处取指执行,所以系统在RESET之后是没有办法从NAND FLASH直接启动的,但在S3C2440中采用了一种迂回的方式来完成从NAND中启动系统,在CPU中集成有一个4KB的SRAM(英文名字叫Steppingstone,垫脚石),当系统被设置成从NAND FALSH启动(使用OM[1:0]引脚的电平来控制)时,NAND FLASH控制器会在启动后把NAND FLASH中的前面4KB的内容COPY到SRAM垫脚石中,因为SRAM与CPU是直连的,又因为设置的是从NAND FLASH启动,这时的SRAM垫脚石会被映射到CPU地地空间的0地址处,于是CPU便从SRAM的0地址外取指令并执行,这4KB的代码一般是将NAND中剩下的代码拷贝到SDRAM中,然后跳转过去执行,此后这4KB的SRAM还可以用作其它用途。