主题 : 建议友善从IROM加载Nandflash 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 9192
精华: 0
发帖: 19
金钱: 95 两
威望: 19 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2009-09-20
最后登录: 2020-11-02
楼主  发表于: 2011-08-12 09:44

 建议友善从IROM加载Nandflash



从友善的硬件电路设计上看,和mini2440一样。都是采用cpu本身的硬件机制,加载Nandflash前面的4K代码到steppingstone,steppingstone映射到0x0000_0000,从而达到从Nandflash启动的目的。

但是当使用MLC的时候,这个机制就有很大风险,可能导致的问题是,系统有时不能启动。
原因有
1 MLC不像SLC那么稳定,
2 直接从Nandflash启动,是没有ECC校验的。

如果从IROM启动,再通过IROM加载Nand,这时nand加载是带8位的ECC校验的,那就安全多了。

当然,这样友善生产就很麻烦了,不同的大小的Flash,就有不同的电阻跳线设置。

级别: 新手上路
UID: 9192
精华: 0
发帖: 19
金钱: 95 两
威望: 19 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2009-09-20
最后登录: 2020-11-02
1楼  发表于: 2011-08-12 14:37
mindee,你好!
多谢你的回复。
不知道是不是我对datasheet理解有误,还是我的mini6410版本比较旧(版本1041).

下面是我的理解:

这里引用规格书 
 



从规格书中可以知道,当OM[4:0] = 1111X,是IROM启动模式
如果对比6400规格书,可以知道,当OM[4:0]=0000x ~0011x,系统通过steppingstone机制,从Nandflash启动。这个可以参考这篇文档http://blog.csdn.net/nanjianhui/article/details/4230565


下面在来看mini6410的电路:



从上面的电路CON5可以知道,
当S2拨向SDBOOT时,
OM[4:0] = 11111,对照规格书,Boot device 是 IROM;
GPN[15:13] = 000,对照规格书,说明IROM启动后,从SD0设备加载bootloader,即BL1。

当S2拨向Nand时
OM[4:0]=00111,对照规格书,对应的boot device是Reserved,但通过对比6400,我们知道是Nandflash
这时GPN[15:13],对boot device的选择没有影响。

结论如下:
1 从SD卡启动时,mini6410确实是通过IROM来启动的,(supperboot就是通过IROM加载到steppingstone,然后从0x0c00_0000开始运行的);
2 从Nand启动时,mini6410没有通过IROM来加载nandflash,直接通过硬件机制,把Nandflash前面4K代码加载到steppingstone,steppingstone地址映射到0x0000_0000,然后从地址0开始运行。此加载过程没有ECC校验。
级别: 新手上路
UID: 9192
精华: 0
发帖: 19
金钱: 95 两
威望: 19 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2009-09-20
最后登录: 2020-11-02
2楼  发表于: 2011-08-14 20:36
从IROM加载Nandflash就可以了