01
PX4驱动调试工具链概述
什么是PX4驱动调试工具链、为什么需要它、核心组成与整体工作流程
概念入门
02
硬件调试器选择与连接
J-Link/ST-Link/Black Magic Probe · SWD/JTAG · 连接飞控板实操
硬件调试器
03
开发环境搭建 (Ubuntu)
安装Ubuntu · PX4编译环境 · ARM交叉工具链 · QGroundControl
环境Ubuntu
04
PX4固件编译与烧录
下载源码 · make px4_fmu-v5 · J-Link烧录 · 验证烧录
编译烧录
05
GDB调试入门
GDB概念 · arm-none-eabi-gdb · 基本命令 · 调试C程序
GDB基础
06
GDB调试PX4固件
连接目标板 · 加载符号表 · 断点/单步 · 查看变量寄存器
GDBPX4
07
OpenOCD调试服务器
OpenOCD介绍 · 安装 · STM32F7/H7脚本 · 启动连接
OpenOCD服务器
08
VS Code集成调试环境
安装VS Code · Cortex-Debug插件 · launch.json · 图形化断点
VS CodeIDE
09
PX4驱动框架解析
uORB消息 · register_driver · probe/init/exit · 模块化设计
框架uORB
10
编写第一个PX4驱动 (虚拟传感器)
创建目录 · CMakeLists.txt · probe函数 · 注册uORB · 编译加载
实战驱动
11
驱动调试常用技巧
printf/PX4_INFO/PX4_ERR · uORB消息频率 · listener命令
技巧日志
12
逻辑分析仪使用入门
逻辑分析仪介绍 · Saleae/Kingst · 连接信号 · I2C/SPI捕获
逻辑分析仪硬件
13
I2C总线调试实战
I2C协议回顾 · 抓取波形 · 起始/停止条件 · 数据帧解析 · 故障排查
I2C总线
14
SPI总线调试实战
SPI模式0/1/2/3 · 抓取波形 · 片选/时钟/数据 · 传感器驱动调试
SPI调试
15
UART串口调试实战
UART协议 · USB转串口 · 波特率/校验位 · minicom/cutecom · GPS/数传
UART串口
16
示波器在驱动调试中的应用
示波器基础 · 测量PWM频率/占空比 · 上升/下降时间 · 电机驱动信号
示波器PWM
17
PX4 Shell与nsh终端
进入nsh · top/dmesg/listener/param · 系统状态 · 动态加载驱动
Shellnsh
18
参数系统调试
PX4参数系统 · param命令 · 驱动中注册参数 · 回调函数调试
参数调试
19
传感器校准与数据验证
校准加速度计/陀螺仪/磁力计 · mavlink inspector · 真实值对比
校准传感器
20
驱动性能分析
测量执行时间 · perf计数器 · CPU占用率 · 中断优化
性能优化
21
内存调试与堆栈溢出排查
free命令 · stack check · malloc/free注意事项 · 内存泄漏
内存堆栈
22
多线程与并发调试
WorkQueue · 任务优先级 · 互斥锁 · 死锁排查
并发WorkQueue
23
DMA调试技巧
DMA概念 · 配置传输 · 传感器数据DMA · 中断调试 · 常见问题
DMA高级
24
中断调试
中断优先级 · 嵌套 · 延迟测量 · GPIO翻转测量响应时间
中断实时
25
仿真环境搭建 (Gazebo+ROS2)
安装Gazebo/ROS2 · PX4仿真 · 驱动调试 · 仿真数据验证
仿真Gazebo
26
硬件在环仿真 (HITL)
HITL vs SITL · 配置HITL · 连接真实飞控 · 调试真实硬件驱动
HITL硬件
27
日志系统与事后分析
ULog · ulog2csv · FlightPlot/PlotJuggler · 定位驱动异常
日志分析
28
常见驱动故障模式与解决方案
传感器无数据/跳变 · 通信超时 · 驱动崩溃 · 系统卡死
故障排查
29
实战案例1:调试I2C气压计MS5611
从零调试 · I2C波形 · 数据手册时序 · 解决读取错误
实战MS5611
30
实战案例2:调试SPI磁力计IST8310
SPI模式配置 · DMA传输 · 校准磁力计 · 航向精度验证
实战IST8310