首先确认硬件是否正常,flash有无虚焊
开发板使用一个已经可以正常启动的 uboot 镜像,直接进入 uboot 的命令行,输入 sf probe
这时 uboot 会去读取 flash 的 id ,如果 uboot 中没有对应 flahs 的 id 号,就会报以下的错误
SF: unrecognized JEDEC id bytes: 0b, 40, 18 // 0b, 40, 18 是 flash 的 id
移植一个新的 flash 需要做的事情很简单,将 flash 对应的 id 和一些特性加入到 uboot 中就可以了
本人需要移植的 flash 为 xt25f128b,经过查询数据手册,发现和 winbond w25qxxx 系列的 flash 兼容性很高,硬件特性、指令基本一样
于是觉得基于 w25qxxx 系列进行移植
定位问题
在代码中搜索报错的位置
static const struct spi_flash_info *spi_flash_read_id(struct spi_flash *flash)
{
...
tmp = spi_flash_cmd(flash->spi, CMD_READ_ID, id, SPI_FLASH_MAX_ID_LEN);
...
info = spi_flash_ids;
for (; info->name != NULL; info++

本文介绍了如何解决uboot移植到nor-flash过程中遇到的问题。首先确认硬件无误,然后在uboot命令行读取flash ID,发现报错。通过查阅数据手册,发现xt25f128b与winbond w25qxxx系列兼容。在代码中定位问题,更新spi_flash_ids数组,添加新flash特性,并修改设备树中的flash型号。最终,成功移植并验证了nor-flash。
最低0.47元/天 解锁文章
7397

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



