分类: LINUX
2010-12-25 15:03:18
手头的9260板子 原本是dataflash启动的,现在为了节省成本,尝试去掉dataflash,采用nand启动。 对于nand启动的方式,其实不需要修改什么代码,每次编译bootstrap都会生成两份二进制,一个是dataflash,一个nandflash,区别无非在于从不同的介质中读取uboot到sram中。但要注意sram大小只有4k,所以要将代码做一些裁减。对于nand方式,修改makefile,把一些无用的库干掉就可以在4096以内了。 接下来把uboot烧到nand的0x20000(块对齐),就可顺利启动系统。但接下来的启动出了问题,因为原本使用dataflash的时候,拔掉跳线是连接samba,不拔正常启动,而现在nand启动跳线完全无法起作用,即使拔掉跳线仍然正常启动。研究soc的spec,发现9260的跳线其实和其他soc有所不同:其他一些soc通过跳线影响bootrom的启动选择,根据跳线信号的不同产生引导的分支;而9260则是单线启动,首先查看dataflash的0地址是否有8个异常向量,有则dataflash启动,否则同样看nand,然后再samba。以前的跳线连在dataflash片选上,拔掉后找不到dataflash,而nand又无8个向量,因而启动samba;改成nand以后,原来的跳线失去作用,自然就无效了。 最近在研究珊瑚的代码,同时对比linux内核,重点关注中断响应与处理,进程切换与调度等,有所收获,等这块研究告一段落并且在板子上验证过后,继续对rtos的进程及内存管理,以及其他驱动进行深入学习。再后面会结合更多的rtos,如djyos,rtems等进行分析 |