u-boot移植中flash无法读id的问题

本文详细记录了解决u-boot在启动时无法识别Flash ID的问题,问题源于Flash头文件定义错误,导致无法正确写入软指令。通过对代码的分析和调试,最终发现是将`CFG_FLASH_WORD_SIZE`错误地定义为`unsigned int`,而非应为`unsigned short`,修正后问题得到解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天flash终于可以正常识别了,找了一个星期的原因,原来是flash的头文件中定义有问题,导致flash不能读取ID,我的Flash型号是SST39LV6401B16位总线宽度,8MByte存储空间。

详细问题是这样的:在u-boot启动时会提示

## Unknown FLASH on Bank 0

我用Source Insight 3.5建立工程,看u-boot的源文件。说实在话,u-boot的文件可真是够乱的,实在是受不了其中的函数调用,要不断的切换文件路径,要不是有Source Insight可以跟踪查找,你要自己找函数的互相调用和定义,估计你可以叫救护车来给你守着了,u-boot编的真tmd费劲!!!

分析一下u-boot的启动过程。u-boot启动时先进入cpu/arm7tdmi/start.S文件,在这个文件中初始化了cpu的一些参数,设置了外围总线。然后又跳到lib_arm/board.c中的void start_armboot (void)中,在这个函数中,弄了一个init_fnc_t **init_fnc_ptr,这个怪怪的,反正是负责初始化各个外围器件,包括了串口、dram等;同时在此处显示了u-boot的版本,ram配置信息。然后又有几个函数做了些事情,着急,看与Flash无关,所以不管了。

接下来遇到一个size = flash_init (); 嗯,看名字flash_init ()这个就是负责初始化flash了,这个函数在board/lpc2294.c/flash.c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值