一. DDR设置问题。
1.1 使能了DDR但没正确设置型号
烧写报错如下:
Error while launching program: Memory write error at 0x100000 Memory write aborted. Fault status 0x8, Domain 0x0
经排查:
发现是在创建ZYNQ7 PS时,在DDR配置界面使能了DDR,但没有正确设置DDR型号。如下图所示。
当时没设置型号是因为没有用到DDR,以为没用就可以随便哪个型号.但后来在烧写程序时报错。
推测原因是,烧写程序时会连同DDR的配置信息一起烧写进去,DDR配置不对时,这一步就会报错。
收获:即使DDR没使用,只要Enable了DDR就必须正确的设置型号以及一些其它参数。
1.2 ZYNQ外围有DDR, 但在IP核中没有使能DDR
Error while launching program: Memory write error at 0x100000. Cannot access DDR: the controller is held in reset
经排查:
收获: 只要硬件电路板上使用了DDR,PS的IP核中必须使能DDR并正确配置。
二. 烧写设置出错
此问题总结于本人在Xilinx官方中文论坛的发帖:Error while launching program: Cannot halt processor core, timeout
烧写报错如下:
Error while launching program: Cannot halt processor core, timeout
在用Vitis烧写程序的时候不定时会出现这个Error,有时能正常烧进去,有时报这个错误,基本2~3次烧写出现一次,不理解为什么?不论是直接单击快捷图标run,还是进入Run Configuration再点击run,这个error都会不定时出现。
经排查:
发现之前每次烧写都是勾选了Reset entire system,这个选项要进行的操作是:Reset entire system,Clear the FPGA fabric(PL),但我的ZYNQ工程中没有使用PL,所以这Clear the FPGA fabric(PL)(翻译成擦除FPGA布局?)应该是无用的。
我尝试不勾选reset entire system,发现要执行的操作还是5个,如下图。原本的Reset entire system,Clear the FPGA fabric(PL)变成了
The following processors will be reset and suspended.
1)ps7 cortexa9_0
PS 9.0核将被复位和暂停,对比之前的reset,只是没有了Clear PL。然后我进行了多次run。发现这个报错不再出现。
我再勾选上reset,run的报错又开始出现了,可见这个烧写报错和选项reset entire system有关。
然后我又找了一个使用了PL的工程,勾选上Reset entire system(虽然不勾选烧写好像也没什么问题,所以我其实不清楚此选项的好处是什么),Summary中显示的操作多了一条,2. Programing FPGA fabric using…,然后多次run,发现仍然不报错误。
得出结论
1.未使用PL时,选中了Reset entire system,run可能报错
2.未使用PL时,不选Reset entire system,run不报错
3.使用了PL时,即使选中了Reset entire system,run也不报错
所以,一个可行的办法是:在未使用PL时,不勾选Reset entire system,这样即使在Flash mode下,烧写也不会报错。而使用了PL,勾选Reset entire system也能成功烧写。
to be continue…