大家好!
目前我在调试2440的板子。打算从nand flash(三星K9F1208U0C)启动。然后Nboot起来后,从axd上看到写道NAND和映射SRAM的值是正确的。
但是指定0x30100000地址将NAND中的代码拷贝到SDRAM时,出现错误,数据乱了,贴一部分大家帮看看:
NAND中数据:
45 00 00 EA 1B 00 00 EA 20 00 00 EA 2B 00 00 EA
对应SDRAM中的:
00 45 AA 80 00 1B AA 80 00 20 AA 80 00 2B AA 80
通过Jtag放在NAND中的数据和.bin文件相同,而且通过AxD可以看到用NAND启动时,开始考入SRAM缓冲的4KB也是正确的。但是当数据从NAND开始向SDRAM拷贝就出现这种看上去好像大小端不对,但本身却还有错位的错误。
而直接向SDRAM写入数据是正确的。
请大家帮忙看看!
从上面的结果看,应该是地址空间的变化和Big Endian 或者 Little Endian,看看你的代码在拷贝后的数据 前后是否是能了 内存管理MMU
另外, Nandflash的数据通过直接访问Nandflash寄存器直接读取寄存器数据到SDRAM中,其实就是你的0x30100000 地址,请注意罢了。
是这样的,在从Nand flash拷贝数据到SDRAM也就是0x30100000地址后,加上了MMU使能。
是否需要在拷贝前加MMU使能?
另外MMU不是虚拟地址到物理地址的映射吗?这里0x30100000应该是物理地址吧,如果不加MMU是不是也可以阿!