ZYNQ7000程序编译成功但烧写报错(使用Vitis2020.2)

一. DDR设置问题。

1.1 使能了DDR但没正确设置型号

烧写报错如下:

Error while launching program: Memory write error at 0x100000 Memory write aborted. Fault status 0x8, Domain 0x0

image-20210301223148691

经排查:

发现是在创建ZYNQ7 PS时,在DDR配置界面使能了DDR,但没有正确设置DDR型号。如下图所示。

当时没设置型号是因为没有用到DDR,以为没用就可以随便哪个型号.但后来在烧写程序时报错。

推测原因是,烧写程序时会连同DDR的配置信息一起烧写进去,DDR配置不对时,这一步就会报错。

image-20210301223541307

收获即使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

image-20210302090112680

经排查:

image-20210302090503141

收获: 只要硬件电路板上使用了DDR,PS的IP核中必须使能DDR并正确配置

二. 烧写设置出错

此问题总结于本人在Xilinx官方中文论坛的发帖:Error while launching program: Cannot halt processor core, timeout

烧写报错如下:

Error while launching program: Cannot halt processor core, timeout

errorpng#pic_center

在用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 systempng#pic_center

我尝试不勾选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有关。

不勾选Reset entire systempng#pic_center

然后我又找了一个使用了PL的工程,勾选上Reset entire system(虽然不勾选烧写好像也没什么问题,所以我其实不清楚此选项的好处是什么),Summary中显示的操作多了一条,2. Programing FPGA fabric using…,然后多次run,发现仍然不报错误

PLpng#pic_center

得出结论

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…

<think>好的,我现在需要帮助用户解决如何在Vitis 2020.2中配置项目以创建Linux应用程序的问题。首先,我需要回顾用户提供的引用内容,看看有没有相关的信息可以直接应用。根据引用[1],用户提到了如何将Vitis AI Library应用加入Vitis进行编译,生成可执行文件。这可能涉及到Vitis中的项目设置和编译流程。另外,引用[2]和[3]讨论了使用Petalinux定制Linux系统,特别是针对ZC702和AXU2CGB开发板。这可能意味着用户在配置Vitis项目时需要关联到Petalinux生成的系统镜像或BSP包。 接下来,我需要考虑用户的具体需求:将Vitis 2020.2的应用程序从默认设置更改为适用于Linux系统的应用程序。默认情况下,Vitis可能针对裸机(Bare-metal)配置,而用户需要切换到Linux环境。因此,用户可能需要配置操作系统设置、指定BSP、调整编译选项,并处理硬件描述文件。 首先,检查创建项目时的操作系统选择。在Vitis中创建新应用项目时,用户需要选择Linux作为操作系统,而不是Bare-metal。这可能涉及到在Platform页面中选择支持Linux的平台,或者导入自定义的BSP,如引用[2]和[3]中提到的Petalinux生成的镜像。 其次,硬件描述文件(XSA)可能需要包含处理器的配置,支持Linux运行。用户需要确保在Vivado中导出的XSA文件包含足够的资源,如处理器类型、内存分配和外设配置,这些都是运行Linux所必需的。例如,ZC702开发板可能需要特定的硬件设置,如引用[2]中提到的定制板级描述文件。 然后,配置应用项目的编译设置。包括指定交叉编译工具链,如aarch64-linux-gnu-g++,这可能需要用户事先安装好Petalinux工具链,并正确设置环境变量。引用[3]中提到Ubuntu 16.04.6下使用Petalinux 2020.1,可能用户需要根据对应的版本安装工具链,并在Vitis中配置路径。 另外,用户可能需要处理文件系统和设备树。Linux应用程序可能需要访问特定的外设或文件系统结构,这涉及到在Petalinux中定制根文件系统,并将生成的文件系统镜像包含到Vitis项目中。引用[1]中提到Vitis AI Library的编译,可能还需要链接相应的库文件,并设置正确的包含路径。 最后,生成可执行文件后,用户需要将其部署到目标Linux系统,可能通过SD卡或网络启动。测试阶段可能需要确保应用程序能够正确访问硬件资源,并与Linux内核兼容。 总结步骤应该是:准备支持Linux的平台、创建应用项目时选择Linux作为OS、配置交叉编译工具链、处理硬件描述和BSP、编译并部署。同时,用户可能需要参考Petalinux的文档(如UG1144)来确保步骤正确,如引用[3]所述。 需要验证是否有遗漏的步骤,比如设备树的配置或启动脚本的设置。另外,确保用户已正确安装Vitis 2020.2和对应的Petalinux版本,并且环境变量设置正确。可能还需要指导用户如何导入自定义BSP或平台到Vitis中,或者使用Xilinx提供的现有Linux平台。</think>在Vitis 2020.2中配置Linux应用程序需遵循以下步骤: ### 1. **准备Linux系统支持环境** - 使用Petalinux生成Linux系统镜像(含根文件系统、内核和设备树),参考引用[2][^2]和[3][^3]的板级定制流程。 - 确保硬件描述文件(XSA)包含Zynq/ZynqMP处理器配置,支持Linux运行环境(如内存分配、外设驱动)。 ### 2. **创建Vitis平台项目** - 在Vitis中新建**Platform Project**,选择导出的XSA文件。 - 设置操作系统为`linux`,指定Petalinux生成的`sysroot`路径和BSP包: ```bash # 示例路径(根据实际Petalinux工程调整) sysroot = /path/to/petalinux-project/images/linux/sdk/sysroots/aarch64-xilinx-linux ``` ### 3. **配置应用项目** - 创建**Application Project**,选择刚建立的Linux平台。 - 设置交叉编译器(如`aarch64-linux-gnu-g++`),路径通常在Petalinux工具链中: ```bash # 示例工具链路径 /opt/pkg/petalinux/2020.1/tools/linux-i386/gcc-arm-aarch64/bin ``` ### 4. **调整编译选项** - 在项目属性中配置: - **C/C++ Build > Settings > GCC Cross Compiler**:包含头文件路径(如Linux内核头文件)。 - **C/C++ Build > Settings > Cross ARM Linux Linker**:链接库路径(如`-L${sysroot}/usr/lib`)。 ### 5. **集成硬件外设驱动** - 若使用自定义IP核,需在Petalinux中添加驱动支持。 - 在应用程序中通过`/dev`节点或Linux API(如`mmap`)访问硬件。 ### 6. **生成可执行文件** - 编译后,ELF文件位于`Debug`或`Release`目录。 - 通过SCP或SD卡将可执行文件传输到目标Linux系统,添加执行权限: ```bash chmod +x app.elf ``` ### 示例:添加Vitis AI Library支持 参考引用[1][^1],在编译时链接AI库: ```makefile LIBS += -lvart-runner -lopencv_core INCLUDES += -I${sysroot}/usr/include/vitis/ai ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值