通过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条回答 默认 最新
关注
引自免费微信小程序:皆我百晓生
在使用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-AP 和 APB-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. 程序加载流程
-
建立JTAG连接:使用JTAG调试工具(如OpenOCD)与Zynq 7020建立连接。
openocd -f interface/jtag.cfg -f target/zynq7000.cfg
-
选择AHB-AP:通过DP访问并选择正确的AHB-AP。
-
配置内存映射:确保内存映射正确,使得从JTAG加载的数据能够被正确解析并写入DDR或OCM。
-
加载程序:使用调试工具将app.bin文件加载到目标内存区域(通常是DDR)。
load_image app.bin 0x80000000
-
启动处理器:设置程序计数器(PC)到程序入口点,并开始执行。
5. 总结
- 使用JTAG被动启动Zynq 7020上的Cortex-A9,主要涉及通过DP访问AHB-AP,然后将程序加载到DDR或OCM中。
- 选择适当的MEM-AP类型(AHB-AP或APB-AP)取决于要访问的内存区域或外设。
- 加载程序的具体操作依赖于使用的调试工具及其命令行接口。
希望这能解决你的疑问!如果有任何更具体的问题或需要进一步的帮助,请随时提问。
解决 无用评论 打赏 举报 编辑记录-
- Kwan的解忧杂货铺@新空间 2024-06-14 02:54关注解决 无用评论 打赏 举报