# hpm5300_ocd_link **Repository Path**: uyami/hpm5300_ocd_link ## Basic Information - **Project Name**: hpm5300_ocd_link - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-02-25 - **Last Updated**: 2024-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 为了方便连接HPM5321的板子做的openocd配置文件 使用daplink (jtag)连接 原本是为了写ocd烧录器的. 然后发现hpm_sdk编译项目是编译到ILM上运行的(相当于SRAM) 结果先搁置了 ### 此芯片的特征 1.默认下XIP0连接到内部的flash,应该是qspi接口的.并且初始化都是0xff 2.有关设置nor_config_option_t的0字节 (长度)需要包括所有参数.1表示一个参数,2表示两个参数... 待添加... ##### 1.下载HPM_SDK ##### 2.下载MRS (MounRiver_Studio) 注:某RISCV开发环境 ##### 3.设置HPM_SDK_TOOLCHAIN_VARIANT 为riscv-none-embed-gcc ##### 4.然后把hpm_sdk.zip解压到HPM_SDK 覆盖其中的文件 设置HPM_SDK_BASE为HPM_SDK目录 (比如下面的命令) set HPM_SDK_BASE=d:\src 进入samples/hello_world目录,执行命令 mkdir build cd build cmake -DBOARD=hpm5300evk .. -DCMAKE_BUILD_TYPE=release 注:编译项目可能会出现ILM空间不够使用,需要删减一些模块,在soc_modules.list 文件里修改 生成程序后 openocd -f link.cfg -f hpm5300.cfg 再另起命令行执行 riscv-none-embed-gdb 在gdb控制台下执行 target remote :3333 restore demo.bin binary 0x0 set $pc=0 注:这里的demo.bin 是sample/hello_world/build/outout/demo.bin 在VSCODE下,增加调试配置 添加 "(gdb) 启动" 添加模块 可参考hpm_sdk.zip/.vscode/launch.json ## 烧录程序的简化命令 (XPI0) make -f ocd_write.mk BIN=demo.bin 注:demo.bin是由HPM_SDK生成的bin程序.只能是-DCMAKE_BUILD_TYPE=release_flash_xip或者debug_flash_xip ## 烧录程序到内部flash详细步骤 (XPI0) ### 1.编译项目的要求 编译项目时,cmake指令需要 cmake -DBOARD=hpm5300evk .. -DCMAKE_BUILD_TYPE=release_flash_xip 或者是调试版本 debug_flash_xip ### 2.使用lua脚本生成openocd的脚本写入 lua bin2tcl.lua demo.bin write.bin >write_flash.tcl ### 3.使用openocd连接板子 openocd -f link.cfg -f hpm5300.cfg -f hpm5300_flash.cfg ### 4.使用telnet连接openocd telnet localhost 4444 ### 5.进入telnet执行命令如下 flash_erase source write_flash.tcl 注1:flash_erase 为擦除命令,write_flash.tcl由bin2tcl.lua生成 注2:demo.bin,write_flash.tcl的文件必须放在本目录下 ### PCB设计注意事项 小封装的DCDC模块,少了几个引脚. 所以要求会变高.DCDC_LP输出到电感后,需要加两个22uF的电容,或者更大的电容.如果过小,则会起振失败.比如10uF就失败了, dcdc的占空比逐渐升高,直到输出1.6v则会退出dcdc.然后关闭芯片供电