第一FPGA 2024-06-14 10:53 采纳率: 0%
浏览 17

jtag 被动启动 zynq程序

通过JTAG 被动启动 ZYNQ 7020,程序加载的数据链路是什么?
我通过阅读《ARM Debug Interface v5》和《UG585》大概知道通过jtag-dp访问mem-ap,但是这个mem-ap是AHB-AP还是APB-AP不太清楚。然后是将程序(app.bin)写入cortex-A9 哪里(OCM还是DDR)。

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-14 10:53
    关注

    引自免费微信小程序:皆我百晓生

    在使用JTAG被动启动Zynq 7020设备上的Cortex-A9处理器时,数据链路主要涉及JTAG接口、Debug Port (DP)、Memory Access Port (MEM-AP)以及目标系统的内存区域(例如OCM或DDR)。以下是详细的步骤和解释:

    1. JTAG与DP

    • JTAG接口:这是一个标准的硬件接口,用于测试和调试电路板上的集成电路。在本例中,它用于连接到Zynq 7020的调试端口。

    • Debug Port (DP):这是ARM处理器的一个组成部分,用于控制调试过程。通过JTAG接口,调试工具可以访问DP,进而访问MEM-AP。

    2. MEM-AP的选择:AHB-AP vs APB-AP

    • AHB-APAPB-AP 都是MEM-AP的类型,分别用于访问Advanced High-performance Bus (AHB) 和 Advanced Peripheral Bus (APB) 总线上的资源。

    • 在Zynq 7020中,通常使用AHB-AP来访问系统内存,因为它提供了更高的带宽和速度,而APB-AP则更多地用于访问低速外设。

    3. 程序加载位置:OCM vs DDR

    • On-Chip Memory (OCM) 是Zynq内部的高速缓存,包括OCM-RAM和OCM-C,适合存放小量的代码和数据,访问速度较快。

    • DDR 是外部的动态随机存取存储器,容量大,但访问速度比OCM慢。

    对于较大的应用程序,通常推荐将程序加载到DDR中,因为其容量足以容纳大型程序和数据集。然而,一些关键的初始化代码或频繁访问的小型代码段可能会被加载到OCM中以提高性能。

    4. 程序加载流程

    1. 建立JTAG连接:使用JTAG调试工具(如OpenOCD)与Zynq 7020建立连接。

      openocd -f interface/jtag.cfg -f target/zynq7000.cfg
      
    2. 选择AHB-AP:通过DP访问并选择正确的AHB-AP。

    3. 配置内存映射:确保内存映射正确,使得从JTAG加载的数据能够被正确解析并写入DDR或OCM。

    4. 加载程序:使用调试工具将app.bin文件加载到目标内存区域(通常是DDR)。

      load_image app.bin 0x80000000
      
    5. 启动处理器:设置程序计数器(PC)到程序入口点,并开始执行。

    5. 总结

    • 使用JTAG被动启动Zynq 7020上的Cortex-A9,主要涉及通过DP访问AHB-AP,然后将程序加载到DDR或OCM中。
    • 选择适当的MEM-AP类型(AHB-AP或APB-AP)取决于要访问的内存区域或外设。
    • 加载程序的具体操作依赖于使用的调试工具及其命令行接口。

    希望这能解决你的疑问!如果有任何更具体的问题或需要进一步的帮助,请随时提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月14日