参考文献
条件
HPM5301evklite,调试器选用了daplink,但是需要支持jtag调试的,强烈推荐南航无线dap和淘宝无线dap,能调arm和ch32的哪家,我没收他俩广告费
hpm官方sdk与sdk_env
HPMicro Semiconductor Ltd · GitHub
env自带了toolchain,但是也可以用andes的 ,据说是只有andes的才能发挥RV的全部实力
GitHub - andestech/nds-gnu-toolchain: GNU toolchain for AndesCore
开发环境配置
添加环境变量,请忽略下图的GNNRISCV_ToolChain的环境变量,那个已经删掉了
PS:toolchain的环境变量指向的目录不要带bin,否则编译会有问题
工具链在ENV里面带了,填进去就行,最新的13.2
CLion开发
hpm sdk生成工具在Clion中打开
工具链如图
报错
加上这个试试
成功
不过这个目录有点怪啊,我原本以为是直接复制出来一份例程,没成想还是改原来的?
这个问题跳转到SDK本地化开发解决。
有个问题,上图的这个编译实际上是不对的,应该在这里设置一下
可执行文件这个把elf文件选上,正常编译结果下图所示,别的型号的片子也差不多
本地化开发
本地化开发是依托答辩,建议把sample里面的例程直接复制过来,加上Cmake的参数就行了,跟上面步骤是一样的
OpenOCD 下载与调试
openocd必须用HPM的env里面提供的openocd,CLion开发实测不需要将其添加到环境变量中,只需指定即可
一个bug
我的实际目录是这样的
但是呢,来看看CLion,
没有图了,用人话说就是CLion的这个目录里面看不到这个openocd![]()
另外还需要对env_sdk的openocd目录做一点手脚,熟悉openocd的同学们应该能发现实际上env里面这个openocd是不完整的,CLion也会提示找不到scripts/board,这个东西实际上在sdk里面
所以,要把这些东西复制到env的openocd/scripts目录里面
这个时候CLion应该不会报错了,接下来是编写面板配置文件(.cfg)
bindto 0.0.0.0
adapter speed 8000
adapter srst delay 500
adapter driver cmsis-dap
transport select jtag
source [find soc/hpm5300.cfg]
flash bank xpi0 hpm_xpi 0x80000000 0x2000000 1 1 $_TARGET0 0xF3000000 0x6 0x1000
proc init_clock {} {
$::_TARGET0 riscv dmi_write 0x39 0xF4002000
$::_TARGET0 riscv dmi_write 0x3C 0x1
$::_TARGET0 riscv dmi_write 0x39 0xF4002000
$::_TARGET0 riscv dmi_write 0x3C 0x2
$::_TARGET0 riscv dmi_write 0x39 0xF4000800
$::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
$::_TARGET0 riscv dmi_write 0x39 0xF4000810
$::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
$::_TARGET0 riscv dmi_write 0x39 0xF4000820
$::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
$::_TARGET0 riscv dmi_write 0x39 0xF4000830
$::_TARGET0 riscv dmi_write 0x3C 0xFFFFFFFF
echo "clocks has been enabled!"
}
$_TARGET0 configure -event reset-init {
init_clock
}
$_TARGET0 configure -event gdb-attach {
reset halt
}
reset_config srst_only
这个实际上是hpm5301evklite.cfg和probe/cmsis-dap.cfg的缝合体,以及又加上了一点我自己的屎
如果你要是用6200evk去开发,就把find soc那句改成hpm6280.cfg,这些文件都在openocd/scripts/soc里面
再把下面的flash相关的东西从board的cfg偷过来就行了。
调试起来挺舒服的,不过速度相比较stm32g474-nucelo来说略有一点点卡,
更新
bindto 0.0.0.0
adapter speed 8000
adapter srst delay 500
adapter driver cmsis-dap
transport select jtag
source [find soc/hpm5300.cfg]
source [find board/hpm5301evklite.cfg]
reset_config srst_only
舒服了,直接调就行了,跟stm32的cfg差不多一个写法