工具/软件:Linux
你好
我使用 了 u-boot-2017.01+gitAUTOINC+9fd60700db-g9fd60700db。 在 uboot 中、当我擦除 nand 闪存时出现数据中止错误、错误消息如下:
=> n 和 ERASE.part NAND.SPL
NAND 擦除.part:器件0偏移量0x0、大小0x20000
数据中止
PC:[<8ff7815e>] LR:[ ]
重新分配 PC :[<8082515e>] LR :[ ]
SP:8df28a98 IP:080000 FP:00000000
R10:00000040 R9:8df32ed8 R8:8df351c4
R7:8df351c0 R6:00000001 R5:8df351c0 R4:8ffbb1c8
r3:8ffaa9a4 r2:00000000 r1:00000040 r0:00000040
标志:在模式 SVC_32上关闭 FIQ 的 Nzcv IRQ
正在重置 CPU ...
正在重置...
我找到了发生错误的确切位置:
在 driver/MTD/nand/omap_gpmc.c 文件 _read_prefet_aligned 函数中
对于(i = 0;i < cnt / 4;i++){
* buf++= readl (CONFIG_SYS_NAND_BASE);
Len -= 4;
}
当代码运行"readl (CONFIG_SYS_NAND_BASE)"时,发生错误, CONFIG_SYS_NAND_BASE=0x80000,cnt=4;
为什么会发生错误? 我如何解决这个问题?
谢谢。