首先确认硬件是否正常,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