HPM SDK 工程化开发指南:环境搭建到双核部署

Babel36acl 学习笔记 无~ 45 次阅读 预计阅读时间: 7 分钟 发布于 1 天前 最后更新于 15 分钟前 1620 字


HPM SDK(HPM6750 双核平台)的工程化开发完整指南:从环境搭建、CMake 构建体系、VSCode 配置到调试链和双核 FreeRTOS 部署。

一、环境搭建

1.1 工具链依赖

工具 最低版本 用途
CMake 3.13 构建系统
Python 3.8 SDK 脚本
Ninja 最新 构建加速
RISC-V GCC 2023.10 编译
OpenOCD 0.11+ 调试烧录
Segger JLink V7.94+ 调试器

1.2 SDK 获取

# 克隆 SDK
git clone https://github.com/hpmicro/hpm_sdk.git
cd hpm_sdk
git submodule update --init

# 设置环境变量
export HPM_SDK_BASE=$(pwd)
echo 'export HPM_SDK_BASE=/path/to/hpm_sdk' >> ~/.zshrc

# 安装 Python 依赖
pip install -r requirements.txt

二、CMake 构建体系

2.1 核心概念

HPM SDK 的 CMake 构建体系基于以下几个概念:

flowchart LR
    subgraph SDK[HPM SDK]
        S1[CMake 构建体系]
        S2[双核部署]
    end
    subgraph TOOL[工具链]
        T1[RISC-V GCC]
        T2[Segger JLink]
    end
    subgraph TARGET[目标]
        TG1[HPM6750]
        TG2[FreeRTOS 双核]
    end
    SDK --> TOOL --> TARGET
    style SDK fill:transparent,stroke:#8dc7ff,color:#eaf4ff
    style TOOL fill:transparent,stroke:#8dc7ff,color:#eaf4ff
    style TARGET fill:transparent,stroke:#8dc7ff,color:#eaf4ff
  • Board:板级定义,包含引脚映射、时钟配置、外设初始化
  • SoC:芯片级定义,包含内存映射、中断向量、外设寄存器
  • Application:用户应用代码
  • SDK 组件:驱动库、中间件、FreeRTOS 等

2.2 创建一个新项目

# 使用 sdk 提供的模板
cp -r $HPM_SDK_BASE/samples/hello_world my_project
cd my_project

# 构建(指定 board 和 build type)
cmake -DBOARD=hpm6750evkmini -DCMAKE_BUILD_TYPE=debug -B build
cmake --build build

2.3 CMakeLists.txt 结构

cmake_minimum_required(VERSION 3.13)

# 导入 SDK
include($ENV{HPM_SDK_BASE}/cmake/hpm_sdk.cmake)

# 声明项目
project(my_project C ASM)

# 添加源文件
sdk_app_src("src/main.c")
sdk_app_src("src/app_task.c")

# 声明 FreeRTOS 组件
sdk_app_component("freertos")

三、VSCode 配置

3.1 扩展推荐

  • CMake Tools — CMake 构建集成
  • Cortex-Debug — 调试支持
  • clangd — 代码补全、跳转

3.2 settings.json

{
  "cmake.configureSettings": {
    "BOARD": "hpm6750evkmini",
    "CMAKE_BUILD_TYPE": "debug"
  },
  "cmake.buildDirectory": "${workspaceFolder}/build",
  "clangd.path": "/usr/bin/clangd",
  "C_Cpp.default.compilerPath": "/opt/riscv/bin/riscv32-unknown-elf-gcc"
}

3.3 tasks.json — 烧录任务

{
  "version": "2.0.0",
  "tasks": [{
    "label": "flash",
    "type": "shell",
    "command": "openocd",
    "args": [
      "-f", "board/hpm6750evkmini.cfg",
      "-c", "program build/my_project.elf verify reset exit"
    ]
  }]
}

四、调试链

4.1 launch.json (Cortex-Debug)

{
  "version": "0.2.0",
  "configurations": [{
    "name": "HPM Debug",
    "type": "cortex-debug",
    "request": "launch",
    "servertype": "openocd",
    "serverpath": "/usr/bin/openocd",
    "configFiles": ["board/hpm6750evkmini.cfg"],
    "executable": "${workspaceFolder}/build/my_project.elf",
    "armToolchainPath": "/opt/riscv/bin"
  }]
}

4.2 双核调试

HPM6750 有 M33(主核)+ DSP(从核)双核架构:

  • 主核:运行 FreeRTOS + 应用逻辑
  • 从核:运行 DSP 算法(音频处理、滤波等)
  • 调试时需启动两个 OpenOCD 实例,分别连接两个核

五、工程化落地要点

  • 多板卡管理:通过 BOARD 变量切换,不同板卡用不同 defconfig
  • SDK 版本锁定:仓库内记录 HPM_SDK_TAG,CI 中 checkout 指定版本
  • 自动化测试:用 OpenOCD + Python 实现 batch 烧录 + 回归测试
  • 双核通信:使用 RPMsg-Lite 或共享内存 + 标志位
  • clangd 索引优化:生成 compile_commands.json,clangd 配置 .clangd 文件排除 SDK 非必要路径

相关文章

此作者没有提供个人介绍。
最后更新于 2026-05-30