HPMicro Ardupilot支持包v0.1.0发布
- HPM系列SOC是基于 RISC‑V 的高性能 MCU,带有丰富的外设(PWM、SPI、I2C、SDXC、外设 DMA 等),适合用于飞控与外设集成。
- 先楫半导体基于hpm_sdk v1.11.0对ardupilot进行了适配,为使用先楫芯片快速搭建ardupilot开发平台提供了支持。
本次支持包技术实现
- 新增 HAL 子系统和实现:AP_HAL_HPMICRO
- 包括:HAL_HPM_Class.cpp、Scheduler、Storage、Util、I2CDevice、SPIDevice、UARTDriver 等驱动框架与实现。
- 板级抽象与默认配置:
- AP_HAL_Boards.h 添加 HAL_BOARD_HPMICRO
- hpmicro.h 提供 HAL 名称、内存/存储/标志等宏与默认值(例如 HAL_BOARD_NAME "HPMICRO",HAL_STORAGE_SIZE 等)
- hwdef.dat 定义了 UART、SPI、I2C、ADC、RC 输出映射、默认串口协议和板级选项(例如日志、SD 卡、ADC 用法等)。
- boards/boards/hpmpilotbf67 包含 board.h、pinmux、CMakeLists.txt 与 hpmpilotbf67.yaml(板卡元数据:SOC型号、外设、内存、flash、大/小特性)。为hpm_sdk所需板级文件
- 构建系统集成:
- 新增 Waf 支持工具:hpmicro.py,它会:
- 调用 hpmicro_hwdef.py 生成 hwdef.h
- 处理 includes.list 以引入hpm_sdk头文件路径
- 使用 CMake 目标将 ArduPilot 库链接到 hpm_sdk 的固件构建
- 外部依赖
- 需要 HPM SDK源码,已作为工程子模块引入
- RISC‑V 工具链(例如 riscv32-unknown-elf)。
- 示例与默认映射:
- hwdef.dat 中有串口默认协议(比如 SerialProtocol_MAVLink2 on SERIAL0@921600)、RC 输出与 PWM 分组配置、ADC/电池引脚标定、SPI 总线与 IMU 探测策略用 SPI 设备名(icm20608)等。
- 操作系统FreeRTOS,支持使用gptmr作为系统定时器,支持tickless模式,支持向量模式,支持traceRecorder调试
如何构建
-
安装 RISC‑V 工具链(如 riscv32-unknown-elf-gcc)并将其加入 PATH。
-
克隆仓库
git clone git@github.com/hpmicro/ardupilot git submodule init git sbumodule update3.使用 waf 构建:
./waf configure --board hpmpilotbf67在系统环境变量中配置好HPM_SDK_BASE和GNURISCV_TOOLCHAIN_PATH,然后调用
./waf copter或者直接传递变量值给命令行
HPM_SDK_BASE=/home/ubuntu/ardupilot/modules/hpm_sdk GNURISCV_TOOLCHAIN_PATH=/home/ubuntu/riscv32-gnu-toolchain ./waf copterWaf 会调用 hpmicro_hwdef 生成 hwdef.h 并自动将hpm_sdk的目录加入头文件搜索路径。
生成的固件由cmake产生hpm_sdk工程,并最终链接出目标elf和bin文件。文件目录一般为:ardupilot/build/hpmpilotbf67/build/bin/arducopter/output
支持的开发板
hpmpilotbf67
可扩展:通过添加新的 hwdef.dat 与 boards/ 条目,可以支持其他 HPMicro 系列板。
注意事项与限制
- 依赖 HPM SDK与 RISC‑V 工具链。
- 日志/文件系统特性根据 hwdef.dat 配置(例如 HAL_LOGGING_FILESYSTEM_ENABLED)可能默认关闭
- 部分高级功能(如 Extended DShot、IOMCU 双向 DShot 等),目前还不支持。
- 开发时请注意安全,未进行严谨验证前,禁止安装电机桨叶。
如何验证与测试
硬件连线:连接 USB/CDC(或 debug probe)到控制台,根据 hwdef.dat 指定的串口波特率接入 Mission Planner / QGroundControl。



基本检查列表:
- 能否通过 MAVLink 建立连接并读取参数
- IMU/Compass/GPS 能否被识别并提供数据(若板上有对应传感器)
- PWM/RC 输出工作正常(对接测试舵机或电机,开启安全措施)