解决ZYNQ烧录QSPI FLASH问题 [Xicom 50-186] Error while detecting SPI flash device - unrecognized JEDEC id

此文章通过逐步排除故障的办法,锁定了问题原因,现在看来真的是让人啼笑皆非。最终将GD的flash芯片更换为华邦的FLASH芯片便解决了。以下是具体排查解决过程。

FPGA核心:ZYNQ 7010 /ZYNQ 7020

开发板平台:自制7010开发板

开发软件:Vivado 2020.2    和 vitis 2020.2

问题现象:使用JTAG编程器,通过Vitis IDE向开发板QSPI FLASH烧录固件,烧录无法完成,提示错误: Zynq> ERROR: [Xicom 50-186] Error while detecting SPI flash device - unrecognized JEDEC id bytes: c8, 40, 18

具体错误代码:

U-Boot 2020.01-00107-g4a29a62 (Oct 13 2020 - 16:46:21 -0600)

Model: Zynq CSE QSPI SINGLE Board

DRAM:  256 KiB

WARNING: Caches not enabled

In:    dcc

Out:   dcc

Err:   dcc

Zynq> sf probe 0 0 0


Warning: SPI speed fallback to 100 kHz

unrecognized JEDEC id bytes: c8, 40, 18

Failed to initialize SPI flash at 0:0 (error -2)

Zynq> ERROR: [Xicom 50-186] Error while detecting SPI flash device - unrecognized JEDEC id bytes: c8, 40, 18

Problem in running uboot
Flash programming initialization failed.

ERROR: Flash Operation Failed

如下图:

解决问题思路:因为是自制开发板,所以区分核心板的不同功能先进行逐步检查,排除硬件故障。第一步:排除加载固件时选项错误的问题。下图这样设置是正确的。Flash Type 选择 qspi-x4-single

第二步:判断设计和焊接问题。检查原理图部分的boot启动选项,通过万用表检查开发板的MIO上下拉电阻情况。结论:有关boot启动选项的各个引脚,对地、对vcc电阻正常,非设计问题。

第三步:判断排除核心焊接问题。从JTAG启动后,通过简单的hello world程序检查核心是否正常工作。经查:JTAG可启动,可识别到主控,加载bit流文件后核心的DONE LED灯点亮。结论:非核心焊接问题,非DDR问题。

第四步:判断晶振是否工作。把33.333M有源晶振去掉,重复第一步,DONE LED灯未点亮。结论:原开发板晶振工作正常。

综上检查后,确定自制开发板硬件功能正常,排除了硬件问题。下一步,通过搜索同样问题看看有无解决办法。

通过搜索得知,出现以上错误提示的共有两类:

第一类:识别FLASH芯片的JEDEC未 00,00,00    

Zynq> ERROR: [Xicom 50-186] Error while detecting SPI flash device - unrecognized JEDEC id bytes: 00, 00, 00

这类问题是由于在生成固件(Create Boot Image)的时候,选择的bootloader文件与现有的开发板硬件配置不匹配,导致不能正确识别flash芯片。需要重新检查vovado中的block设置,并将xsa文件重新加载到vitis中并build,之后在Create Boot Image。

第二类:识别到FLASH芯片但仍未能加载固件

Zynq> ERROR: [Xicom 50-186] Error while detecting SPI flash device - unrecognized JEDEC id bytes: c8, 40, 18

Problem in running uboot
Flash programming initialization failed.

ERROR: Flash Operation Failed

这类问题,网上找到的解决办法是在vivoda的block设计中,将QSPI FLASH的Feedback Clock选中。(下图中未选中)

但此办法仅针对于Vivoda 2020.1之前的版本,在Vivoda 2020.2之后的版本中修复了此问题。

最终在参考了下篇文章中得到了启示

uboot 增加不同型号的 nor-flash 调试笔记

以上文章提出,识别到的FLASH芯片,不一定在uboot支持的列表中,如果不支持,需要更新uboot列表,此办法比较繁琐。那我便尝试换一颗uboot支持的芯片试试,正好手头有华邦的W25Q128芯片。果断换上,正确识别,烧录成功。。。。。。。。。。。。。

SF: Detected w25q128 with page size 256 Bytes, erase size 64 KiB, total 16 MiB

device 0 offset 0x840000, size 0x8608

SF: 34312 bytes @ 0x840000 Written: OK

Zynq> Program Operation successful.
INFO: [Xicom 50-44] Elapsed time = 42 sec.

Flash Operation Successful

至此,问题解决。

问题原因分析:使用的GD25Q128芯片,非vitis 的 uboot可以识别的flash芯片,故而导致无法正常加载固件,只需要换成可以识别的华邦的flash芯片即可。

参考:

小麦大叔   uboot 增加不同型号的 nor-flash 调试笔记_norflash jedec id大全-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值