为PX4建立J-Link Eclipse交叉调试环境

版本说明

1. 自驾仪:Holybro的Pixhawk 4

2. PX4版本:1.12

3. 宿主机:Thinkpad笔记本+Ubuntu 20.04.2 LTS

4. Eclipse:2022-03

5. Eclipse Embeded CDT:6.1.2

6. J-Link软件:V760

7. 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针)

 1.2 Pixhawk 4的FMU Debug Port与J-Link EDU mini口连接

连线顺序描述:

参考官网:

SWD (JTAG) Hardware Debugging Interface | PX4 User Guide

对照上述1,J-Link EDU mini 10针口定义和PIXHAWK 4 FMU Debug口6针的连接如下:

FMU Debug Port

J-Link EDU mini

1 Vtref

1

2 TX

-

3 NC

-

4 SWDIO

2

5 SWDCLK

4

6 GND

3 或者 5

电缆描述:

J-Link到Pixhawk

Pixhawk 4的Debug port具有6针插座如下图:

 需要采用6针电缆与之相连,Pixhawk 4线材包中有这根线,可以做两个,一个用在FMU debug口,另一个用在IO Debug口。另外也可以从得捷购买,网址:得捷电子

https://www.digikey.cn/en/products/detail/jst-sales-america-inc/A06SR06SR30K152A/6009379?s=N4IgTCBcDaIIIAYBsBlASs9BmBBpAjAKxhwgC6AvkA


 

一头接Pixhawk,另一头需要接J-Link

J-Link端的10针插座如下:


接出的排线由J-Link厂家提供。需要将J-Link EDU mini接出的10 Pin排线按上述线序与Pixhawk 4提供的6针电缆焊接起来(只需要连接4根线),由于间距很小,所以焊接是个细活。 焊接完的样子如图,焊点用绿色电工胶布包起来了。

  二. 软件部分

这里仅仅是利用Eclipse对PX4的源码进行调试,不做Eclipse环境下的编译工作,编译工作手动在命令行完成。

2.1安装SEGGER JLink软件

打开如下网页

SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace

在Linux选项中选择下载64-bit DEB Installer软件包,软件包将下载到Downloads目录中,

下载的文件名如下为Link_Linux_V760h_x86_64.deb,安装这个.deb软件包:

sudo dpkg -i ~/Downloads/Jlink_Linux_V760h_x86_64.deb

执行此命令后,SEGGER JLink软件包中的内容将存放在/usr/bin目录中,其中包括JLinkGDBServerCLExe软件,后面配置Eclipse时要用到。

2.2 安装具有Embeded CDT的Eclipse

旧的嵌入式Eclipse叫MCU Eclipse,有时也叫GNU MCU/ARM Eclipse,现在已经彻底把Eclipse Embeded CDT(CDT = C/C++ Development Tool )做好了,作为插件可以安装到任何Eclipse版本中。

按地址:How to install Eclipse IDE for Embedded C/C++ Developers | Eclipse Embedded CDT (C/C++ Development Tools)™

下载最新的Eclipse IDE,然后用install new software安装Embeded CDT,如果已经有Embeded CDT了,可省略这一步。可在About Eclipse IDE中检查是否有Embeded CDT,见下图:

2.3在Eclipse中为PX4-Autopilot建立一个项目

File->Import->C/C++/Existing Code with Makefile Project,为这个项目起个名字,并将代码路径(Existing Code Location)指向PX4-Autopilot目录。

在Toolchain for Indexer Settings对话框中选择:Arm Cross GCC。

然后点击Finish,Eclipse就建立了一个源码指向PX4-Autopilot的项目。

2.4 安装CMSIS PACKs

