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 非必要路径
Comments NOTHING