简介
讲述如何在wsl
上搭建jtag
调试环境的过程。我们利用openocd
这个软件(内含gdbserver
),通过jtag
这个硬件,去调试我们得到raspi4b
上的A72
处理器。其实个人觉得trace32
也差不多是这样啦。
安装工具
gdb
wsl
中输入下面命令安装
sudo apt install gdb-multiarch
windows安装jtag驱动
我们使用zadig
来安装,首先来到此链接下载zadig
软件
注意这里我们选择我们的jlink
设备,也即是BULK interface(Interface 2)
,然后安装的驱动我们选择为WInUSB
驱动
点击安装
安装成功
wsl安装jtag驱动
wsl
上安装jtag
驱动,点击这个链接,选择deb
包,下载到wsl
安装驱动
sudo dpkg -i JLink_Linux_V798a_x86_64.deb
安装过程中,出现缺少依赖的错误,输入下面的命令进行修补
sudo apt install -f
fix
后再次安装
输入下列命令验证安装是否成功,如下所示,说明安装成功
sudo JLinkExe
安装wsl的usb驱动
wsl
如果要跟windows
接入的usb
设备共享,需要安装usbipd
驱动,这样才能识别jtag
,usbipd
相关配置见之前的文章
安装成功后,windows
的powershell
里去attach
你的 jtag
具体的busid
wsl
中输入lsusb
,即可查看到接入jtag
设备
openocd安装
下载支持raspi4b
的openocd
软件,到此链接下载xpack-openocd-0.10.0-13-linux-x64.tgz
解压
mkdir openocd
tar -zxf xpack-openocd-0.10.0-13-linux-x64.tgz -C openocd
这里为了后面方便开发,去除了些无用的路径
我们使用openocd
需要jlink.cfg
跟raspi4b.cfg
,不过下载的包里并没有raspi4b.cfg
raspi4b.cfg
可以复制如下脚本下载
这边直接复制作为raspi4b.cfg
set _CHIPNAME bcm2711
set _DAP_TAPID 0x4ba00477
adapter_khz 1000
transport select jtag
reset_config trst_and_srst
telnet_port 4444
# create tap
jtag newtap auto0 tap -irlen 4 -expected-id $_DAP_TAPID
# create dap
dap create auto0.dap -chain-position auto0.tap
set CTIBASE {0x80420000 0x80520000 0x80620000 0x80720000}
set DBGBASE {0x80410000 0x80510000 0x80610000 0x80710000}
set _cores 4
set _TARGETNAME $_CHIPNAME.a72
set _CTINAME $_CHIPNAME.cti
set _smp_command ""
for {set _core 0} {$_core < $_cores} { incr _core} {
cti create $_CTINAME.$_core -dap auto0.dap -ap-num 0 -ctibase [lindex $CTIBASE $_core]
set _command "target create ${_TARGETNAME}.$_core aarch64 \
-dap auto0.dap -dbgbase [lindex $DBGBASE $_core] \
-coreid $_core -cti $_CTINAME.$_core"
if {$_core != 0} {
set _smp_command "$_smp_command $_TARGETNAME.$_core"
} else {
set _smp_command "target smp $_TARGETNAME.$_core"
}
eval $_command
}
eval $_smp_command
targets $_TARGETNAME.0
修改config.txt文件
我们需要让config.txt
文件支持上jtag,修改如下,代码仓链接
使用jtag调试
接线
首先树莓派上对应的这六个引脚要跟jtag
上的相连,同时共地
实物图如下所示,也就是需要连7
条线
运行openocd
找到我们jtag
设备
usbipd wsl list
连接到wsl
usbipd wsl attach --busid 1-6
wsl
中可以用lsusb
查看
输入命令sudo ./openocd/bin/openocd -f ./openocd/scripts/interface/jlink.cfg -f ./openocd/raspi4b.cfg
,这里芯片刚上电,jtag
还没使能,所以还没连上
多试几下就行,很快的,如下所示就成功连上了A72
telnet登录openocd
新开终端,输入
telnet localhost 4444
我们输入命令停住CPU
halt
连上openocd内置的gdbserver
新开终端输入
gdb-multiarch
连上gdbserver
target remote localhost:3333
下面就是gdb
常用的一些命令了
layout可以多窗口展开,具体用法可以见链接
参考链接
其他
我们的使用方法是通过openocd
控制jtag
硬件,然后在连接到CPU
上的,如果单纯操控jtag
硬件,会有SN
版本号使用的问题,需要在windows
下使用的时候输入,所以记得这里不要直接操作jtag
硬件