无论系统从NOR启动还是从NAND启动,都会打印相同的错误信息
Flash:*** failed ***
### ERROR ### Please RESET the board
正常的打印信息应该是
Flash: 2M
2M表示Flash大小
显然这里Flash识别出错
通过下面命令定位错误在arch/arm/lib/board.c:506:
grep "Flash: " * -nR
分析arch/arm/lib/board.c:506行后的代码可以知道,打印错误信息的原因可能是nor flash初始化不成功
flash_size = flash_init();
分析flash_init,这个函数会调用子函数检测nor flash信息
if (!flash_detect_legacy(cfi_flash_bank_addr(i), i))
flash_get_size(cfi_flash_bank_addr(i), i);
在检测函数中有debug信息,在drivers/mtd/cfi_flash.c中定义宏DEBUG为1,开启调试信息
重新编译烧写u-boot,从nor flash启动后可以看到调试信息
JEDEC PROBE: ID c2 2249 0
对比nor flash芯片手册,打印的id正确

本文详细解析了U-Boot在NOR Flash启动时遇到的错误信息问题,通过代码定位、调试信息分析,发现norflash初始化失败,并自行添加norflash描述至jedec_table数组,调整CONFIG_SYS_MAX_FLASH_SECT配置,最终成功支持norflash。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



