在 PX4-Autopilot 源码中,Pixhawk 6X 的 IO 固件配置和编译目标如下:

项目地址:

https://gitcode.com/Tibos_No_One/Pixhawk6X_BaseBoard_Share

1. 源码位置

  • 核心逻辑:IO 固件的通用源代码位于 [src/modules/px4iofirmware](file:///home/cwkj/PX4-Autopilot/src/modules/px4iofirmware)。
  • 包含文件:主要逻辑包括 [px4io.cpp](file:///home/cwkj/PX4-Autopilot/src/modules/px4iofirmware/px4io.cpp)(主循环)、[mixer.cpp](file:///home/cwkj/PX4-Autopilot/src/modules/px4iofirmware/mixer.cpp)(混控逻辑)、[serial.cpp](file:///home/cwkj/PX4-Autopilot/src/modules/px4iofirmware/serial.cpp)(与 FMU 的通信)等。

2. 编译目标

  • Pixhawk 6X(以及 6X-RT、6C 等 v6 系列)使用通用的 IO 编译目标:
    make px4_io-v2_default
    
  • 虽然 Pixhawk 6X 的 IO 处理器是 STM32F103,但它与早期的 Pixhawk IO 设计保持软件兼容,因此共用 px4_io-v2 这一目标。

3. STM32F103 配置
相关的硬件配置文件位于 [boards/px4/io-v2](file:///home/cwkj/PX4-Autopilot/boards/px4/io-v2):

  • 板级定义:[board_config.h](file:///home/cwkj/PX4-Autopilot/boards/px4/io-v2/src/board_config.h) 定义了 PWM 通道、LED、安全按钮和串口映射。
  • NuttX 系统配置:[defconfig](file:///home/cwkj/PX4-Autopilot/boards/px4/io-v2/nuttx-config/nsh/defconfig)。
    • 注:在此配置文件中,芯片被定义为 CONFIG_ARCH_CHIP_STM32F100C8。这是因为 PX4 为了兼容性,在 IO 固件中使用了 STM32F1 系列通用的配置。STM32F103 与 F100 在此应用场景下(PWM/串口/ADC)寄存器兼容,因此使用相同的固件镜像。
  • 时钟配置:[board.h](file:///home/cwkj/PX4-Autopilot/boards/px4/io-v2/nuttx-config/include/board.h) 中定义系统时钟。默认为 24MHz (HSE),以确保在 F100 和 F103 上都能稳定运行。
  • 链接脚本:[script.ld](file:///home/cwkj/PX4-Autopilot/boards/px4/io-v2/nuttx-config/scripts/script.ld) 定义了 Flash (60K) 和 SRAM (8K) 的内存布局。

4. 总结

  • 芯片型号:STM32F103 (但在固件配置中通常被视为 F1xx 系列通用)。
  • 编译命令make px4_io-v2_default
  • FMU 侧驱动:FMUv6X 通过 [px4io.cpp](file:///home/cwkj/PX4-Autopilot/src/drivers/px4io/px4io.cpp) 驱动程序与此 IO 固件通信,通信速率通常为 1.5 Mbps。

1. 编译教程 (Step-by-Step Build Guide)

本教程基于 PX4-Autopilot 官方构建系统,针对 px4_io-v2_default 目标(兼容 Pixhawk 6X IO)。

1.1 工具链准备
  • 操作系统: Ubuntu 20.04/22.04 LTS (推荐) 或 Windows (WSL2)
  • GCC-ARM: gcc-arm-none-eabi-9-2020-q2-update (PX4 官方推荐版本,确保 ABI 兼容性)
  • CMake: 版本 >= 3.10
  • Ninja: 版本 >= 1.8

安装命令 (Ubuntu):

# 移除旧版本
sudo apt-get remove gcc-arm-none-eabi

# 安装依赖
sudo apt-get update
sudo apt-get install git make cmake ninja-build python3-pip

# 配置 Python 依赖
pip3 install --user kconfiglib jsonschema future

注意:请手动解压下载的 GCC 压缩包并将其 bin 目录添加到系统的 PATH 环境变量中。

1.2 源码获取与环境配置
# 克隆源码 (确保网络通畅以拉取子模块)
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot

# 如果子模块更新失败,可手动执行
git submodule update --init --recursive
1.3 STM32F103C8T6 板级配置清单

Pixhawk 6X IO 复用 px4_io-v2 架构。虽然物理芯片是 STM32F103C8T6,但在 PX4 配置文件中,为了保持与旧版 IO 固件的二进制兼容性,NuttX 配置常将其定义为 STM32F100 系列(寄存器定义在 IO 功能上兼容)。

关键配置参数 (位于 boards/px4/io-v2/):

功能模块 配置文件 参数/宏定义 说明
MCU型号 nuttx-config/nsh/defconfig CONFIG_ARCH_CHIP_STM32F100C8=y 软件层兼容配置,实际烧录到 F103
时钟系统 nuttx-config/include/board.h STM32_HSE_FREQUENCY 24000000ul 外部晶振 24MHz
USART (FMU) src/board_config.h STM32_USART2 波特率 1.5Mbps,用于与 FMU 通信
USART (RC) src/board_config.h STM32_USART1 用于 SBUS/DSM/PPM 输入及调试打印
PWM 输出 src/board_config.h GPIO_PWM1 - GPIO_PWM8 映射至 PA0, PA1, PB8, PB9, PA6, PA7, PB0, PB1
LED src/board_config.h PB14(Blue), PB15(Amber), PB13(Safety) 状态指示灯
1.4 编译与产物验证

执行编译:

# 在 PX4-Autopilot 根目录下执行
make px4_io-v2_default

产物验证:
编译成功后,将在 build/px4_io-v2_default/ 目录下生成以下文件:

  1. px4_io-v2_default.bin: 纯二进制文件,用于 J-Link 烧录(约 40-50KB)。
  2. px4_io-v2_default.elf: 包含调试符号的文件,用于 GDB 调试。

验证命令:

ls -lh build/px4_io-v2_default/px4_io-v2_default.bin
# 预期输出: 应该看到文件大小非 0,且日期为当前时间

2. J-Link 烧录教程

2.1 软件准备
  • 下载并安装 J-Link Software and Documentation Pack (V7.00 或更高版本)。
  • 工具包含:JLinkExe (命令行) 和 JFlashLite (图形界面)。
2.2 硬件连接 (SWD 接口)

请参考 PAB-BASE-RC05-sch 原理图的 debug 接口进行连接:

J-Link 引脚 Pixhawk 6X IO (STM32F103) 引脚 描述
Pin 1 (VTref) 3V3 目标板参考电压 (必须连接)
Pin 7 (SWDIO) PA13 数据信号
Pin 9 (SWCLK) PA14 时钟信号
Pin 4/6/8 (GND) GND 共地
Pin 15 (RESET) NRST 复位引脚 (可选,推荐连接)
2.3 烧录脚本 (J-Link Commander)

创建一个名为 flash_io.jlink 的文本文件,内容如下:

device STM32F103C8
si SWD
speed 4000
connect
halt
r
erase
loadbin build/px4_io-v2_default/px4_io-v2_default.bin 0x08001000
verifybin build/px4_io-v2_default/px4_io-v2_default.bin 0x08001000
r
g
exit

执行烧录:

JLinkExe -CommandFile flash_io.jlink
2.4 烧录后验证

使用 J-Link RTT 查看启动日志(如果固件启用了 RTT),或者连接 USART1 (TX=PA9, RX=PA10) 到 USB-TTL 模块,波特率通常为 115200。


3. 功能验证清单

3.1 基础运行状态
  • 心跳灯: 观察板载蓝色 LED (PB14) 是否以 1Hz 频率闪烁。这表明固件主循环 px4io_main 正在运行。
  • 启动日志: 通过 USART1 接收数据,复位板子,应看到类似 [boot] PX4 IO ... 的文本信息。
3.2 PWM 输出精度测试
  • 测试方法: 将示波器探头连接至 PWM1 (PA0)。
  • 测试用例: 固件在未解锁状态下通常输出 900us 或 1500us (取决于配置)。
  • 标准:
    • 频率: 50Hz (误差 < 0.5Hz) 或 400Hz (如配置为数字舵机)。
    • 脉宽: 设定值 ±10us。
3.3 固件版本校验

在 USART1 终端输入回车,如果开启了 NSH (NuttX Shell),输入:

ver all

应返回 FW git-hash: ... 及编译时间戳。

3.4 I2C 与 RGB 传感器 (特别说明)
  • 注意: 标准的 px4_io-v2 固件不包含 I2C RGB 传感器驱动。Pixhawk 架构中,RGB 传感器(如 IST8310+LED)通常连接到 FMU 的 I2C 总线,而非 IO 板。
  • 验证: 如果您的设计确实将 RGB 灯接在 STM32F103 的 I2C 引脚上,您需要修改 px4io 源码,添加 I2C 初始化和驱动逻辑。标准固件下,此项测试将不通过(无法扫描到设备)。建议检查原理图,确认传感器是否应由主控 (H7) 驱动。

4. 常见故障排查表

故障现象 可能原因 解决方法
编译报错 undefined reference to board_init 板级初始化文件缺失或链接脚本错误 1. 确保在 boards/px4/io-v2/src 下存在 stm32_boot.c
2. 检查 CMakeLists.txt 是否正确包含了板级源文件。
J-Link Cannot connect to target 1. 物理接线错误
2. 芯片处于休眠/锁死
3. 供电不足
1. 检查 SWDIO/SWCLK 线序及万用表测通断。
2. 确保 VTref 接到 3.3V。
3. 按住复位键再执行 connect 命令 (Connect under Reset)。
4. 检查 BOOT0 引脚,应下拉接地。
烧录后程序不运行 (LED不亮) 1. 向量表偏移错误
2. 晶振不起振
3. Checksum 校验失败
1. 标准 IO 固件起始地址为 0x08000000。如果是通过 Bootloader 烧录,偏移应为 0x08001000 (4KB offset)。直接 J-Link 烧录请使用 0x08000000
2. 示波器测量 OSC_IN/OUT 引脚波形。
3. IO 固件启动时会计算 CRC,若通过 J-Link 烧录了不完整的镜像可能导致校验失败,尝试全片擦除 (erase) 后重烧。
PWM 无输出 安全开关未按下 IO 固件默认处于“锁定”状态。需模拟按下安全开关 (PB5 拉低) 或在 FMU 发送解锁指令后才有 PWM 输出。
USART1 无输出 波特率或时钟配置错误 1. 确认波特率匹配 (默认 115200)。
2. 检查 board.h 中的 STM32_HSE_FREQUENCY 是否与板载晶振一致 (通常为 24MHz)。

5.示例输出

cwkj@ubuntu:~/PX4-Autopilot$ make px4_io-v2_default
[0/1] Re-running CMake...
-- PX4_GIT_TAG: v1.17.0-alpha1-290-gf46fd89057
-- PX4 config file: /home/cwkj/PX4-Autopilot/boards/px4/io-v2/default.px4board
-- PLATFORM nuttx
-- TOOLCHAIN arm-none-eabi
-- ARCHITECTURE cortex-m3
-- CONSTRAINED_FLASH y
-- ROOT_PATH /fs/microsd
-- PARAM_FILE /fs/mtd_params
-- PWM_FREQ 1000000
-- PX4 config: px4_io-v2_default
-- PX4 platform: nuttx
-- cmake build type: MinSizeRel
-- ccache enabled (export CCACHE_DISABLE=1 to disable)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/cwkj/PX4-Autopilot/build/px4_io-v2_default
[0/62] git submodule platforms/nuttx/NuttX/nuttx
[22/62] Generating nuttx/arch/arm/src/libarch.a
chip/stm32_gpio.c:41:11: note: #pragma message: CONFIG_STM32_USE_LEGACY_PINMAP will be deprecated migrate board.h see tools/stm32_pinmap_tool.py
   41 | #  pragma message "CONFIG_STM32_USE_LEGACY_PINMAP will be deprecated migrate board.h see tools/stm32_pinmap_tool.py"
      |           ^~~~~~~
[60/62] Linking CXX executable px4_io-v2_default.elf
Memory region         Used Size  Region Size  %age Used
           flash:       40244 B        60 KB     65.50%
            sram:        3284 B         8 KB     40.09%
[62/62] Creating /home/cwkj/PX4-Autopi...x4_io-v2_default/px4_io-v2_default.px4
cwkj@ubuntu:~/PX4-Autopilot$ ls
boards              flash_io.jlink    msg            srv
build               integrationtests  package.xml    test
cmake               Jenkinsfile       platforms      test_data
CMakeLists.txt      Kconfig           posix-configs  Tools
CODE_OF_CONDUCT.md  launch            README.md      validation
CONTRIBUTING.md     LICENSE           ROMFS
CTestConfig.cmake   MAINTAINERS.md    SECURITY.md
docs                Makefile          src
cwkj@ubuntu:~/PX4-Autopilot$ cd build/px4_io-v2_default/
cwkj@ubuntu:~/PX4-Autopilot/build/px4_io-v2_default$ ls
airframes.xml                                                        NuttX
boardconfig                                                          nuttx_olddefconfig.log
boards                                                               parameters.json
build.ninja                                                          parameters.json.xz
CMakeCache.txt                                                       parameters.xml
CMakeFiles                                                           parameters.xml.xz
cmake_install.cmake                                                  platforms
compile_commands.json                                                px4_boardconfig.h
CPackConfig.cmake                                                    px4_io-v2_default.bin
CPackSourceConfig.cmake                                              px4_io-v2_default.elf
defconfig_inflate_stamp                                              px4_io-v2_default.map
events                                                               px4_io-v2_default.px4
external                                                             rules.ninja
generated_params                                                     src
git_init__home_cwkj_PX4-Autopilot_platforms_nuttx_NuttX_nuttx.stamp  uORB
msg
cwkj@ubuntu:~/PX4-Autopilot/build/px4_io-v2_default$ 

可以看到生成了

[62/62] Creating /home/cwkj/PX4-Autopilot/build/px4_io-v2_default/px4_io-v2_default.px4

在这里插入图片描述

6.如何安装在Ubuntu安装Jlink

JLinkExe 是 SEGGER J-Link 软件包的一部分。由于您当前使用的是 Linux (Ubuntu/Debian) 环境,以下是安装 J-Link 驱动及工具的详细步骤:

1. 下载 J-Link 软件包

由于 SEGGER 官网下载需要接受协议且链接经常变动,我们使用 apt 仓库方式安装最为便捷和稳定。

方法一:使用 SEGGER 官方 APT 仓库(推荐)

这可以确保您始终获得最新版本,并且安装过程会自动处理依赖关系。

  1. 添加 GPG 密钥
    wget -O - https://www.segger.com/downloads/jlink/JLink_Linux_V794f_x86_64.deb.sig | sudo apt-key add -
    # 注意:上面的命令可能会因为版本号变动而失败,更通用的方法是直接下载 .deb 包(见方法二),或者使用以下手动添加仓库的方法:
    
    # 实际上,SEGGER 没有标准的 PPA,最稳妥的方式是直接下载 .deb 包安装。
    

方法二:直接下载并安装 .deb 包(最常用)

这是在 Linux 上安装 J-Link 最标准的方法。

  1. 下载 .deb 安装包
    您需要从 SEGGER 官网下载适用于 Linux x86_64 的 .deb 包。由于无法直接通过 wget 绕过官网的“接受协议”弹窗,建议您在浏览器中下载,或者尝试使用以下命令(如果链接有效):

    由于我无法直接访问外网下载大文件,请您在电脑上执行以下步骤:

    • 访问 SEGGER J-Link Downloads 页面。
    • 找到 “J-Link Software and Documentation Pack for Linux, DEB installer, 64-bit”
    • 点击下载(通常名为 JLink_Linux_Vxxxx_x86_64.deb)。
  2. 安装 .deb 包
    假设您下载的文件在 ~/Downloads 目录,文件名为 JLink_Linux_V794_x86_64.deb(版本号可能不同)。

    在终端中执行:

    cd ~/Downloads
    sudo apt-get update
    sudo apt-get install ./JLink_Linux_V*_x86_64.deb
    

    注意:使用 apt-get install ./filename.deb 而不是 dpkg -i,因为 apt 会自动解决依赖问题(如 libncurses5 等)。

2. 验证安装

安装完成后,JLinkExe 会被添加到系统路径中。

  1. 检查版本
    在终端输入:

    JLinkExe --version
    

    或者直接运行:

    JLinkExe
    
  2. 预期输出
    如果安装成功,您会进入 J-Link 命令交互界面,看到类似以下信息:

    SEGGER J-Link Commander V7.94 (Compiled Dec  7 2023 16:22:27)
    DLL version V7.94, compiled Dec  7 2023 16:22:04
    
    Connecting to J-Link via USB...FAILED: Can not connect to J-Link via USB.
    

    (如果没有连接硬件,显示 FAILED 是正常的,只要能看到版本号和提示符 J-Link> 就说明工具安装成功了。)

  3. 退出
    输入 exit 或按 Ctrl+C 退出。

3. 连接后的 USB 权限设置(重要)

在 Linux 下,普通用户默认可能没有权限直接访问 USB 设备。J-Link 安装包通常会自动安装 udev 规则文件(/etc/udev/rules.d/99-jlink.rules)。

  • 如果无法识别设备
    1. 重新插拔 J-Link USB 线。
    2. 如果仍然提示权限不足,尝试重启 udev 服务:
      sudo udevadm control --reload-rules
      sudo udevadm trigger
      
    3. 或者简单地重启计算机。

总结

您只需要下载 .deb 包并运行 sudo apt-get install ./<文件名>.deb 即可完成安装。安装后,直接在终端输入 JLinkExe 即可使用。
在这里插入图片描述
默认情况下,PX4 构建系统会生成 .bin(纯二进制文件)和 .elf(包含调试信息的可执行文件),但不会直接生成 .hex 文件(Intel HEX 格式)。

要生成 .hex 文件,最简单直接的方法是使用 ARM GCC 工具链中的 arm-none-eabi-objcopy 命令,将编译好的 .elf 文件转换成 .hex 格式。

步骤

  1. 首先,正常编译生成 ELF 文件:
    在 PX4 根目录下执行:

    make px4_io-v2_default
    
  2. 然后,使用 objcopy 进行转换:
    编译完成后,运行以下命令,将 .elf 转换为 .hex

    arm-none-eabi-objcopy -O ihex build/px4_io-v2_default/px4_io-v2_default.elf build/px4_io-v2_default/px4_io-v2_default.hex
    

说明

  • -O ihex:告诉 objcopy 输出格式为 Intel HEX。
  • 输入文件是刚才编译出来的 px4_io-v2_default.elf
  • 输出文件将保存在同一目录下,命名为 px4_io-v2_default.hex

执行完第二步命令后,您就可以在 build/px4_io-v2_default/ 目录下找到所需的 .hex 文件,它可以被大多数通用的烧录工具(如 J-Flash、STM32CubeProgrammer 等)直接使用。

报错:

cwkj@ubuntu:~/下载$  sudo apt-get install ./JLink_Linux_V926_arm64.deb 
[sudo] cwkj 的密码: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
注意,选中 'jlink:arm64' 而非 './JLink_Linux_V926_arm64.deb'
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
 jlink:arm64 : 依赖: libc6:arm64 (>= 2.7) 但无法安装它
               依赖: libxrender1:arm64 (>= 1:0.9.0) 但无法安装它
               依赖: libxcb-render0:arm64 (>= 1.9) 但无法安装它
               依赖: libxcb-render-util0:arm64 (>= 0.3.8) 但无法安装它
               依赖: libxcb-shape0:arm64 (>= 1.9) 但无法安装它
               依赖: libxcb-randr0:arm64 (>= 1.9) 但无法安装它
               依赖: libxcb-xfixes0:arm64 (>= 1.9) 但无法安装它
               依赖: libxcb-sync1:arm64 (>= 1.9) 但无法安装它
               依赖: libxcb-shm0:arm64 (>= 1.9) 但无法安装它
               依赖: libxcb-icccm4:arm64 (>= 0.3.9) 但无法安装它
               依赖: libxcb-keysyms1:arm64 (>= 0.3.9) 但无法安装它
               依赖: libxcb-image0:arm64 (>= 0.3.9) 但无法安装它
               依赖: libxkbcommon0:arm64 (>= 0.5.0) 但无法安装它
               依赖: libxkbcommon-x11-0:arm64 (>= 0.5.0) 但无法安装它
               依赖: libfontconfig1:arm64 (>= 2.6) 但无法安装它
               依赖: libfreetype6:arm64 (>= 2.3.0) 但无法安装它
               依赖: libxext6:arm64 (>= 1:6.4.3) 但无法安装它
               依赖: libx11-6:arm64 (>= 1:6.2.1) 但无法安装它
               依赖: libxcb1:arm64 (>= 1.9) 但无法安装它
               依赖: libx11-xcb1:arm64 (>= 2:1.3.2) 但无法安装它
               依赖: libsm6:arm64 (>= 1:6.0.4) 但无法安装它
               依赖: libice6:arm64 (>= 1:6.3.5) 但无法安装它
               依赖: libglib2.0-0:arm64 (>= 2.8.3) 但无法安装它
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
cwkj@ubuntu:~/下载$ 

修复办法:

通过scpWindows下通过Jlink Flash来下载,参考文档:
https://zhuanlan.zhihu.com/p/54574099
非原创,仅供参考

关于Pixhawk 6X IO Control BaseBoardLED

LED 引脚定义在 boards/px4/io-v2/src/board_config.h 文件中,具体如下:

  • 蓝灯 (LED_BLUE):
    • 引脚: PB14
    • 定义: #define GPIO_LED_BLUE (GPIO_OUTPUT|GPIO_CNF_OUTOD|GPIO_MODE_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN14)
    • 注意: 此引脚在 Pixhawk 2.1 上也用作 IMU 温度控制。
  • 琥珀色灯 (LED_AMBER):
    • 引脚: PB15
    • 定义: #define GPIO_LED_AMBER (GPIO_OUTPUT|GPIO_CNF_OUTOD|GPIO_MODE_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN15)
  • 安全灯 (LED_SAFETY):
    • 引脚: PB13
    • 定义: #define GPIO_LED_SAFETY (GPIO_OUTPUT|GPIO_CNF_OUTOD|GPIO_MODE_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN13)
  • 绿灯 (LED_GREEN):
    • 引脚: PA11
    • 定义: #define GPIO_LED_GREEN (GPIO_OUTPUT|GPIO_CNF_OUTOD|GPIO_MODE_50MHz|GPIO_OUTPUT_SET|GPIO_PORTA|GPIO_PIN11)

这些引脚配置为 开漏输出 (Open Drain) 模式 (GPIO_CNF_OUTOD),这意味着 LED 通常是低电平点亮(Active Low),但具体取决于外部电路的上拉连接方式。

代码位置:
[boards/px4/io-v2/src/board_config.h]

#define GPIO_LED_BLUE   (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN14) // IO-LED_BLUE or IMU_TEMPERATURE_CONTROL on Pixhawk 2.1
#define GPIO_LED_AMBER  (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN15) // IO-LED_AMBER
#define GPIO_LED_SAFETY (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_SET|GPIO_PORTB|GPIO_PIN13) // IO-LED_SAFETY
#define GPIO_LED_GREEN  (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_SET|GPIO_PORTA|GPIO_PIN11) // IO-LED_POWER_BREATHING

下载程序不能运行?

先将bootloader.bin下载到单片机中,注意下载地址从0x8000000开始,文件地址为:

/PX4-Autopilot/boards/px4/io-v2/extras/px4_io-v2_bootloader.bin

然后将编译好的px4_io-v2_default.bin下载到单片机中,注意下载地址从0x80001000开始,文件地址为:

PX4-Autopilot/build/px4_io-v2_default/px4_io-v2_default.*

然后就可以正常运行IO控制器的固件!

测试

打开QGC,在Analysis中,输入以下命令:

px4io status

在这里插入图片描述
可以看到px4io控制器的一些状态,此时io控制器与fmu控制器连接上,通信连接后,io控制器的蓝色led会闪烁,橙色led会熄灭
如果橙色led常亮,则没有建立好连接

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