1 简介
HPM6700/6400 系列 MCU 是来自上海先楫半导体科技有限公司的高性能实时 RISC-V 微控制器,为工业自动化及边缘计算应用提供了极大的算力、高效的控制能力及丰富的多媒体功能。
HPM SDK是一个基于宽松使用许可(BSD 3-Clause)完全开源的综合性软件支持包,帮助用户使用先楫半导体基于RISC-V内核的MCU简化和加快应用开发。
HPM SDK包括第三方工具软件、硬件驱动软件、集成实时操作系统、中间件、参考例程以及说明文档等。HPM SDK支持用Cmake为Segger和GCC提供示例项目,并同时集成进RT Thread、Zephyr等开源项目中。
本文介绍了先楫半导体高性能MCU配套的HPM SDK(以下可简称SDK)在Linux系统上开发环境搭建指导说明,包括IDE Segger Embedded Studio(以下简称SES)安装调试说明。
2 环境准备
- 硬件环境准备
- HPM MCU的开发板:例如HPM6750 EVK开发板或HPM6750 EVK mini开发板。
- 一条USB-TypeC线缆,用于给HPM6750 EVK mini开发板供电,以及调试。
- 一台PC主机或者笔记本电脑。
- 软件环境准备
- Linux建议使用 Ubuntu 18 以上的 LTS 版本。
- Linux环境交叉编译工具链:riscv32-gnu-toolchain-linux.zip
- Linux环境openocd工具:openocd_linux_x86-64.tar.gz
- 运行sdk_env\tools\FTDI_InstallDriver.exe 以安装可用于调试的FT2232 驱动。
- HPM SDK
3 环境搭建
A 工具安装
sudo apt install build-essential cmake ninja-build libc6-i386 libc6-i386-cross libstdc++6-i386-cross

B 串口工具cutecom安装
sudo apt install cutecom

C Python安装
sudo apt install python3 python3-pip

D 环境变量配置
- 下载riscv32-gnu-toolchain-linux.zip工具链压缩包,并解压到任意目录;
- 下载openocd_linux_x86-64.tar.gz工具压缩包,并解压到任意目录;
- 下载HPM SDK,并解压到任意目录;
- 申明系统环境变量“GNURISCV_TOOLCHAIN_PATH”指向工具链路径;
- 申明系统环境变量“HPM_SDK_BASE”指向SDK根目录;
- 申明系统环境变量“OPENOCD_SCRIPTS”指向SDK目录borads/openocd;
- 添加openocd工具路径到bash变量;
为了安全起见,修改.bashrc文件添加环境变量:
vi ~/.bashrc
注意:修改.bashrc文件后必须重启终端才能生效。
在文件末尾添加:
export GNURISCV_TOOLCHAIN_PATH=/home/zhangeg/work/toolchain/riscv32-gnu-toolchain-linux
export HPM_SDK_TOOLCHAIN_VARIANT=
export HPM_SDK_BASE=/home/zhangeg/work/hpm_sdk
export OPENOCD_SCRIPTS=$HPM_SDK_BASE/boards/openocd
export PATH=$PATH:/home/zhangeg/work/toolchain/openocd_linux_x86-64/bin/
注意:路径替换为自己的实际路径


编辑保存.bashrc文件后,重启终端。
E 安装python依赖包
pip3 install --user -r $HPM_SDK_BASE/scripts/requirements.txt

4 构建编译
A 切换到示例hello_world目录:
cd samples/hello_world

B 创建build目录并进入:
mkdir build
cd build

C Ninja-build产生构建文件:
cmake -GNinja -DBOARD=hpm6750evkmini ..

D ninja编译:
ninja

当编译完成后,生成的elf以及对应其他文件可以在output目录中找到。

5 调试运行
A. 切换目录到openocd:
PC电脑连接HPM6750 EVK mini开发板。
切换到sdk boards/openocd目录:

B. 运行openocd:
需要按顺序指定配置文件: 调试器配置, 内核配置, 目标板配置。例如,通过ft2232在hpm6750evkmini上进行单核调试,可以运行如下命令:
openocd -f probes/ft2232.cfg -f soc/hpm6750-single-core.cfg -f boards/hpm6750evkmini.cfg

注意:
如遇到:
1.Error: libusb_open() failed with LIBUSB_ERROR_NOT_FOUND,检查FTDI usb驱动。如果驱动未正确安装,请重新安装。
2.Error: libusb_open() failed with LIBUSB_ERROR_ACCESS,权限问题:sudo chmod -R 777 /dev/bus/

C. 打开串口cutecom工具:
打开串口cutecom工具,设置波特率115200,并打开串口。

D. GDB调试运行:
打开另一个终端,切换到hello_world目录
cd samples/hello_world
启动GDB client调试:
$GNURISCV_TOOLCHAIN_PATH/bin/riscv32-unknown-elf-gdb

依次运行gdb指令:
gdb> file build/output/demo.elf
gdb> target remote localhost:3333
gdb> load
gdb> b main
gdb> c

运行后,可在串口工具打印“hello_world”:

6 Segger Embedded Studio安装激活
- SES下载
Segger Embedded Studio for RISC-V 可以从 https://www.segger.com/downloads/embedded-studio/ 下载。

下载linux版本,并解压。
- SES 安装
sudo ./install_segger_embedded_studio

依次next 直到finsh。



- SES激活
激活流程:
http://www.hpmicro.com/support/detail.html?id=e9b65dc7-4cb4-4749-bf41-dbb9e725c32b
7 Segger Embedded Studio编译调试
注意:关闭调试运行时打开的openocd及gdb client终端。
- 双击打开工程:



- 工程配置确认:
理论上不做任何修改。



- 工程编译

- 调试运行



更详细的SES使用方法,可以参考SES的帮助手册。