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调试

如何构建

  1. 安装 RISC‑V 工具链(如 riscv32-unknown-elf-gcc)并将其加入 PATH。

    https://github.com/hpmicro/riscv-gnu-toolchain

  2. 克隆仓库

    git clone git@github.com/hpmicro/ardupilot
    git submodule init
    git sbumodule update

    3.使用 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 copter

    Waf 会调用 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 输出工作正常(对接测试舵机或电机,开启安全措施)
0
0

订阅

发表回复 0

Your email address will not be published. Required fields are marked *

captcha
Enter the characters shown in the image:
Reload

This CAPTCHA helps ensure that you are human. Please enter the requested characters.