- 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所需板级文件
- 构建系统集成:
- 外部依赖
- 需要 HPM SDK源码,已作为工程子模块引入
- RISC‑V 工具链(例如 riscv32-unknown-elf)。
- 示例与默认映射:
- 操作系统FreeRTOS,支持使用gptmr作为系统定时器,支持tickless模式,支持向量模式,支持traceRecorder调试
如何构建
- 安装 RISC‑V 工具链(如 riscv32-unknown-elf-gcc)并将其加入 PATH。https://github.com/hpmicro/riscv-gnu-toolchain
- 克隆仓库
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 输出工作正常(对接测试舵机或电机,开启安全措施)
233
