五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【Leo的手記】Linux平臺使用CMake和GCC工具鏈開發(fā)CH32V003

2023-07-07 12:36 作者:神棍技術(shù)宅Leo  | 我要投稿

0. 準備工作

0.1 開發(fā)庫與開發(fā)工具鏈

所使用的開發(fā)庫與開發(fā)工具鏈如下

  • 沁恒官方提供的固件庫

  • RISC-V Embedded GNUC交叉編譯工具鏈

  • 沁恒官方提供的Openocd

  • VSCode

對于RISC-V Embedded GNUC交叉編譯工具鏈和Openocd在MounRiver官網(wǎng)提供的MRS_Toolchain_Linux工具包中有包含。下載以后自行安裝和配置路徑。

1.項目建立

按照統(tǒng)一的結(jié)構(gòu)來創(chuàng)建項目目錄與項目文件。在項目根目錄中創(chuàng)建如下目錄與文件。

  • app :目錄,用于存放業(yè)務(wù)邏輯相關(guān)代碼

  • system :目錄,用于存放系統(tǒng)支持相關(guān)代碼

  • link.ld :鏈接腳本文件,從官方庫中拷貝,用于鏈接

  • startup_ch32v00x.S :啟動文件,從官方庫中拷貝

  • CMakeLists.txt :CMake構(gòu)建腳本

在app目錄中新建main.c,用于存放主函數(shù)代碼。

在system目錄中,創(chuàng)建如下目錄

  • peripheral :外設(shè)庫存放目錄,將官方庫中的相關(guān)代碼放入該目錄。

  • platform :平臺相關(guān)代碼,用于存放RISCV內(nèi)核相關(guān)結(jié)構(gòu),將官方庫中的core_riscv.c和core_riscv,h放入

  • supports.c :系統(tǒng)支持源文件,新建

  • supports.h :系統(tǒng)支持頭文件,新建

在外設(shè)庫的頭文件存放目錄中,新建頭文件ch32v00x_libs.h,用于包含外設(shè)頭文件。如下

至此,項目目錄結(jié)構(gòu)構(gòu)建完成。

2. 編寫系統(tǒng)相關(guān)支持庫

該步驟主要編寫supports.c與supports.h

2.1 編寫supports.h

在supports.h中主要聲明SystemCoreClock全局變量與系統(tǒng)延時相關(guān)函數(shù)。代碼如下

在supports.c中包含該頭文件

2.2?編寫中斷服務(wù)函數(shù)與系統(tǒng)時鐘配置函數(shù)

在supports.c中加入如下代碼

2.3 編寫系統(tǒng)延時相關(guān)函數(shù)

在不使用RTOS的情況下,系統(tǒng)使用SysTick定時器實現(xiàn)延時。添加如下代碼

2.4 編寫SystemInit函數(shù)

在最后添加SystemInit函數(shù),該函數(shù)由啟動文件調(diào)用,在main函數(shù)執(zhí)行之前初始化系統(tǒng)資源。

如下

3. 編寫主函數(shù)

在app目錄下的main.c中添加如下代碼

該代碼實現(xiàn)了對于PD6的翻轉(zhuǎn)。

4. 編寫CMakeLists.txt

構(gòu)建腳本如下

這里額外說一個我踩的坑,因為官方?jīng)]有給出GCC工具鏈構(gòu)建選項的參考,因此我原本是直接使用CH32V103的編譯選項,后來發(fā)現(xiàn)一直進入Hardfault,最后單步調(diào)試發(fā)現(xiàn)是因為執(zhí)行了除法,所以進入了Hardfault,如此可以大概猜測,既然不是非法內(nèi)存操作導(dǎo)致進入Hardfault,那執(zhí)行除法進入Hardfault大概率是因為執(zhí)行了非法指令。后來經(jīng)過查看手冊發(fā)現(xiàn),CH32V103所支持的指令集為RV32IMAC,而CH32V003所支持的指令集為RV32EC,修改后錯誤消除。

5. 編譯與燒錄

5.1 編譯

在項目根目錄打開終端,輸入

即可完成編譯。

5.2 燒錄

需要注意的是,CH32V003使用三線串行調(diào)試接口,不包含SWCLK信號,只有WCH-LINKE支持。連接WCH-LINKE,在項目根目錄打開終端,輸入

在此我是寫成了一個腳本用于方便下載

需要注意的是,以上代碼下載之后需要手動復(fù)位一下程序才能運行。

以上

【Leo的手記】Linux平臺使用CMake和GCC工具鏈開發(fā)CH32V003的評論 (共 條)

分享到微博請遵守國家法律
屏边| 正安县| 卓尼县| 诸城市| 罗平县| 鄂托克旗| 贡嘎县| 化德县| 永宁县| 新民市| 得荣县| 彰化县| 柘城县| 正定县| 安吉县| 锦屏县| 阳朔县| 苍溪县| 内乡县| 灵台县| 夏邑县| 定日县| 团风县| 逊克县| 桑植县| 荔波县| 太康县| 玛纳斯县| 城市| 泊头市| 义乌市| 商城县| 峨山| 仙居县| 肃南| 葵青区| 聂荣县| 台北县| 山阴县| 富锦市| 桃园市|