那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于RISC-V 架構(gòu)設(shè)計 GD32V 上運行 RT-Thread

FPGA之家 ? 來源:HackforFun ? 作者:HackforFun ? 2021-06-01 11:39 ? 次閱讀

GD32VF103 開發(fā)板去年九月份的時候 RT-Thread 的 Andy Chen 組織定做了一塊 GD32V 開發(fā)板,托 Andy 的福,我也搭車買了一塊。

這塊開發(fā)板小巧精美,供電、燒錄、調(diào)試信息打印都是通過一個 Type-C USB 接口進行,更重要的是它所搭載的主控芯片 GD32VF103 是一顆采用 RISC-V 內(nèi)核設(shè)計的 MCU,這對于對 RISC-V 感興趣的同學來說,具有十足的吸引力。

GD32VF103 系列 SOC 是兆易創(chuàng)新與芯來科技合作,基于 RISC-V 架構(gòu)設(shè)計的一款面向 IOT 領(lǐng)域的 MCU,主頻最高 108 MHZ,根據(jù)定位差異,片內(nèi) Flash 16~128 KB,片上 SRAM 8~32 KB。

7fb5a3da-c238-11eb-9e57-12bb97331649.png

在定制這塊板子的時候,陳老大為我們選了 Flash 和 SRAM 容量最大的那顆,所以在選擇上大家不用糾結(jié)。

更加難能可貴的是兆易開放了完整的用戶手冊,有 500 多頁。這顆芯片采用的 RISC-V 內(nèi)核是芯來科技設(shè)計的,代號 Bumblebee,芯來科技也開放了一份關(guān)于 Bumblebee 的指令架構(gòu)手冊,詳細描述了這顆芯片采用的 RISC-V 指令集、內(nèi)核特權(quán)架構(gòu)、中斷異常、Timer 以及低功耗相關(guān)的機制,總的來說,用這顆芯片來做 RISC-V 相關(guān)的研究學習,還是很合適的。

SDK隨開發(fā)板配套了一份 RT-Thread Nano SDK,里面還包含有開發(fā)板的原理圖和簡單的使用手冊以及代碼燒寫工具 GigaDevice MCU ISP Programmer ,整套 SDK 可以在 https://realthread.cowtransfer.com/s/8350a2c039b740 下載

由于當時為了讓大家盡快拿到開發(fā)板,所以倉促中板子上的 JTAG 口留下了一點小瑕疵——如果要連 JTAG 的話,需要做一點小修改,這個在開發(fā)板原理圖《GD32VF_EVB_V1_20190901》中有說明。

參考配套文檔《GD32VF使用說明_20190919》 即可完成 RT-Thread 代碼的編譯,然后根據(jù)該文檔描述的固件燒錄方法,按著板子的 BOOT0 按鍵,再按 RESET 按鍵使板子進入燒寫模式,然后通過GigaDevice MCU ISP Programmer 燒錄固件到板子上。

需要注意的是,板子燒錄固件是通過板子上的 UART 轉(zhuǎn) USB 燒寫的,燒錄時串口波特率需要設(shè)置為 256000,系統(tǒng)啟動后,RT-Thread 也通過這個 UART 打印調(diào)試信息,打印調(diào)試信息的波特率為 115200,注意不要搞錯了。

另外,同一時刻,串口調(diào)試工具和 GigaDevice MCU ISP Programmer 燒錄軟件,只有一個能占用串口,所以在燒錄固件之前要記得關(guān)閉串口調(diào)試工具,否則有可能會無法正常進入燒錄模式。

運行 RT-Thread mainline如果是做產(chǎn)品的話,使用芯片供應商提供的 SDK 是最靠譜的,如果是學習研究的話,我一向喜歡嘗試最新的代碼,所以 RT-Thread mainline 是一定要試一試的。

安裝 ENV 工具 和 risc-v toolchainRT-Thread 支持 Windows 和 Linux 兩種編譯開發(fā)環(huán)境,這里我打算在 Windows 下編譯開發(fā),所以需要先去 RT-Thread 官網(wǎng)下載一個 ENV 工具:https://www.rt-thread.org/page/download.html

工具下載下來后解壓到任何你喜歡的地方,但是記住路徑里面不要有中文字符,雙擊 env.exe 可執(zhí)行程序就可以啟動進入命令行模式,還可以通過右鍵把它添加到 Windows 的開始工具欄。

