基于 Openocd 和 FT2232H 的 ARMv8(Coretex-A53)调试

我是 雪天鱼,一名FPGA爱好者,研究方向是FPGA架构探索和SOC设计。
file

关注公众号,拉你进“IC设计交流群”。

openocd全名为Open On-ChipDebugger,是一个自由开放的片上调试工具和编程工具,目前已经发布到0.11.0版本,目前主流调试器几乎都支持,具体可以查看Open On-Chip Debugger:OpenOCD User’s Guide。

一、Openocd 配置流程

version:0.11.0链接

在这里插入图片描述

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

在这里插入图片描述
这是第三方编译好的软件,解压后配置环境变量即可。

在这里插入图片描述

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

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

  1. 编写脚本使用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。
问题分析;

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雪天鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值