Ubuntu环境搭建华大 HC32f460KETA编译、仿真环境
- keywords : hc32f460keta,ubuntu ,eclipse , pyocd ,daplink
近期买了一块华大半导体的HC32F460KETA 的开发板, 官方带的例程、环境搭建说明都是基于MDK的,确实MDK和很好用, 直接导入pack 之后,就可以编译、Debug 仿真,但是如果没有授权的话,有编译文件大小限制, 另外平时使用ubuntu比较多,项目自动编译、测试也需要makefile化,尝试自己搭建了一套 ubuntu下的编译、调试环境。
目前尝试的环境:
win +keli 5 st-link v2 、daplink 均可正常使用
ubuntu20.04 + eclipse + gcc arm toolchain st-link v2 没有配置文件不支持,pyocd 可以支持
ubuntu20.04 手写makefile+gcc arm toolchain 可以编译,但是打出来的hex 文件无法执行, 正在对比eclipse 和makefile的 编译流程。
搭建过程:
1、安装
ubuntu 20.04
下载eclipse for embed cpp ,如果速度慢的话可以选择国内mirror 下载,链接
https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2021-12/R/eclipse-embedcpp-2021-12-R-linux-gtk-x86_64.tar.gz&mirror_id=1142
下载gcc-arm-toolchain 我这里选择的 gcc-arm-none-eabi-9-2020-q2-update linux下的 tar.gz
下载地址: https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
解压缩gcc-arm-toolchain 到 /usr/share/gcc-arm-none-eabi
解压缩 eclipse
ubuntu 安装 pyocd
sudo apt-get install pyocd
系统会自动安装相关组件,
然后看下pyocd 的路径 ,
which pyocd
一般是
/usr/local/bin/pyocd
记下这个地址
插上daplink ,daplink 我买的淘宝上 12.8 包邮的, 虽然用的国产am32f103 的芯片, 但是便宜好用。
项目配置
导入官方例程项目,或者自己新建项目都可以,官方的例程,eclipse 项目文件在gcc目录下, 如
hc32f460_ddl_Rev2.2.0\example\ev_hc32f460_lqfp100_v2\gpio\gpio_output\GCC
到如到 eclipse里之后,设置项目属性
我选择了自建项目比较繁琐, 不推荐
选择 c/c++ build 项, setting 这个页面,然后选择 toolchain 这tab 检查相关设计,尤其是这两个宏定义。
MPU选项,确认自己的armtoolchain安装位置和实际一致,我是临时扔这里了,最好放到 前面提到的usr目录下
buildtools 比arm-toolchain 深一层,在
配置pyocd,指向安装的目录
配置pyocd,记得插上daplink
选择SVD文件的位置,配置好之后可以直接看mcu 的寄存器
其中daplink 和开发板的接线,基本就是平行链接
daplink | hc32f460 |
---|---|
rst | rst |
GND | GND |
SCK | SCK |
SWD | SWD |
3.3v | 3.3v |
可以愉快的debug了:
注意要点:
- 无需让芯片进入到boot模式,(比如你按照stm32的习惯,按 boot+rst 或者短接boot让芯片进入到boot模式)进入到boot模式反而无法进行debug,直接插电就行
- 不要掉到hc swd 针脚复用的坑里,
hc32f460系列 PA13\PA14\PB4\PA15
分别和 SWDIO、SWCLK\nTRST\TDI
这几个debug用的针脚复用,默认的是SWD 功能,也就是这几个针脚默认用来debug的,而如果开发板led灯是在PB4 上,如果用了 PORT_DebugPortSetting(ALL_DEBUG_PIN,Disable )来设定的话, 等可以点量,但是下次在用st-link进行调试就不行了
此时必须用usb-ttl 使用hdsc工具,删除擦除整个flash 才能恢复
但是如果不改复用的话,灯又点不亮,可以仅禁用RST功能
PORT_DebugPortSetting(TRST,Disable );
既可以debug,又不会影响点灯