[EVK_UserGuide]HPM EVK 软件开发套件
文中以板载 FT2232 的 HPM6E00EVK 开发板、在 Windows 操作系统上为例进行说明,其他 HPM 系列开发板的使用方法与之类似。
1 简介
本文介绍 HPM SDK 软件开发套件的功能特性与使用方法,包括开发环境搭建、工程创建与编译、调试器配置及常见问题处理等内容,帮助用户快速掌握软件开发流程。
HPM SDK(HPM 软件开发套件,以下简称 SDK )是基于 BSD 3-Clause 许可证发布的 HPM 系列 SoC 底层驱动软件包,提供了 SoC 上各 IP 模块的底层驱动代码,并集成了多种中间件与 RTOS 。
2 开发环境搭建
SDK 开发环境支持以下两种搭建方式,用户可根据自身需求选择:
- 使用 sdk_env 工具:sdk_env 集成了 SDK 及所需工具链,开箱即用,适合快速上手。
- 手工搭建 SDK 开发环境:用户可自行下载 SDK 及工具链并配置环境变量,灵活性更高,具体步骤请参考 SDK 目录下 README.md 文件。
3 开发工具
HPM_SDK 支持第三方 IDE 开发,如 Segger Embedded Studio for RISC-V。
Segger Embedded Studio 提供了基于 C/C++ 的专业嵌入式开发所需的各种工具和特性,包括工程管理器与构建系统、含代码补全和折叠功能的源代码编辑器,以及用于下载和安装板卡及器件支持包的分包管理系统。
先楫半导体向用户提供免费商用的 license,用户可在以下网址申请:https://license.segger.com/hpmicro.cgi
4 快速使用指南
-
下载安装 Segger Embedded Studio,本文档使用版本号为 8.10
软件相关版本号需要适配 sdk,具体支持版本号参见 sdk 中
CHANGELOG.md -
下载最新版本
sdk_env_vx.x.x.zip压缩包后解压(本文以sdk_env_v1.6.0为例)
> 解压目标路径中只可包含英文字母以及下划线,不可包含空格、中文等字符。 -
安装调试器驱动
- 对于板载基于 HPM5301 的 HSLink 调试器的开发板,不需要另外安装驱动程序
- 对于板载 FT2232 的开发板,运行
sdk_env_v1.6.0\tools\FTDI_InstallDriver.exe以安装可用于调试的 FT2232 驱动。

图 1 安装 FTDI 驱动
正确安装驱动后,使用 USB Type-C 线缆将 HPM6E00EVK 上的 J16 连接到 PC,在 Windows 设备管理器中可看到一个 USB Serial Port 以及一个 Dual RS232-HS (Interface 0)。

图 2 查看 Windows 设备管理器
- sdk_env 目录下有两种创建工程的方式,即命令行工具和 GUI Project Generator 工具,用户可根据喜好自行选择。

图 3 sdk_env 创建工程方式
以命令行工具为例,双击打开 sdk_env_v1.6.0 下 start_cmd.cmd ,该脚本将打开一个 Windows command prompt (以下简称为 sdk prompt ),如果之前步骤配置正确,将会看到

图 4 打开 sdk prompt
- 在 sdk_prompt 中将路径切换到 SDK 中的一个示例例程,以 hello_world 为例
cd hpm_sdk\samples\hello_world
- 运行以下命令查询支持的目标板
generate_project -list
- 确认目标板名称后(以 HPM6E00EVK 为例),可通过以下命令构建工程。若构建成功,将看到如下提示:
generate_project -b hpm6e00evk -f

图 5 构建目标板工程
generate_project 可以生成多种工程类型,例如 flash_xip (链接完成后,应用程序将在 flash 地址空间原地执行)和 debug (链接完成后,应用程序将在片上 sram 中执行,掉电后程序不能保存)等。
generate_project -b hpm6e00evk -f -t flash_xip

图 6 构建目标板 flash_xip 工程
更多 generate_project 的使用方法可通过以下命令查看。
generate_project -h

图 7 generate_project 帮助
- 当前目录下将生成名为
hpm6e00evk _build的文件夹,该目录下segger_embedded_studio的目录中可找到 Segger Embedded Studio 的工程文件hello_world.emProject,双击可打开该工程。

图 8 Segger Embedded Studio 打开 hello_world 工程
- 使用 Segger Embedded Studio 打开 hello_world 工程即可进行编译。

图 9 Segger Embedded Studio 编译 hello_world 工程
- 使用 Segger Embedded Studio 进行 hello_world 调试。

图 10 Segger Embedded Studio 调试 hello_world 工程
- 在 Segger Embedded Studio 中配置串口

图 11 Segger Embedded Studio 中配置串口
- 在 Segger Embedded Studio 中连接串口

图 12 Segger Embedded Studio 中连接串口
- 在 Segger Embedded Studio 中打开串口

图 13 Segger Embedded Studio 打开串口
- 运行 hello_world

图 14 Segger Embedded Studio 运行 hello_world
- sdk_env 提供了 GUI project generator 工具,用户亦可使用该工具生成工程。

图 15 start_gui 工具
- 双击打开
start_gui.exe

图 16 GUI project generator 工具操作界面
- 在 GUI project generator 界面中的
SAMPLES下拉列表中选择hello_world,在BOARDS下拉列表中选择hpm6e00evk,在TYPE下拉列表中选择flash_xip。点击Generate Project按钮,即可生成 flash_xip 类型的 hello_world 工程。

