UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Highlighted
Visitor charis
Visitor
612 次查看
注册日期: ‎02-04-2020

zynq xip固化问题

转到解答

zynq无DDR, 带了QSPI FLASH,vivado版本2018.3.

移植了XILINX提供的工程:

Zynq-7000 AP SoC Boot - Booting and Running Without External Memory

 

BOOT加载之后,串口收到的打印信息,如图所示,一直都在重复输出以下信息:

XILINX First Stage Boot Loader

Realease 2017.3  Feb 12 

_dataLMA =0xFC00CFF8

_dataLMA _start=0x0

_dataLMA _end=0xF40

_dataXVtableLMA=0xFC014000

_dataXVtableLMA_Start=

 

请问,这是啥原因?

webwxgetmsgimg.jpg
0 项奖励
1 个已接受解答

已接受的解答
Xilinx Employee
Xilinx Employee
86 次查看
注册日期: ‎06-19-2019

回复: zynq xip固化问题

转到解答

我感觉有一个地方存在了误解。XIP只是一个程序运行方式,对于QSPI控制器来说还是该怎么驱动还是怎么驱动。所以XIP方式并不会对FLASH正确的读写产生影响,关键是避开你FLASH中程序所使用的部分。

另外,Xilinx官方只支持FSBL部分进行XIP方式运行,wiki上的demo也只是FSBL采用了XIP方式,而用户程序是加载到了L2 cache中去运行的。

所以理论上如果你应用程序的代码也想运行在FLASH中也是可以的,但是需要你自己去做尝试,特别是linkscript部分要正确配置。

linkscript需要用text edit的方式打开才能开到全部内容。

如果你想改回到OCM中去运行的话,你可以把linkscript中相关的配置都改回OCM就可以了,但是注意用户程序大小,可能会超出导致无法生成ELF。

 

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------

在原帖中查看解决方案

0 项奖励
14 条回复14
Xilinx Employee
Xilinx Employee
555 次查看
注册日期: ‎06-19-2019

回复: zynq xip固化问题

转到解答

从你的log信息来看,是启动失败后,不停的再反复重启。

你可以尝试在FSBL中添加FSBL_DEBUG_INFO来输出更多的打印信息,或者自己在FSBL代码中插入打印信息来查看具体是执行到哪一步出错后,引起的不断重启。

另外,可以确认一下,你FLASH是否支持XIP模式,qspi读取方式是否采用的是Legacy Mode, 具体可以参考ug1085的chapter 24

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

回复: zynq xip固化问题

转到解答
我添加了FSBL_DEBUG_INFO的宏定义,图片中就是打印信息,重复在输出。 我用的是micro, N25Q128A Flash,是支持LINE的XIP模式的。 如你所说,它应该在重复启动,但我的源文件都是COPY XILINX官网提供的,按道理不会导致出错。 从现象来看,似乎是FLASH里的FSBL代码,只执行了一部分,就一直在重启了。 有建议的入手方向吗?
0 项奖励
Xilinx Employee
Xilinx Employee
539 次查看
注册日期: ‎06-19-2019

回复: zynq xip固化问题

转到解答

入手的话,就是在FSBL中去添加打印信息,逐步查看是哪一步出错了。

着重看看qspi的驱动是否正常,linkscript是否配置正确。如果你application是要运行在 L2-cache中的话,还要检查translation_table是否配置正确。

另外,每次修改后,都需要重新生成BOOT.bin文件,并重新烧写进FLASH中,然后板子采用QSPI模式启动。如果用SDK去运行的话,会启动失败。

 

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

回复: zynq xip固化问题

转到解答

串口的打印调试信息显示, fsbl没有输出完 _dataXVtableLMA_Start=。。。。

这条语句,就发生了重启。

也就是说,重启发生再串口输出的语句上。但很明显串口语句不会造成fsbl的重启。

请帮分析。

0 项奖励
Visitor charis
Visitor
427 次查看
注册日期: ‎02-04-2020

回复: zynq xip固化问题

转到解答

