pixhawk debug

 在用pixhawk飞控时,不可避免遇到debug的需求,一种方法是采用log的形式,还有一种便是利用Jtag来实现on-board debug,在Pixhawk官网上,提供了三种方法:http://www.pixhawk.com/dev/jtag/start
一种是用Black Magic Probe,从这个网站:https://1bitsquared.de/products/black-magic-probe能看出来价格敢不敢再贵点

太tm贵了好吗

第二种是使用OpenOCD Adapters,和上一种方法一样,也是麻烦且花费高。

怎么能好吃不贵的搞定60欧元能干的事情呢?
看第三种方法:SEGGER J-Link Adapters,其实就是大家熟悉的j-link,这个某宝上一搜一大堆好吗?
笔者用手头的st-link(意法半导体的一款jtag,和j-link其实没什么区别)结合Linux中的GDB工具尝试着实现了on-board debug.
一、硬件连接
如下图所示,我们使用的是FMU SWD的10pin接口,但原板子上并没有焊,所需接插件为SAMTEC申泰连接器,型号为:FTSH-105-01-F-DV-K,某宝链接:https://item.taobao.com/item.htm?spm=a1z09.2.0.0.1f30a53fbNRx3l&id=532978869499&_u=p1lq9d2n7ead
这里写图片描述
焊接时,接插件上有豁口一侧指向上图中IO SWD点的方向。ST-link是20Pin的jtag,而板子上是10pin的mini Jtag接口,所以需要20-10pin的转接板。某宝链接:
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.1f30a53fbNRx3l&id=552375541393&_u=p1lq9d2n161a
st-link TB上一大堆,也就20元左右,在连接时,将转接板20pin一端插入ST-link 20pin接口,接口有凸出的部分,方便定位,将10pin端插入pixhawk电路板,硬件连接完成。
二、 软件使用
测试环境:Ubuntu16.04LTS &VMwareWorkstation12
需要搭建一个GDBsever环境,从github下载stlink驱动,链接为stlink,解压文件,安装是可能会出现却依赖文件,automake dh-autoreconf libsub-1.0.0-dev,没安装的话sudo apt-get install autmake libusb-1.0.0-dev dh-autoreconf.或者去http://pan.baidu.com/s/1c13dZ5e
拷贝并解压缩在某文件夹下X,在X/stlink下有一个README.md,里面有对stlink使用方法介绍:
在终端,CD到该文件夹下:x/stlink/build/Release/src/gdbserver,在一个终端中敲入./st-until运行gdbserver,此时应保证stlink已通过USB连接电脑
这里写图片描述
运行成功时,会显示server在监听端口4242.
在第二个终端,进入Firmware ,make之,但需要加入编译条件,整句命令行如下:make px4fmu-v2_default PX4_CMAKE_BUILD_TYPE=RelWithDebInfo
此时大概率出现flash overload错误,解决方法:将nuttx_px4fmu-v2_default.cmake文件中的配置中的一部分modules注释掉,在firmware中的路径为/Firmware/cmake/configs/nuttx_px4fmu-v2_default.cmake。
打开第三个终端,cd到文件夹以下文件夹,X表示固件库文件放置位置。
X/Firmware/build_px4fmu-v2_default/src/firmware/nuttx
在终端中敲入arm-none-eabi-gdb firmware_nuttx即可进入gdb
这里写图片描述
此时回车即可。
在gdb中写tar ext:4242 即可连接server(此部分内容可在上文提到的README.md文件中有详细说明)

这里写图片描述
这里写图片描述
利用 b +函数名即可设置断点
Info b 查看所有断点
delete + 断点序号 删除断点
delete 删除所有断点
load 通过gdb刷新固件中的程序
run 运行程序
continue 继续运行中断了的程序
next 运行到断点后 使用

1

1
1

1
1

1
1

1

1

1

1
1

1

1
1

1
1

1
1

1
1
1

1

1

1
1

1
1
1

1

1

### 如何在 Visual Studio 中编译 Pixhawk 源代码 要在 Visual Studio (VS) 中编译 Pixhawk 源代码,需要了解其开发环境需求以及配置方法。以下是关于此主题的相关说明: #### 1. 开发环境准备 Pixhawk 使用的是 PX4 自动驾驶框架,该框架主要基于 CMake 构建系统来管理跨平台构建过程。因此,在 VS 上编译 Pixhawk 源码前,需安装以下依赖项: - **Visual Studio**: 推荐使用最新稳定版(如 2019 或更高版本),并确保安装了 C++ 工具链[^1]。 - **CMake**: 安装最新版本的 CMake 并将其路径添加到系统的 `PATH` 环境变量中[^2]。 - **Ninja Build System**: 这是一种轻量级的构建工具,常用于加速大型项目的构建过程[^3]。 #### 2. 获取源代码 通过 Git 下载 PX4 的官方仓库至本地计算机。执行如下命令克隆存储库及其子模块: ```bash git clone https://github.com/PX4/Firmware.git cd Firmware git submodule update --init --recursive ``` #### 3. 配置与生成解决方案 由于 Pixhawk 主要运行于嵌入式设备而非 Windows PC,直接利用 VS 编译目标硬件上的二进制文件较为复杂。推荐采用交叉编译的方式完成这一操作。具体步骤如下: - 打开终端窗口,进入源代码根目录; - 调用 CMake 来生成适用于 VS 的项目文件。例如,针对特定板卡设置参数后运行下面这条指令: ```bash cmake -G "Visual Studio 16 2019" -B build_vs . ``` 此处 `-G` 参数指定了生成器类型为 VS 2019 版本;而 `-B` 则定义输出目录名为 `build_vs`[^2]。 #### 4. 加载工程并编译 一旦成功创建 `.sln` 文件,则可以启动 Visual Studio 加载它。注意切换活动架构为目标 MCU 类型而不是默认桌面模式下的 x86/x64 。接着按照常规流程选择合适的配置(Debug/Release)进行重建即可获得最终固件镜像。 如果遇到诸如 “fatal error C1010”之类的错误提示,请参照之前提到过的解决办法尝试清理旧数据后再试一次。 --- ### 注意事项 尽管理论上可以在 Windows 平台上借助第三方插件或者模拟器实现部分功能测试,但为了最大程度保证兼容性和稳定性,建议开发者优先考虑 Linux 发行版作为日常工作的首选操作系统之一,因为那里拥有更成熟的社区支持和技术文档资源可供查阅学习。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值