友坚2416开发板初次安装wince都选择从SD卡启动,来烧写block0img.nb0,eboot.bin,nnk.bin,
现在我想用jtag+H-jtag来直接烧写板上的nandflash,但是不知道block0img.nb0,eboot.bin在nandflash里的起始地址,
哪位兄弟知道在那个文件里可以查到,我找了半天,也没找到,友坚的技术支持也不肯说。
首先鄙视一下友坚的做法。
你的开发板应该支持nandflash启动的。也就是系统上电以后,arm处理器会自动从nandFlash的0地址把eboot.bin读入arm内部的sram中。然后eboot再从指定的nandflash地址读取内核,文件系统等等到sdram中。所以:eboot.bin应该烧写到nandFlash的0地址处,block0img.nb0,nnk.bin烧写的地址应该和eboot代码中指定的地址一致。
谢谢ymhsss兄弟,
我看了一下wince的启动过程,好象是nandflash中先烧写的是block0img.nb0文件,这个文件负责初始化硬件配置,拷贝eboot.bin文件到DRAM中,
由此看来,block0img.nb0文件应该烧写到nandflash的0地址处,现在就是不知道eboot.bin烧写到nandflash的地址.
block0img.nb0是烧录到NAND的BLOCK 0,这样设置成NAND启动后才能自动从NAND中读取初始化代码,EBOOT要烧录的位置要看实际的BLOCK0IMG的代码是去从哪里读了,它从哪个BLOCK读你就烧到哪个BLOCK
呵呵,需要烧写block0img.nb0 和 EBOOT.nb0两个文件,
block0img.nb0放入BLOCK 0,EBOOT.nb0的烧写地址在NBL2中定义,默认的话,应该在第7个BLOCK。可以自己修改成BLOCK 1,然后吧block0img.nb0和EBOOT.nb0打包,就可以一次性烧写了
忘记说还有很重要的一点,block0img.nb0不能直接用H-JTAG烧写,需要修改一下打包的顺序,不然烧写后无法启动,只能运行前4K代码
谢谢两位,还请问一下,我编译好wince后生成的三个文件是block0img.nb0,eboot.bin和nk.bin。并没有生成eboot.nb0,如果用H-JTAG直接烧写nandflash,是必须要eboot.nb0才行吗?
请问lee兄弟,打包和打包顺序的方法能指点我一下吗,wince我刚开始接触,网上也没查到
BLOCK0IMG.NB0 放在FLASH的0地址,
EBOOT可以接着BLOCK0IMG放。
所以一般将BLOCK0IMG放在0块,
EBOOT可以放在接下来的两块。
然后NK 可以放在EBOOT的第4块。
1、首先H-JTAG只能烧写.bn0格式文件。能烧写.bin文件,但不能用。
2、楼主的block0img.nb0肯定应该是烧写在block0中,eboot.nb0具体的烧写地址,要看loader.h是怎么定义的,一般式eboot.nb0是烧写在block2起始的地址,block1一般用来烧写TOC。
3、NK.nb0是不能用H-JTAG直接烧写,因为在烧写NK.nb0前要先对NandFlash进行低格和分区等操作,还有MBR的烧写也在NK之前,而这些工作必须由eboot来完成。故nk必须来由eboot来烧写。
4、为什么没有生成eboot.nb0呢?还请高人指点啊