CMSIS PACKs是一组压缩文件,每一个CMSIS Pack压缩文件中包含有很多文件,这些文件被用来支持各种工具使用某种CPU。Eclipse具备安装CMSIS PACK的方法,一旦安装好,你就可以将一个项目与一种CPU关联起来,CMSIS PACK索引数据将被Eclipse缺省保存在/home/xxx/.local/cmsis-packs目录中,也可以指定它的存储位置,在这里:Window/Preference/C/C++/MCU Packages。

首次安装CMSIS PACKS的方法,如下:

参见:The CMSIS Packs manager | Eclipse Embedded CDT (C/C++ Development Tools)™

点击CMSIS Pack棕色按钮或者菜单Window(窗口)下选择Perspective(视图),选择CMSIS Packs视图,然后点击黄色的update按钮。如果不是首次安装,在选择CMSIS Pack视图后,再选择Window/New Window,就打开了一个具有update按钮的视图。

点击update按钮后,Eclipse会出现更新进度对话框,你会遇到异常,在异常提示对话框中你应该选择ignore all选项,这样更新进度对话框会一直执行下去,直至所有芯片的CMSIS pack的索引数据安装完毕。

  这个过程,网上说需要10-20分钟,我的经验是3个小时以上,需要耐心等待。当然一旦首次更新完成后,下次再点击update按钮,更新的速度相对来说就会快一些,因为update是一种增量更新。

 可以在Keil文件夹中找到 STM32Fxx设备,然后鼠标右键选择Install,安装F7设备。

2.5 为PX4-Autopilot项目做Debug配置

2.5.1. 配置GDB Server的路径

配置PX4-Autopilot项目使用的SEGGER J-Link的GDB Server存放路径,也就是JLinkGDBServerCLExe的存放路径。

方法:鼠标右键点击PX4-Autopilot项目,在对话框中选择Properties, 然后选择SEGGER J-Link Path,在Executable中填写:JLinkGDBServerCLExe,在Path中填写:/usr/bin,然后Apply and Close这个对话框。

 2.6.2 配置项目使用的CPU

鼠标右键点击PX4-Autopilot项目,在对话框中选择Properties, 在C/C++ Build/Settings对话框中,选择“Devices”,然后在“Device Selection”中选择你的Pixhawk FMU采用的CPU型号。然后Close and Apply。如下图:

 2.6.3 配置Debug

在Eclipse中进入Debug Configuration,双击GDB SEGGER J-Link Debugging,这样就建立了一个Jlink调试配置页。这是SEGGER公司为在Eclipse下进行Jlink调试定制的一个Eclipse pluggin,其中大部分参数已经填好了,你只需要填几个特定的参数。

Debug Configuration对话框的配置内容出现在Main和Debugger页中,其他可不用管。

  • 在Main页中,需要指定项目在宿主机上的elf文件的名字以及路径(我的elf文件是px4_fmu-v5_default.elf),调试时使用的源程序符号表存放在宿主机的elf文件中。因为已经在命令行build好了,所以这里选择Disable Auto Build。

  • 在Debugger页,在JLinkGDBSever栏目下大部分都填好了。注意几个数据就可以了。

    • Actual Executable:/usr/bin/JLinkGDBServerCLExe

    • Device name:STM32F765II(这是PIXHAW 4的FMU使用的芯片)

    • Interface:选择SWD(这是JLink EDU mini的接口)

    • Initial Speed:选择自动或者固定速率400Hz

    • GDB port:2331

  • 在GDB Client Setup栏目中,Executable name要填上/opt/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-gdb,这一项是填写arm工具链的gdb程序安装的地方。arm工具链需要自己安装。

  • 在Startup页,将SWO的选择去掉。

  • 其他数据不用管。

 所有配置就完成了,连接好硬件,可以按下Debug按钮进行源码调试,如果没设任何断点,程序将会停止在源文件platforms/common/include/px4_platform_common/module.h的static int main(int argc, char *argv[])函数下,然而这个断点不一定是你想要的,去掉或修改它,在Startup的Run/Restart栏目中的Set Breakpoint设置。调试界面如下图:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值