文章目录
- 一、Openocd 配置流程
- 二、 FTDI FT2232H 连接测试
- 2.1 UsbDriverTool 安装
- 2.2 连接 ft2232h
- 三、连接 Coretx-A53
- 3.1 MPSOC Debug 架构
- 3.2 MPSOC 配置文件编写
- 四、所遇到的问题记录
- 4.1 JTAG-DP STICKY ERROR
openocd全名为Open On-ChipDebugger
,是一个自由开放的片上调试工具和编程工具,目前已经发布到0.11.0版本,目前主流调试器几乎都支持,具体可以查看Open On-Chip Debugger:OpenOCD User’s Guide。
一、Openocd 配置流程
version
:0.11.0链接
- Windows下安装 OpenOCD
下载地址:https://github.com/xpack-dev-tools/openocd-xpack/releases
这是第三方编译好的软件,解压后配置环境变量即可。
- 准备配置文件
-
FT2232H Debuger Adapter
配置文件,一般放在..\scripts\interface\ftdi\
目录 - 目标板配置文件,一般放在
..\scripts\target\
目录。
实际调试时需要参考已有的
Debuger Adapter
和目标板配置文件编写适配公司板卡和调试器的配置文件。
- 编写脚本使用Openocd连接到目标芯片进行测试
调试完毕之后,可编写 makefile文件,将download
设置为伪目标,编写好后,即可输入make download
一键下载程序。
二、 FTDI FT2232H 连接测试
硬件:
- 调试器:芯来 HUMMINGBIRD Debugger Kit V2
2.1 UsbDriverTool 安装
openocd 是通过调用 libusb
驱动连接并控制 FT2232H 的,所以要为硬件设备安装适配的驱动。这里通过 UsbDriverTool
工具进行,官网安装网址:https://visualgdb.com/UsbDriverTool/
再解压即可,我直接解压到了桌面。
双击 UsbDriverTool.exe
,
这里有两个 USB Serial Converter A/B,是调试器连接PC后自动识别到的,更改这 USB Serial Converter A 设备的驱动为 libusb
:
安装成功后,设备名称后面会出现对应的驱动名称
2.2 连接 ft2232h
进入 \xpack-openocd-0.11.0-3\bin
路径下,新建 ft2232h.cfg
,输入下述代码:
adapter driver ftdi
# VID and PID
ftdi vid_pid 0x0403 0x6010
transport select jtag
# TCK frequency
adapter speed 1000
# ftdi_layout_init [data] [direction]
# 指定FTDI GPIO的初始数据和方向,16bit数据宽度。
# 参数data中1表示高电平,0表示低电平,而参数direction中1表示输出,0表示输入(注意与常规的设定不同)
ftdi layout_init 0x0018 0x05fb
# This means: ADBUS(bit7~bit0)
# Low output data = 0x18 // 0001 1000
# Low direction = 0xfb // 1111 1011
# High output data = 0x00 // 0000 1000
# High direction = 0x05 // 0000 0101
然后在该文件夹下打开 cmd ,输入openocd -f ft2232h.cfg
:
可以看到已经成功连接到了调试器,但由于我没有连接目标板也没定义 target,所以出现了一些警告。
三、连接 Coretx-A53
硬件:Zynq UltraSCALE MPSOC(PS端有四核Coretx-A53,称为APU,即应用处理CPU)
3.1 MPSOC Debug 架构
查看Zynq MPSOC 的官方手册,发现:
在Zynq MPSOC的JTAG扫描链上有 PS端的TAP和Arm 处理器核调试接口 DAP以及PL端的TAP。可以通过配置寄存器来分别使能三者。这里我一开始是用PS JTAG接口去连接Openocd的,然后在JTAG模式下只检测到 PL TAP和PS TAP,检测不到 Arm DAP,怀疑是Arm DAP未添加到扫描链上,或者被阻塞了。
那么就换种思路,直接用Openocd 去连接 PJTAG 接口就好了,这样扫描链上就只有Arm DAP,比较单一简单,这个 PJTAG 一开始也是设计出来兼容第三方调试工具如JLink,去直接调试ARM处理器核用的。而 PS JTAG接口则主要是为设计适配 Xilinx 官方调试器用的。
这里先用 Xilinx 官方调试器测试了下:
可以直接检测到 Arm DAP,
记下 IDCODE 和 IR 长度来编写 Openocd 的对应的目标板卡配置文件。
3.2 MPSOC 配置文件编写
具体的配置文件可看我这篇博客:zynq ultrascale mpsoc 自定义配置文件解析,逐行对配置文件进行了解析。
OpenOCD连接成功的log:
成功连接到目标芯片后,需要使用 telnet 协议连接到 openOCD 终端,端口4444,这里我使用的是mobaxterm:
此时终端所在的路径是openOCD开启服务的路径,可以使用pwd命令查看:
四、所遇到的问题记录
4.1 JTAG-DP STICKY ERROR
debug 信息:
问题描述:检测到 MEM-AP APB,但访问不了 core。