關(guān)于 ENV 的詳細使用說明可以參考《Env用戶手冊》和 《RT-Thread 編程指南》,這兩份文檔在 RT-Thread 官網(wǎng)都可以下載:https://www.rt-thread.org/document/site/

我發(fā)現(xiàn)工具里面默認只帶了 arm_gcc 的 toolchain,這里要編譯 RISC-V,所以還需要下載 RISC-V 的 toolchain,RISC-V 官方的 toolchain 在 Github 上,地址如下:https://github.com/xpack-dev-tools/riscv-none-embed-gcc-xpack/releases :

8044ffa8-c238-11eb-9e57-12bb97331649.png

選擇對應的版本,下載后解壓到 ENV 工具的 /tools/gnu_gcc/risc-v/目錄下。

80a2f25c-c238-11eb-9e57-12bb97331649.png

為了能在 ENV 命令行里面認到 riscv-none-embed-gcc 相關(guān)的命令,還需要做如下修改:

80ad9338-c238-11eb-9e57-12bb97331649.png

即在 env 的 tools/ConEmu/ConEmu/CmdInit.cmd 文件里重新設(shè)置 RTT_EXEC_PATH 環(huán)境變量,把原來的 arm_gcc 路徑替換成剛才下載的 risc-v toolchain 的安裝路徑。

我查閱了前面提到的兩份RT-Thread 文檔和官網(wǎng)論壇上關(guān)于 ENV 的常見問題問答貼,沒找到關(guān)于在 ENV 里面添加 命令的修改說明,所以上面這個修改方法是我嘗試出來的,不一定科學,如果有人知道更科學的修改方法,請告訴我。

當然,前面的 SDK 包里也提供了 env 和 risc-v toolchain,但是在這里我想用最新的工具和代碼從頭開始嘗試下整個過程。

修改 RT-Thread mainline 代碼RT-Thread 的官方代碼托管在 Github 上,可以通過 git 下載:

git clone https://github.com/RT-Thread/rt-thread.git

其實 RT-Thread mainline 已經(jīng)支持了 GD32VF103 ,不過對應的開發(fā)板是 GigaDevice 官方的 gd32vf103-eval。

這塊開發(fā)板和我手上的開發(fā)板有個很重要的區(qū)別——這塊開發(fā)板上面有貼一顆外部高速晶振,而我手上的板子沒有貼,芯片是依靠內(nèi)部的 8M RC 振蕩時鐘工作的,內(nèi)部振蕩時鐘的精度要低一些,但是對于不使用以太網(wǎng)的場合,基本是夠用的。

所以在系統(tǒng)時鐘配置部分需要做如下修改:

82496b40-c238-11eb-9e57-12bb97331649.png

即把 __SYSTEM_CLOCK_108M_PLL_IRC8M 這個宏打開, __SYSTEM_CLOCK_108M_PLL_HXTAL 這個宏屏蔽。

我們板子上有帶 三個 LED、所以流水燈這種經(jīng)典項目必須加上:

在 bsp/gd32vf103v-eval/applications/main.c 文件的 main 函數(shù)中加入如下內(nèi)容:

rt_kprintf(“Hello GD32VF103VBT6! build %s %s

”, __DATE__, __TIME__);

// gpio clk rcu_periph_clock_enable(RCU_GPIOE); // gpio init gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_3); gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_4); gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_5);

while (1) { gpio_bit_reset(GPIOE, GPIO_PIN_3);rt_thread_mdelay(300);

gpio_bit_reset(GPIOE, GPIO_PIN_4);rt_thread_mdelay(300);

gpio_bit_reset(GPIOE, GPIO_PIN_5);rt_thread_mdelay(300);

gpio_bit_set(GPIOE, GPIO_PIN_3);rt_thread_mdelay(30);

gpio_bit_set(GPIOE, GPIO_PIN_4);rt_thread_mdelay(30);

gpio_bit_set(GPIOE, GPIO_PIN_5);rt_thread_mdelay(30); }

修改后的代碼我推送到了Gitee 上,如果有同學感興趣,可以直接 clone 下來 have a try:

git clone https://gitee.com/andyshrk/rt-thread.git

編譯打開 ENV 工具,進入 RT-Thread 源碼的 /bsp/gd32vf103v-eva/ 目錄下運行 scons 命令進行編譯:

827407f6-c238-11eb-9e57-12bb97331649.png

