为了支持NAND FLASH 的系统引导,S3C2410A具备了一个叫做“Stepping Stone"的内部SRAM缓冲器。当系统启动时,NAND FLASH的前4KB代码自动载入到“Steppingstone”中,然后系统自动执行这些载入的代码。一般这4KB引导代码需要将NAND FLASH 中的程序内容拷贝到SDRAM中,拷贝完后程序会转入到SDRAM中继续执行。
因为考虑到NAND FLASH的位交换问题,在NAND FLASH 向SDRAM拷贝数据时,我加入了ECC校验代码。ECC校验代码我是搬移U-BOOT的ECC部分的(这个ECC算法和VIVIBOOTLOADER的ECC算法以及YAFFS中的ECC算法是一样的)。反复测试程序显示:一旦加入ECC算法,读页数据时很多时候会出现位错误(一位或两位或两位以上的位错误),程序运行不稳定。
问题:1. 为什么多数启动代码中的Nand Flash 的数据拷贝部分没有ECC校验,是不是硬件不支持?
2. 问题会不会和NAND FLASH + SRAM 的启动方式有关呢?
[align=right][color=#000066][此贴子已经被作者于2006-3-17 15:59:05编辑过][/color][/align]