文章目录

  • 一、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链接

查看openldap版本 怎么查看opencore版本_查看openldap版本

  1. Windows下安装 OpenOCD
    下载地址:https://github.com/xpack-dev-tools/openocd-xpack/releases

查看openldap版本 怎么查看opencore版本_查看openldap版本_02


这是第三方编译好的软件,解压后配置环境变量即可。

查看openldap版本 怎么查看opencore版本_FT2232H_03

  1. 准备配置文件
  • FT2232H Debuger Adapter配置文件,一般放在..\scripts\interface\ftdi\目录
  • 目标板配置文件,一般放在..\scripts\target\目录。

实际调试时需要参考已有的 Debuger Adapter 和目标板配置文件编写适配公司板卡和调试器的配置文件。

  1. 编写脚本使用Openocd连接到目标芯片进行测试
    调试完毕之后,可编写 makefile文件,将 download 设置为伪目标,编写好后,即可输入 make download 一键下载程序。

二、 FTDI FT2232H 连接测试

硬件:

  • 调试器:芯来 HUMMINGBIRD Debugger Kit V2

查看openldap版本 怎么查看opencore版本_openocd_04

2.1 UsbDriverTool 安装

openocd 是通过调用 libusb 驱动连接并控制 FT2232H 的,所以要为硬件设备安装适配的驱动。这里通过 UsbDriverTool 工具进行,官网安装网址:https://visualgdb.com/UsbDriverTool/

查看openldap版本 怎么查看opencore版本_fpga开发_05


再解压即可,我直接解压到了桌面。

查看openldap版本 怎么查看opencore版本_FT2232H_06


双击 UsbDriverTool.exe

查看openldap版本 怎么查看opencore版本_openocd_07


这里有两个 USB Serial Converter A/B,是调试器连接PC后自动识别到的,更改这 USB Serial Converter A 设备的驱动为 libusb:

查看openldap版本 怎么查看opencore版本_ARMv8_08


安装成功后,设备名称后面会出现对应的驱动名称

查看openldap版本 怎么查看opencore版本_查看openldap版本_09

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:

查看openldap版本 怎么查看opencore版本_FT2232H_10


可以看到已经成功连接到了调试器,但由于我没有连接目标板也没定义 target,所以出现了一些警告。

三、连接 Coretx-A53

硬件:Zynq UltraSCALE MPSOC(PS端有四核Coretx-A53,称为APU,即应用处理CPU)

3.1 MPSOC Debug 架构

查看Zynq MPSOC 的官方手册,发现:

查看openldap版本 怎么查看opencore版本_openocd_11

在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 官方调试器测试了下:

查看openldap版本 怎么查看opencore版本_fpga开发_12


可以直接检测到 Arm DAP,

查看openldap版本 怎么查看opencore版本_FT2232H_13


记下 IDCODE 和 IR 长度来编写 Openocd 的对应的目标板卡配置文件。

3.2 MPSOC 配置文件编写

具体的配置文件可看我这篇博客:zynq ultrascale mpsoc 自定义配置文件解析,逐行对配置文件进行了解析。
OpenOCD连接成功的log:

查看openldap版本 怎么查看opencore版本_ARMv8_14

成功连接到目标芯片后,需要使用 telnet 协议连接到 openOCD 终端,端口4444,这里我使用的是mobaxterm

查看openldap版本 怎么查看opencore版本_FT2232H_15


查看openldap版本 怎么查看opencore版本_查看openldap版本_16

此时终端所在的路径是openOCD开启服务的路径,可以使用pwd命令查看:

查看openldap版本 怎么查看opencore版本_ARMv8_17

四、所遇到的问题记录

4.1 JTAG-DP STICKY ERROR

debug 信息:

查看openldap版本 怎么查看opencore版本_fpga开发_18


查看openldap版本 怎么查看opencore版本_openocd_19


问题描述:检测到 MEM-AP APB,但访问不了 core。