Spansion S25HS512T NOR Flash在i.MX6UL平台U-Boot与Linux下无法工作求助
NXP iMX6UL + Spansion 25HS512TFANHI010 NOR Flash 适配排查方案
U-Boot侧sf probe返回的-524错误对应不支持的硬件特性/器件未匹配,Linux侧的SPI模式位3报错属于控制器与Flash的模式配置冲突,按以下步骤排查修复:
U-Boot 2021.10 适配修改
- 先验证设备树QSPI引脚配置:
pinctrl-0对应的引脚组必须将QSPI_CLK、QSPI_IO0~IO3、QSPI_CS引脚配置为专用SPI功能,关闭上下拉,引脚速率配置不低于100MHz,Flash节点添加以下属性:
先降频到80MHz调试,排除信号完整性问题。spi-max-frequency = <80000000>; spi-tx-bus-width = <4>; spi-rx-bus-width = <4>; - 修改
drivers/mtd/spi/spi_flash_ids.c,新增25HS512的器件匹配条目,注意JEDEC ID顺序:{ INFO("s25hs512t", 0x34201a, 0, 64 * 1024, 1024, SECT_4K | SPI_NOR_QUAD_READ | SPI_NOR_DUAL_READ) } - 提取Cypress 2018.01 U-Boot补丁的核心逻辑:在
drivers/mtd/spi/spi-nor-core.c的Spansion器件初始化分支,添加对0x20系列ID的支持,跳过自动切换QPI模式的逻辑,无需全量适配旧补丁。
Linux 内核适配修改
- 解决SPI模式3报错:i.MX6UL QSPI控制器原生支持模式0和模式3,若驱动报错不支持,先在设备树Flash节点删除
spi-mode相关配置,强制使用控制器默认的模式0验证识别逻辑,确认能识别后再根据Flash datasheet调整模式参数。 - 修改
drivers/mtd/spi-nor/spansion.c,新增和U-Boot侧一致的25HS512器件匹配条目,开启QUAD_READ支持。 - 确认内核配置除
CONFIG_SPI_FSL_QUADSPI外,已开启CONFIG_SPI_FLASH_SPANSION、CONFIG_MTD_SPI_NOR、CONFIG_SPI_MEM依赖项。
硬件层面基础验证
- 测量Flash 3.3V供电纹波,波动需控制在5%以内,供电不足会导致读ID失败。
- 用逻辑分析仪抓取
sf probe阶段的QSPI总线波形,确认控制器已发送0x9F读ID命令,若返回值全0/全F,优先排查硬件焊接、引脚mux配置错误问题。
内容的提问来源于stack exchange,提问作者Harkirat
相关产品推荐
相关产品推荐

