- 论坛徽章:
- 0
|
做一个项目,很rush,一块toshiba的ARM9的板子,tompa,通过跳线有两种启动方式
1,直接从外接norflash启动
2 ,从芯片内部的rom启动,里面有fixed的code可以搬移nandflash的程序到ram运行。(应该是sdram)
toshiba提供了两个firmware:
1,没有原代码的bootloader,支持启动linux,但是没有下载,烧写,网络等功能,这个bootloader和linux,文件系统都从norflash启动,我们通过j-link—jtag烧写,没有问题。
2, uboot,感觉是一个基于nand的版本,查看代码,没有relocate,textbase定义的是sdram的,也就是说是通过内部rom启动后将它从nand搬移到sdram然后直接运行的,sdram应该已经由芯片内部rom里面的程序初始化了,反正把它写到nor里面,通过以上说的第一种启动方式是启不来的。
现在公司的新产品不带nor,只有nand,也就是说要通过第二种方式启动,问题是jtag不支持烧写nand,
方案一:写一个基于ram的loader,先通过jtag将它写到ram,然后运行它,由这个loader从PC接收uboot.bin再往nand里面写,问题是如果这个loader是基于内部sram的,sram太小,只有48k,不太够。
方案二:由jtag先初始化sdram,然后再用sdram,不用sram,但是sdram比较难调试,没有找到demo程序。
感觉以上方案都不太容易,
后补:
芯片的inside rom只会拷贝到 sram,最多48k,所以要在这48k里初始化sdram和copy uboot from nand to sdram,then relocate。现在我已经作了一个sram base的小程序,是基于uboot的,其实就是只是用它的start.s 然后自己建立了一个小栈来跑c,c里面初始化sdram,搬运nand,我用jtag直接写到sram然后运行的,可以初始化sdram了,现在主要是nand 的读写出不来,ID可以读,但是erase,write, read都有问题,关于是nand的读写,各位有什么好建议,谢谢啦
各位大虾帮帮忙,指条明路吧!! |
|