一、概述
先楫半導體的hpm_sdk,對于習慣用keil的開發(fā)者可能不太習慣,但是從開發(fā)角度上看,是比較靈活的,可以給開發(fā)者一定的發(fā)揮空間。該sdk支持cmake構建,可以在多個支持cmake的平臺構建,比如vscode,clion等平臺,構建的同時也會生成segger的IDESEGGER Embedded Studio for RISC-V。對于習慣IDE開發(fā)的,也可以直接上手segger這個SEGGER Embedded Studio,先楫官方也給予免費授權,完全不用擔心商業(yè)授權問題。
如果不習慣segger這個IDE,那么如果有點cmake基礎(當然也可以沒有),習慣用了vscode編輯代碼,那么我想,這篇文章,可以一步到位,使用vscode進行一套開發(fā),包括構建,編譯,燒錄,調(diào)試。本文也是基于此步驟進行說明。
二、開發(fā)流程
(一)構建
hpm_sdk是基于cmake構建開發(fā)的,每個sample都帶一個CMakelist.txt,可以理解為:每個sample都是一個工程。也可以在hpm_sdk外面的路徑進行新建一個 cmake工程進行開發(fā)。
安裝python,起碼python3.7,最好python3.9以上。在構建的時候可能會遇到一些module沒有安裝,請自行根據(jù)報錯進行安裝。
例如:需要安裝jinja2,yaml。
安裝CMAKE:
window系統(tǒng)下的相關構建和編譯燒錄相關的,都可以在官方百度網(wǎng)盤(https://pan.baidu.com/s/1RaYHOD7xk7fnotmgLpoAlA?pwd=xk2n#list/path=%2F,提取碼為xk2n)下載,本文截至發(fā)布日期,目前的sdk版本為sdk_v1.1.0。
hpm_sdk要求的cmake版本不低于3.13,當然官方也提供了安裝包,可以自己指向路徑到環(huán)境變量當中
下載sdk_env_v1.1.0.zip,解壓后,進入tools文件夾,cmake工具下的版本為3.24.0
如果想升級更高的cmake版本,網(wǎng)絡搜索cmake,進入cmake官網(wǎng)(https://cmake.org),點擊download,可以下載最新的,也可以下載開發(fā)者自己喜歡的不低于3.13版本。
安裝cmake之后會提示是否加入環(huán)境變量,請選擇加入環(huán)境變量。
另外構建需要Ninja,官方網(wǎng)盤也同樣提供了ninja可執(zhí)行文件,拷貝此文件,可以存放在本地任意路徑,前提是需要將該可執(zhí)行文件路徑加入到環(huán)境變量中。本文為了方便,直接把ninja拷貝到cmake安裝目錄上。
1. 設置全局環(huán)境變量
在構建之前,需要添加幾個環(huán)境變量到系統(tǒng)當中:GNURISCV_TOOLCHAIN_PATH 和HPM_SDK_BASE
?① GNURISCV_TOOLCHAIN_PATH:表示是hpm_sdk所依賴的編譯器的絕對路徑,也就是開發(fā)者本地路徑。另外也需要將此路徑加入系統(tǒng)環(huán)境變量中。
?② HPM_SDK_BASE:表示是hpm_sdk的絕對路徑,也就是開發(fā)者的本地Hpm_sdk開發(fā)路徑。
另外,也需要將編譯鏈路徑放入到環(huán)境變量當中。方便vscode搜索到編譯器。
?③ Cmake安裝
window系統(tǒng)下的gcc編譯鏈和linux編譯鏈都可以在官方百度網(wǎng)盤(提取碼為xk2n)下載,本文截至發(fā)布日期,目前的sdk版本為sdk_v1.1.0。
從sdk_env_v1.1.0.文件夾進入到toolchains文件夾中,找到rv32imac-ilp32-multilib-win就是編譯鏈工具
2. vscode下cmake插件
在擴展商店搜索cmake,安裝cmake和cmake Tools
?① 在開發(fā)者本地上,根據(jù)自己喜歡新建一個文件夾(用來開發(fā)所需),然后打開vscode,打開應為干凈的工作區(qū),即是沒有任何文件夾。點擊“文件”選擇“將工作區(qū)另存為”,將工作區(qū)保存到新建的文件夾中。
② 點擊"打開文件夾",為了讓vscode能方便全局搜索hpm_sdk相關源文件(當然也可以用json文件包含),把hpm_sdk文件夾包含進來。
?③ 在新建的開發(fā)文件夾中,我們可以新建一個cmake工程,這里為了方便,我們直接拷貝hpm_sdk的sample的文件工程,比如drivers/gpio 文件。
④ 再把拷貝的gpio工程,點擊vscode右鍵添加到工作區(qū)當中
⑤ 添加完畢后,cmake工具欄下,會出現(xiàn)兩個文件夾目錄,我們切換到gpio這個文件夾
⑥如上圖所示,kit工具鏈提示需要選擇,這里我們選擇上述所說的工具鏈(前提已經(jīng)設置為全局環(huán)境變量)
⑦ cmake構建的是用常規(guī)的構建type,比如Debug, release等構建,這些在hpm_sdk認為都是在RAM執(zhí)行。所以有必要自定義個type.
在gpio文件夾中,我們可以新建一個.vscode文件,并在里面新建一個settings.json,這個主要用來配置vscode以及相關插件的配置文件。
構建時候需要需要選擇cmake build type,還需要選擇board type,因為hpm_sdk包含了先楫目前發(fā)布的官方評估板,需要開發(fā)者自己去指定,所以我們可以通過加入cmake的構建參數(shù)指定Board.本文所選的是hpm6200evk。
本文需要生成編譯在flash執(zhí)行的固件,根據(jù)hpm_sdk的構建類型,我們可以選擇flash_xip這個類型來進行構建。當然也可以按照以下照葫蘆畫瓢構建其他hpm支持的構建類型
如此再次點擊cmake 構建的時候,就出現(xiàn)以上我們添加的構建類型。
settings.json文件如下:
?
{ "cmake.configureArgs": [ "-DBOARD=hpm6200evk" //傳遞給cmake的配置參數(shù),表明選擇的board ], "cmake.defaultVariants": { "buildType": { "choices": { "flash_xip": { //buildType加入flash_xip,表示支持該類型構建 "short":"flash_xip", "long":"先楫構建 - flash構建", "buildType": "flash_xip" } } } } }
?
其他cmake插件參數(shù)具體可以看插件說明以及系統(tǒng)的settings.json文件。
如此,我們新建的cmake gpio工程就此構建完成
(二 )編譯
有了上面構建的基礎,我們直接在cmake工具欄上點擊build,直接就可以編譯了。
另外:如果不想用cmake插件工具,我們可以在任意終端窗口進行構建編譯,比如powershell。
(三) 燒錄調(diào)試
vscode下的燒錄調(diào)試,使用的是cortex_debug插件,這個跟是不是arm沒什么關系,只要設置好相關gdb相關路徑即可。
1、安裝Cortex_Debug插件,打開擴展設置,點擊在"settings.json 中編輯"。
2、編輯以下三個參數(shù),也就是gdb的路徑,jlinkGdb路徑(用于jlink調(diào)試),openocd路徑(用于openocd調(diào)試)
參數(shù)如下:
?
"cortex-debug.gdbPath.windows":?"your?path\sdk_env_v1.1.0\toolchains\rv32imac-ilp32-multilib-win\bin\riscv32-unknown-elf-gdb.exe", "cortex-debug.JLinkGDBServerPath.windows":?"your?pathsegger\JLink\JLinkGDBServerCL.exe", "cortex-debug.openocdPath.windows":?"your?pathsdk_env_v1.1.0\tools\openocd\openocd.exe",
?
3、完成之后,點擊vscode左邊工具欄的"運行與調(diào)試" ,點擊創(chuàng)建launch,json文件。選擇gpio這個工程文件夾,后選擇cortex_debug,就會在對應的文件夾中生成launch,json文件
4、對于jlink配置。需要指定elf文件路徑,以及選擇的芯片型號,接口。
配置:
?
{ // 使用 IntelliSense 了解相關屬性。 // 懸停以查看現(xiàn)有屬性的描述。 // 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "cwd": "${workspaceFolder}", "executable": "${workspaceFolder}/build/output/demo.elf", "name": "hpmicro_jlink_debug", "request": "launch", "type": "cortex-debug", "device": "HPM6280xPAx", "runToEntryPoint": "main", "showDevDebugOutput": "none", "interface": "jtag", "servertype": "jlink", } ] }
?
5、對于openocd配置如下:需要指定openocd的配置文件路徑,比如probes、soc、boards的cfg文件
配置:
?
{ // 使用 IntelliSense 了解相關屬性。 // 懸停以查看現(xiàn)有屬性的描述。 // 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "cwd": "${workspaceRoot}", "executable": "${workspaceFolder}/build/output/demo.elf", "showDevDebugTimestamps": "raw", "name": "HPM_dapDebug", "request": "launch", "type": "cortex-debug", "servertype": "openocd", "configFiles": [ "your path\sdk_env_v1.1.0\hpm_sdk\boards\openocd\probes\ft2232.cfg", "your path\sdk_env_v1.1.0\hpm_sdk\boards\openocd\soc\hpm6280-single-core.cfg", "your path\sdk_env_v1.1.0\hpm_sdk\boards\openocd\boards\hpm6200evk.cfg" ], // "searchDir": [], // "runToEntryPoint": "__start()", // "showDevDebugOutput": "none" } ] }
?
6、配置完畢之后,點擊調(diào)試按鈕,即可下載調(diào)試。
評論
查看更多