图 17 GUI project generator 生成 hello world 工程
- 点击
Open with IDE(SES)即可打开 hello_world 工程
5 调试出错常见原因
FT2232 驱动没有正确安装
HPM6E00EVK 板载了 FT2232 调试器,方便用户直接调试程序。当使用 FT2232 调试器遇到 GDB Server 连接失败时(如图 19 所示),首先确认 FT2232 驱动是否正确安装。可在设备管理器中检查总线和串口驱动是否已正确安装:应能看到一个 USB Serial Port 和一个 Dual RS232-HS 。

图 19 GDB Server 连接失败
BOOT Pin 配置异常
HPM6E00EVK 的 BOOT Pin 配置也可能影响芯片调试。如果调试失败,可尝试按如下配置调整 BOOT Pin 后复位: BOOT0 = 0 , BOOT1=1 。
原因在于,Flash 内部执行的代码,特别是中断较为频繁时,可能影响芯片进入 debug 模式。通过 BOOT Pin 配置将微控制器置于 bootloader 模式下,可避免未知的中断状态干扰。
如果是生成的 Flash 调试工程,为避免 Flash 内已有代码执行而影响调试连接,可先将 BOOT Pin 调整为 BOOT0 = 0 、 BOOT1=1 ,将芯片复位或重新上电,之后再将 BOOT Pin 调整为 BOOT0 = 0 、 BOOT1=0 ,即从 NOR Flash 启动。最后点击 Debug 按钮开始调试。
调试没有正常退出
如果调试环境依赖 openocd ,有时调试未正常退出,可能导致 openocd 进程驻留,影响下一次调试。在调试出错时,可进入 Windows 任务管理器,查找 openocd.exe 进程并关闭。同样,打开多个 Segger Embedded Studio 窗口时,若其中一个未退出调试状态,再开始另一个环境的调试,也可能导致类似问题。
Debug 跳线帽没有正确配置
为了方便用户调试, HPM EVK 提供了两种调试接口( on board debug-to-JTAG 和 JTAG 直连),两种调试模式不能同时进行。若使用 FT2232-to-JTAG 模式,需将 TRST、 TDI、 TMS、 TDO、 TCK 跳线帽安装;若使用 JTAG 直连方式,则需将这五个跳线帽拔掉。
openocd 没有正确配置
右键点击工程,选择Options,在弹出的对话框中查看 GDB Server ,如图所示,可在 GDB Server Command Line 中查看 openocd 配置文件。

图 20 查看 openocd 配置
SDK 默认配置如图,使用 FT2232 进行调试

图 21 GDB Server 默认配置
若是板载 HSLink 调试器的 EVK 此处默认为 cmsis_dap。
如果用户使用其他调试器,则需要更改此配置文件。以 cmsis_dap 调试器为例,更改后的配置如图所示。

图 22 使用 cmsis_dap 调试器 GDB Server 配置
J-Link 调试器没有正确配置
如果用户使用 Segger 授权的 J-Link 调试器,则需要安装 J-Link 驱动。用户可在以下网站下载 J-Link 驱动程序:
https://www.segger.com/downloads/jlink

图 23 J-Link 驱动下载
安装 J-Link 驱动程序

图 24 J-Link 驱动安装
安装驱动完成后,将 J-Link JTAG 接口连接到 HPM6E00EVK 的 J2 20pin 牛角插座,同时拔掉 TRST 、 TDI 、 TMS 、 TDO 、 TCK 跳线帽。通过 Project -> Options 打开工程配置界面,点击 Debugger 配置项,确保Target Connection配置值为 J-Link ,选中 J-Link 配置项并将 Target Interface Type 选择为 JTAG 。

图 25 Target Connection 设置为 J-Link

图 26 Target Interface Type 设置为 JTAG
6 更新 sdk_env 中的 SDK/toolchain
本节说明如何更新 sdk_env 中的 SDK 及 toolchain ,用户可根据需求按以下步骤操作。
6.1 更新 sdk_env 中的 SDK
- 下载
hpm_sdk并解压缩 - 将解压后的
hpm_sdk放至sdk_env目录下,确保sdk_env\hpm_sdk\目录中存在env.cmd

图 27 更新 SDK
6.2 更新 sdk_env 中的 toolchain
- 下载 toolchain (以
rv32imac_zicsr_zifencei_multilib_b_ext-win.zip为例) - 将解压后的
toolchain放至sdk_env\toolchains目录下,确保sdk_env\toolchains\rv32imafdc-ilp32d-x86_64-w64-mingw32目录中存在bin文件夹。

图 28 覆盖 toolchain
- 编辑 start_cmd.cmd ,更新环境变量 TOOLCHAIN_NAME

图 29 更新 start cmd.cmd 中的 TOOLCHAIN_NAME
- 双击打开
start_gui.exe,在界面中点击右上角目录,点击”SAVE”。即可在 LOG WINDOW 中看到更新完成的提示。Advanced`按钮,在设置列表中找到GNURISCV_TOOLCHAIN_PATH行,点击右侧浏览按钮,选择`C:/HPMICRO/SDK/V160/sdk_env_v1.6.0/toolchains/rv32imac_zicsr_zifencei_multilib_b_ext-win

图 30 更新 start_gui.exe 中的 TOOLCHAIN_NAME

图 31 start_gui.exe 更新 TOOLCHAIN 完成
免责声明
上海先楫半导体科技有限公司(以下简称:“先楫”)保留随时更改、更正、增强、修改先楫半导体产品和/或本文档的权利,恕不另行通知。用户可在先楫官方网站 https://www.hpmicro.com 获取最新相关信息。
本声明中的信息取代并替换先前版本中声明的信息。