问题找到了,我将  SlcrUnlock();

这条语句注释掉就不会重启了。

关于SlcrUnlock相关资料哪里能找到?

0 项奖励
Xilinx Employee
Xilinx Employee
414 次查看
注册日期: ‎06-19-2019

回复: zynq xip固化问题

转到解答

SlcrUnlock是对slrc进行设置,具体信息的话,你可以参考UG585中System Level Control Registers (slcr)的内容

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

回复: zynq xip固化问题

转到解答

XIP加载正常了。

我还用FLASH存储了用户使用数据,现在的有了新的问题。

我在用户程序中对FLASH进行操作,就会死机。我只执行了一句FlashReadID,读取FLASH ID的语句。

 

XIP模式下,我在用户程序中还能读写FLASH剩余的部分(非BOOT存储部分)吗?

如果可以,有哪些需要注意的地方或者可以提供参考资料

0 项奖励
Xilinx Employee
Xilinx Employee
398 次查看
注册日期: ‎06-19-2019

回复: zynq xip固化问题

转到解答

用户程序上需要注意读取FLASH的驱动模式,以及linkscript中各个section的映射关系,以及数据处理的大小是否超出了分配或者使用的空间。因为无DDR的情况下,空间资源会很小。

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

回复: zynq xip固化问题

转到解答

我的FLASH有128M, 空间问题不存在。

读取驱动模式,你指的是?

我现在啥都没操作,只执行读取ID的指令,也死机。

0 项奖励
Xilinx Employee
Xilinx Employee
335 次查看
注册日期: ‎06-19-2019

回复: zynq xip固化问题

转到解答

XIP模式下,一般是将固定不会变化的部分(比如代码)存储在FLASH中,然后直接执行省去了拷贝环节。

但是动态变量,堆栈还是会使用的是OCM或者cache资源。

FLASH ID读不出来,你需要确认下你代码中,读取方式是否采用的是legancy或linear addressing方式。

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

回复: zynq xip固化问题

转到解答

意思是读FLASH ID,需要LINE ADDRESS方式?

另外,XIP模式下是否支持FLASH的写命令。

 

我的理解是XIP模式写只支持 LINE ADDRESS的读,其他的erase, write 指令是不支持的。

因位XIP模式下是不使用命令的。

那么我如果要写FLASH,就需要在应用程序中将FLASH先退出XIP模式,再写FLASH,写操作完成后。

然后再将FLASH设置为XIP模式?

0 项奖励
Visitor charis
Visitor
248 次查看
注册日期: ‎02-04-2020

回复: zynq xip固化问题

转到解答
如果我将这个已经实现QSPI XIP的工程改成: 将应用程序与FSBL程序都加载到内部的OCM中,FLSH不再存储。 针对这个工程,应该作哪些修改? 应用程序的linker script应该如何改?
0 项奖励
Xilinx Employee
Xilinx Employee
87 次查看
注册日期: ‎06-19-2019

回复: zynq xip固化问题

转到解答

我感觉有一个地方存在了误解。XIP只是一个程序运行方式,对于QSPI控制器来说还是该怎么驱动还是怎么驱动。所以XIP方式并不会对FLASH正确的读写产生影响,关键是避开你FLASH中程序所使用的部分。

另外,Xilinx官方只支持FSBL部分进行XIP方式运行,wiki上的demo也只是FSBL采用了XIP方式,而用户程序是加载到了L2 cache中去运行的。

所以理论上如果你应用程序的代码也想运行在FLASH中也是可以的,但是需要你自己去做尝试,特别是linkscript部分要正确配置。

linkscript需要用text edit的方式打开才能开到全部内容。

如果你想改回到OCM中去运行的话,你可以把linkscript中相关的配置都改回OCM就可以了,但是注意用户程序大小,可能会超出导致无法生成ELF。

 

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------

在原帖中查看解决方案

0 项奖励
Visitor charis
Visitor
68 次查看
注册日期: ‎02-04-2020

回复: zynq xip固化问题

转到解答

好的,感谢解答,已解决。

0 项奖励