取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
Highlighted
Observer
Observer
474 次查看
注册日期: ‎04-30-2020

XCZU5EV烧写固件到QSPI后无法启动

跳至解决方案

你好,

我使用的芯片是XCZU5EV,裸跑无操作系统,QSPI可工作在24bit和32bit地址模式。应用程序烧写到QSPI后无法上电启动;但是在SDK中运行fsbl可以正常读取烧写到QSPI的固件,而且程序能正常运行。说明固件,FSBL和QSPI都是正常的,但是为什么无法上电启动呢?

0 项奖励
1 解答

已接受的解答
Observer
Observer
245 次查看
注册日期: ‎04-30-2020

问题解决了,有两个原因:

1 使用的FLASH是cypress S25FL256SA,默认位宽是1bit或者2bit,使用4bit需要通过写相应寄存器使能。将vivado PS中的QSPI配置为1bit,烧写固件时选择qspi-x1-single。
2 改变xfsbl_config.h中的宏定义,使能输出所有打印信息。如果不改而是使用默认值,烧写后无法正常启动。原因未知。

在原帖中查看解决方案

0 项奖励
8 回复数
Highlighted
Observer
Observer
471 次查看
注册日期: ‎04-30-2020

会不会是BOOTROM存在问题?

0 项奖励
Highlighted
Moderator
Moderator
458 次查看
注册日期: ‎07-01-2019

启动失败后使用XSCT读一下BootROM的error code

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Highlighted
Observer
Observer
442 次查看
注册日期: ‎04-30-2020

使用XSCT能读取IDCODE和version,但是reboot status读取出来是0x00000000。理论上reboot status至少是POR位置1。使用XIl_In32读取reboot status,结果也是0x00000000。

XSCT_result.png
0 项奖励
Highlighted
Moderator
Moderator
346 次查看
注册日期: ‎07-01-2019

你好 @yellowd ,

 

之前的一条回复是针对zynq-7000器件的。

zynqmp的bootrom error code需要读取0xFFD80528寄存器:

https://www.xilinx.com/html_docs/registers/ug1087/ug1087-zynq-ultrascale-registers.html

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Highlighted
Observer
Observer
342 次查看
注册日期: ‎04-30-2020

@shengjie 

明白,我后来读取0xFFD80528结果也是0x00000000。试过了QSPI 1bit,2bit和4bit都是能烧写但无法启动,都能通过运行FSBL来读取flash里的数据并加载到DDR运行。

0 项奖励
Observer
Observer
246 次查看
注册日期: ‎04-30-2020

问题解决了,有两个原因:

1 使用的FLASH是cypress S25FL256SA,默认位宽是1bit或者2bit,使用4bit需要通过写相应寄存器使能。将vivado PS中的QSPI配置为1bit,烧写固件时选择qspi-x1-single。
2 改变xfsbl_config.h中的宏定义,使能输出所有打印信息。如果不改而是使用默认值,烧写后无法正常启动。原因未知。

在原帖中查看解决方案

0 项奖励
Highlighted
Moderator
Moderator
197 次查看
注册日期: ‎07-01-2019

你好 @yellowd ,

 

这个flash器件是可以默认支持4bit位宽的,fsbl可以辅助完成配置。

宏定义指的是FSBL_DEBUG吗?开不开启按理对启动是没有影响的,你可以将输出的log信息发一下吗?

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Highlighted
Observer
Observer
186 次查看
注册日期: ‎04-30-2020

@shengjie 

改成4bit也是可以的,烧写后可以正常启动。但前提还是必须将FSBL_DEBUG_DETAILED_VAL=1,FSBL_PRINT_VAL=0才行,如果FSBL_DEBUG_DETAILED_VAL=0,FSBL_PRINT_VAL=1烧写后则无法正常启动。第一张和第三张图是FSBL_DEBUG_DETAILED_VAL=0时相关的log,其余为FSBL_DEBUG_DETAILED_VAL=1时相关的log。

标记 (2)
FSBL_DEBUG_DETAILED_VAL为0-烧写.png
FSBL_DEBUG_DETAILED_VAL为1-烧写.png
FSBL_DEBUG_DETAILED_VAL为0-烧写console.png
FSBL_DEBUG_DETAILED_VAL为1-启动.png
FSBL_DEBUG_DETAILED_VAL为1-烧写console.png
0 项奖励