1. 项目概述
最近在调试ZYNQ平台的VDMA+TFT显示实验时,我遇到了一个典型的"连环坑"问题:Debug卡在99%、System Debugger异常、屏幕黑屏、platform混乱等一系列症状。经过一周的反复排查,最终发现问题的核心在于Vivado导出的platform与SDK中的BSP和Application工程没有保持严格的对应关系。本文将详细记录整个排查过程、问题根源分析以及最终的解决方案。
这个实验基于小梅哥的ZYNQ裸机开发课程,目标是实现通过VDMA将DDR中的图像数据输出到RGB TFT屏幕。硬件链路设计如下:
- PS端DDR存储图像数据
- VDMA从DDR读取图像
- AXI4-Stream转Video Out输出视频流
- VTC提供时序信号
- RGB888转RGB565
- 最终驱动RGB TFT屏显示
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 问题现象与初步排查
2.1 主要故障现象
实验过程中出现了几个典型的异常现象:
-
Debug卡99%问题:
- 点击SDK中的Debug按钮后,控制台显示"Launching GDB Debug...(99%)"后停滞
- 伴随AP transaction error(DAP status f0000021)、Memory read/write error等报错
- 现象不稳定,有时能进入调试,有时完全卡死
-
屏幕黑屏问题:
- TFT屏幕完全无显示,无背光变化
- 排除了排线插反、背光未开启等硬件连接问题
- 测量RGB信号线发现无有效数据输出
-
Platform混乱问题:
- 修改DDR参数后,SDK中出现多个platform实例(system_wrapper_hw_platform_0/1/2)
- BSP regenerate时出现地址映射错误
- Application运行时出现内存访问异常
2.2 初期排查方向
基于这些现象,我首先怀疑了以下几个方向:
- 硬件设计问题:
- 检查了VDMA配置、Video Timing Controller参数
- 确认了RGB888转RGB565模块的数据位宽转换
- 验证了AXI Stream到Video O
