Fedora-ARM
全部博文(241)
分类: LINUX
2009-11-03 10:23:52
一、启动识别nand boot or Nor boot(此办法已废止,更好的方法如下) 找到识别 nand boot 和 nor boot 的方法,其实也是在自己犯的一个错误中找到的。 当我在使用nand boot的时候,想使用操作Nor flash的命令,但是一用就死机,我一开始以为是操作flash的程序错了. 但我找了半天都没有找到错误,最后终于发现:原来这是S3C2440芯片的机制的问题,在硬件上设为Nand boot的时候,作为Nor boot的那个分区没有被映射到相应的地址. 也就是说,将mini2440的启动选择开关打在Nand boot的时候,Nor flash硬件上是不可用的。但是在Nand boot启动后,你再把开关拨到Nor boot,又可以操作Nor flash了。 在将mini2440的启动开关打在nand boot的时候,读取nor flash,得到的都是0。 利用这一点,我在启动的时候,只需读取nor flash中4K(和nand boot原理有关)之后的一段数据,如果都是0,证明是Nand boot,否则为Nor boot。 4K之后多少和uboot有关,太后面了可能出现连续的0,所以我用16进制查看器看了下uboot的bin文件,确定在8K左右不可能出现连续16个字的0。 所以我在一启动的时候读取地址为0x2000处的数据,如果检测到非零数,就启动Nor boot的自拷贝程序,否则跳到Nand boot程序。 |
|
0xdeadbeef;
0xdeadbeef
,不是的话就说明有未知错误,死循环!
)。但是最后有一点很重要:如果是Nand boot,必须要复原清零的数据。原因是:在nand boot过后,会核对内部SRAM中的4K程序,和从Nand中拷贝到SDRAM的前4K程序是否一致,如果不一致会进入死循环。读取NFCONF寄存器的0~3bit的数 据,以检查硬件上Nand flash的配置,然后根据配置跳转到相应的自拷贝程序。 具体的实现请看u-boot-2009.08 for mini2440 patch release和S3C2440的数据手册。 |
chinaunix网友2010-11-29 11:33:38
博主的意思我大概明白了,就是说博主移植后的Uboot不管是NAND和NOR都可以启动。 那官方的Uboot是不是不支持NAND和NOR双启动呢?如果不支持双启动,那么官方的Uboot支持的是哪种启动方式呢?
chinaunix网友2010-11-28 12:45:20
请教楼主,关于自动识别norboot和nandbot的问题,楼主回复说 “这样就不用区分nor boot或者nand boot的bin文件了,一个bin文件烧到nor和nand都可以。” 那也就是说对于uboot来说,norboot和nandboot要make两个bin文件了?怎么make呢?是要改code?还是有什么配置项?又或者有特殊的工具来完成呢? 这块一直没有搞明白,因为看uboot的源码,relocate部分仅仅简单的把code从flash中copy到ram中,并没有针对nand和nor做不同的处理。还请楼主指教。