編譯成功會生成 rtthread.bin 文件,參考提到的文檔使用 GigaDevice MCU ISP Programmer 燒寫到開發(fā)板上。

系統(tǒng)成功啟動后在串口中會看到如下打印,并且板子上的 3 個 LED 燈會輪流閃爍:

8445b926-c238-11eb-9e57-12bb97331649.png

這個 warning 似乎是因為某個堆棧設(shè)置的太小了,等我后面具體看下代碼再處理掉。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17324

    瀏覽量

    352658
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1592

    瀏覽量

    108419
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4828

    瀏覽量

    69058

原文標題:在 RISC-V 芯片 GD32V 上運行 RT-Thread

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    RISC-V MCU技術(shù)

    GD32VF103系列的MCU,是兆易創(chuàng)新出的,用了基于RISC-V的Bumblebee處理器內(nèi)核,主要是給物聯(lián)網(wǎng)還有其他超低功耗的場景用的。這個系列MCU運算主頻能到108MHz,片閃存從16KB到
    發(fā)表于 01-19 11:50

    RISC-V架構(gòu)及MRS開發(fā)環(huán)境回顧

    RISC-V是一種特定指令集架構(gòu)RISC-V指令集類似于INTEL的X86、ARM指令集,是一個被CPU讀取到內(nèi)存后,指導計算機運行的指令集合。使用該指令集的CPU,能執(zhí)行指令集中
    發(fā)表于 12-16 23:08

    RISC-V 與 ARM 架構(gòu)的區(qū)別 RISC-V與機器學習的關(guān)系

    在現(xiàn)代計算機架構(gòu)中,RISC-V和ARM是兩種流行的處理器架構(gòu)。它們各自具有獨特的特點和優(yōu)勢,適用于不同的應用場景。 1. RISC-V架構(gòu)
    的頭像 發(fā)表于 12-11 17:50 ?1235次閱讀

    基于risc-v架構(gòu)的芯片與linux系統(tǒng)兼容性討論

    )、中斷控制器、I/O接口等。 Linux內(nèi)核需要與這些硬件接口進行緊密配合,提供合適的驅(qū)動程序和管理機制。因此,在RISC-V架構(gòu)的芯片運行Linux系統(tǒng)時,需要確保Linux內(nèi)核
    發(fā)表于 11-30 17:20

    RISC-V智能汽車生態(tài)研討大會11月22日啟幕,RT-Thread展臺等你來打卡!

    RISC-VSeminarRISC-V智能汽車生態(tài)研討大會11月22日上海·浦東·張江RISC-V架構(gòu)因其開放性、靈活性、低成本和無技術(shù)限制的特點,在智能汽車領(lǐng)域展現(xiàn)出巨大潛力。IDC預計,到
    的頭像 發(fā)表于 11-16 01:09 ?205次閱讀
    <b class='flag-5'>RISC-V</b>智能汽車生態(tài)研討大會11月22日啟幕,<b class='flag-5'>RT-Thread</b>展臺等你來打卡!

    介紹國產(chǎn)的一款RISC-V——ES32VF2264

    ES32VF2264系列產(chǎn)品采用RISC-V內(nèi)核和先進的系統(tǒng)架構(gòu),是一款高性價比、高可靠性且外設(shè)功能豐富的32-bit 微控制器。主頻運行在72MHz時系統(tǒng)效能評分可達81 DMIPS和149
    發(fā)表于 09-23 08:44

    RT-Thread Safety AUTO成功適配芯來RISC-V車規(guī)內(nèi)核

    NEWSTODAY近日,睿賽德科技(RT-Thread)宣布其通過最高功能安全等級認證的嵌入式實時操作系統(tǒng)RT-ThreadSafetyAUTO成功適配芯來科技的RISC-V處理器NA系列內(nèi)核。此次
    的頭像 發(fā)表于 08-30 13:12 ?583次閱讀
    <b class='flag-5'>RT-Thread</b> Safety AUTO成功適配芯來<b class='flag-5'>RISC-V</b>車規(guī)內(nèi)核

    RT-Thread攜手進迭時空:共建RISC-V實時計算生態(tài)

    日益高漲。基于新一代精簡指令集架構(gòu)RISC-V開發(fā)的高性能計算芯片,可極大提升計算效能,提供更多優(yōu)質(zhì)算力。近日,RT-Thread與進迭時空(杭州)科技有限公司宣布
    的頭像 發(fā)表于 08-06 08:35 ?536次閱讀
    <b class='flag-5'>RT-Thread</b>攜手進迭時空:共建<b class='flag-5'>RISC-V</b>實時計算生態(tài)

    risc-v的發(fā)展歷史

    RISC-V的發(fā)展歷史可以追溯到2006年左右,當時David Patterson和其他研究者開始探索創(chuàng)建一個開放和可擴展的指令集架構(gòu)(ISA)。以下是RISC-V發(fā)展的主要里程碑: 一、起源與初步
    發(fā)表于 07-29 17:20

    rIsc-v的缺的是什么?

    和可定制性,不同的廠商或開發(fā)者可能會根據(jù)自己的需求對RISC-V進行不同的定制和優(yōu)化。這可能會導致硬件生態(tài)系統(tǒng)中出現(xiàn)碎片化問題,即某些RISC-V軟件無法在所有RISC-V芯片
    發(fā)表于 07-29 17:18

    risc-v的mcu對RTOS兼容性如何

    是否支持特定的RISC-V變種。 大多數(shù)現(xiàn)代RTOS都支持多種處理器架構(gòu),包括RISC-V。例如,F(xiàn)reeRTOS、RT-Thread等RTOS都提供了對
    發(fā)表于 05-27 16:26

    2024 RT-Thread 全球技術(shù)大會演講議程發(fā)布!

    創(chuàng)造價值!2023RT-Thread全球技術(shù)大會匯集了人工智能、RISC-V、嵌入式、物聯(lián)網(wǎng)、安全、應用、開發(fā)環(huán)境和工具等多領(lǐng)域的行業(yè)專家和RT-Thread社區(qū)工
    的頭像 發(fā)表于 05-16 08:34 ?617次閱讀
    2024 <b class='flag-5'>RT-Thread</b> 全球技術(shù)大會演講議程發(fā)布!

    RISC-V有哪些優(yōu)缺點?是堅持ARM方向還是投入risc-V的懷抱?

    RISC-V作為一種開源的指令集架構(gòu)(ISA),具有一系列顯著的優(yōu)點和潛在的缺點。以下是RISC-V的主要優(yōu)點和缺點概述: 優(yōu)點 : 開源與開放性 :RISC-V是開源的,這意味著任何
    發(fā)表于 04-28 08:51

    RISC-V開放架構(gòu)設(shè)計之道|閱讀體驗】+ 閱讀深體驗

    本人沒有芯片設(shè)計,或者指令集方面較深的基礎(chǔ)知識,不過認真看這本書也令我學到了不少。 書中一開始便提到RISC-V的目標是稱為一款通用的指令集架構(gòu):需要適合設(shè)計各種規(guī)模的處理器,能兼容各種流行的軟件棧
    發(fā)表于 03-05 22:01

    ch32v307-r1 BSP按照README說明導入RT-Thread Studio編譯報錯的原因?怎么解決?

    ^~~~~~~~~~~~ compilation terminated. make: *** [rt-thread/libcpu/risc-v/common/subdir.mk:36
    發(fā)表于 02-19 06:05
    百家乐官网桌子黑色| 百家乐磁力录| 百家乐入庄闲概率| 网上百家乐官网有人赢过嘛 | 百家乐官网翻牌规则| 大发888 ber娱乐场下载| 姚记百家乐官网的玩法技巧和规则 | 百家乐有送体验金| 宝马百家乐官网的玩法技巧和规则 | 百家乐娱乐官方网| 陆川县| 大发888真人真钱游戏| 百家乐视频台球下载| 百家乐官网赌场程序| 阜康市| 狮威百家乐娱乐城| 豪杰百家乐现金网| 百家乐官网套路| 百家乐官网平台下载| 现金网注册| 百家乐现金网平台排名| 赌博百家乐官网玩法| 神池县| 新时代娱乐城开户| 百家乐真人玩下载| 真钱百家乐注册送| 百家乐官网游戏开发软件| 碧桂园太阳城怎么样| 24葬书-葬法| 巴厘岛百家乐官网娱乐城| 大佬百家乐官网现金网| 大发888小陆| 百家乐散台| 玩百家乐澳门皇宫娱乐城| 模拟百家乐官网的玩法技巧和规则 | 百家乐游戏唯一官网网站| 百家乐官网庄闲的比例| 百家乐官网游乐园| SHOW| 百家乐官网有破解的吗| 缅甸百家乐官网网络赌博解谜|