版本说明
1. 自驾仪:Holybro的Pixhawk 4。
2. PX4版本:1.13
3. 宿主机:Thinkpad笔记本+Ubuntu 20.04.2 LTS
4. J-Link软件:V760
5. J-Link硬件:J-Link EDU mini。可在淘宝上购买,170元左右,买到的东西如下图:
一. 硬件接口部分
1.1 J-Link EDU mini接口和Pixhawk 4 Debug口的定义
参考px4官网:
SWD (JTAG) Hardware Debugging Interface | PX4 User Guide
1.1.1 J-Link EDU mini的10针接口定义
1.1.2 J-Link EDU mini与SWD连接示意
SWD是ARM定义的一种通过串口进行调试的接口,Serial Wire Debug (SWD)
1.1.3 Pixhawk 4对FMU Debug接口和IO Debug接口的定义
PIXHAWK 4有两个Debug Port,一个是FMU Debug Port,另一个是IO Debug Port。两个口都提供了Pixhawk 标准6-Pin SH Debug Port。(6针) 调试PX4使用FMU Debug Port,这块板子的芯片型号是STM32F765II。
1.2 Pixhawk 4的FMU Debug Port与J-Link EDU mini口连接
1.2.1 连线顺序描述
参考官网:
SWD (JTAG) Hardware Debugging Interface | PX4 User Guide
对照上述1.1节的描述,J-Link EDU mini 10针口定义和PIXHAWK 4 FMU Debug口6针的连接如下:
FMU Debug Port | J-Link Mini |
---|---|
1 Vtref | 1 |
2 TX | - |
3 NC | - |
4 SWDIO | 2 |
5 SWDCLK | 4 |
6 GND | 3 或者 5 |
可见只需要连接4根线。
1.2.2 电缆描述
Pixhawk 4的Debug Port具有6针插座如下图:
需要采用6针电缆与之相连,Pixhawk 4线材包中有这根线,可以做两个,一个用于JLink调试,一个用于系统终端。另外也可以从得捷购买,网址:得捷电子
A06SR06SR30K152A JST Sales America Inc. | Cable Assemblies | DigiKey
一头接pixhawk,另一头需要接J-Link
J-Link端的10针插座如下:
接出的排线由J-Link厂家提供。需要将J-Link EDU mini接出的10 Pin排线按上述线序与Pixhawk 4提供的6针电缆焊接起来(只需要连接4根线),由于间距很小,所以焊接是个细活。 焊接完的样子如图,焊点用绿色电工胶布包起来了。
二. 软件部分
2.1 安装SEGGER JLink软件
打开如下网页
SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace
在Linux选项中选择下载64-bit DEB Installer软件包,软件包将下载到Downloads目录中,
下载的文件名如下为JLink_Linux_V760h_x86_64.deb,安装这个.deb软件包:
sudo dpkg -i ~/Downloads/JLink_Linux_V760h_x86_64.deb
执行此命令后,软件包中的内容将存放在/usr/bin目录中。这是一种全局安装,也就是说可以在任何地方都可以执行JLink提供的安装在/usr/bin中的二进制程序。
2.2 运行JLink GDB Server
确认JLink一端的usb口已经与宿主机的USB口连接,JLink另一端的SWD口已经与Pixhawk 4的FMU Debug Port连接好。
执行命令:JLinkGDBServerExe,将弹出图形界面:
在这个界面中需要填写,
Connection to J-Link:USB(Pixhawk是通过USB与宿主机连接的)
Target device:STM32F765II(这是你的Pixhawk板中FMU使用的CPU型号)
Target interface:SWD(Pixhawk与宿主机的连接方式是SWD)
speed:Auto Selection
然后点击OK按钮。
接受版权说明的要求,别忘了,这是一个非常便宜的用于教育用的调试工具。
这个界面就是GDB Server界面,可见:
GDB: Waiting for connection(说明GDB Server正在等待GDB客户端的连接)
J-Link:Connected(说明J-Link已经建立了宿主机与目标机之间的硬件连接)
2.3 运行GDB,调试PX4软件
打开一个新的窗口,进入到PX4-Autopilot目录,运行下面命令:
arm-none-eabi-gdb build/px4_fmu-v5_default/px4_fmu-v5_default.elf
在gdb提示符下,执行命令:
gdb>target remote localhost:2331
此时可在JLink GDB Server界面中看到GDB Server与GDB客户端已经建立了连接。在gdb客户端界面,gdb将PX4程序停在某个地方,等待执行gdb命令,你可以执行continue命令让PX4运行起来,用CTRL-C中断程序的运行,PX4的运行状态可在JLink GDB Server界面中观察。