Xilinx vitis 报错Cannot reset APU. APB AP transaction error, DAP status 0xF0000021 解决方法

文章描述了在Zynq7z100开发板上测试Helloworld程序时遇到的APU复位错误,该错误与Boot_loader的加载源有关。通过检查硬件配置发现MIO[5:3]设置为SD卡启动,导致问题。解决方案是将MIO[5:3]管脚设置为0,使用JTAG加载boot,从而成功解决打印异常的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 ,问题描述

在zynq 7z100新开发板上测试hello world串口打印

硬件环境为:

    开发板JTAG口和串口分别连接开发电脑usb口,vivado 版本 vivado 2022.2。

软件vitis操作基本流程:

  1. 新建vivado工程,创建block_design , vivado生成bitfile。
  2. vivado导出.xsa硬件平台文件,用.xsa在vitis 中创建platform project。
  3. 创建application project,选择hello world example。
  4. bulid 应用工程,运行应用:launch Hardware。

 

等进度条完成后报错:Cannot reset APU. APB AP transaction error, DAP status 0xF0000021,  除了这个打印提示这个还会报一个什么map地址出错。

   

二,解决方法:

   查找资料发现zynq有两个boot_sel 选择管脚,通过这两个管脚复位时候的状态决定BootLoader从哪里加载。

见官方文档介绍:

    检查开发板上MIO[5:3]设置的是3‘b110, 即为SD 卡启动,所以才会报错。

    把开发板PCB 上的MIO[5:3]管脚都设置为0,即设置为JTAG加载boot。

    测试后打印正常,问题解决

### 关于 Vitis 编译时链接器返回 1 的解决方案 当遇到 `collect2: error: ld returned 1 exit status` 这类错误时,通常意味着链接阶段出现了问题。具体原因可能涉及多个方面。 #### 链接脚本配置不当 如果应用程序所需的 BRAM 资源超出了硬件平台所能提供的范围,则可能会导致此类错误。可以尝试调整应用工程中的 BRAM 大小设置来解决问题[^5]。通过多次点击右键并选择 Generate Linker Script 来更新链接脚本,从而确保新的资源分配策略被正确加载。 #### 源文件未加入构建过程 另一个常见原因是某些必要的源代码文件未能成功纳入编译流程之中。例如,在 Android.mk 中遗漏了 GameController.cpp 文件的添加操作就会引发类似的链接失败情况[^1]。因此建议仔细检查项目配置文件(如 Makefile 或 CMakeLists.txt),确认所有相关联的 .cpp 和其他实现单元均已列入其中。 #### 库依赖缺失或版本不匹配 对于 Xilinx Vitis 平台而言,还可能存在由于第三方库支持不足所引起的连接难题。比如在创建 SREC SPI Bootloader 工程过程中忘记引入 xilisf 库便会造成 build 不过的情况;另外也要注意不同组件间的兼容性问题,防止因 API 变更等因素造成冲突[^4]。 针对上述几种可能性,可采取如下措施逐一排查: - **验证资源配置**:按照官方文档指导完成对目标板卡上可用存储器容量参数设定; - **完善模块列表**:核对参与编译的所有子系统及其关联件是否齐全无误; - **补充外部接口定义**:依据实际需求导入相应功能包,并保持各部分间协作顺畅。 最后提醒一点,务必保证开发环境处于最新稳定版次之上,以便获得更好的技术支持和服务保障。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值