1、前言
RT-Thread Env是RT-Thread推出的開發(fā)輔助工具,針對(duì)基于RT-Thread操作系統(tǒng)的項(xiàng)目工程,提供編譯構(gòu)建環(huán)境、圖形化系統(tǒng)配置及軟件包管理功能。其內(nèi)置的menuconfig提供了簡(jiǎn)單易用的配置剪裁工具,可對(duì)內(nèi)核、組件和軟件包進(jìn)行自由裁剪,使系統(tǒng)以搭積木的方式進(jìn)行構(gòu)建。
先楫新發(fā)布的RT-Thread BSP v1.10也支持通過(guò)RT-Thread Env來(lái)方便的圖形化的配置和裁剪應(yīng)用、完成編譯、生成cmake工程和Segger Embedded Studio工程等操作。
本文從介紹基于Ubuntu的RT-Thread開發(fā)環(huán)境的搭建開始,結(jié)合先楫RT-Thread BSP v1.10的新特性,介紹利用RT-Thread Env如何使用如下工具鏈來(lái)開發(fā)RT-Thread應(yīng)用。
gcc
zcc
Segger Embedded Studio
2、準(zhǔn)備開發(fā)環(huán)境
按照https://gitee.com/RT-Thread-Mirror/env提供的步驟依次安裝開發(fā)環(huán)境。
2.1 安裝RT-Thread Env環(huán)境
注意:以下配置環(huán)境變量的示例針對(duì)的是不熟悉Ubuntu的新手用戶,對(duì)于熟悉Linux環(huán)境變量配置的朋友,可按照自己的習(xí)慣來(lái)配置,實(shí)現(xiàn)同樣的效果即可。
1、下載并安裝
wget https://gitee.com/RT-Thread-Mirror/env/raw/master/install_ubuntu.shchmod777install_ubuntu.sh./install_ubuntu.sh--gitee
rm install_ubuntu.sh
2、準(zhǔn)備環(huán)境
在 ~/.bashrc 的最后一行追加
source ~/.env/env.sh
3、注意事項(xiàng)
版本匹配要求:
先楫RT-Thread BSP v1.10是基于RT-Threadv5.0.2開發(fā)的,必須使用RT-Thread Env v1.5.2來(lái)開發(fā)。
環(huán)境配置問(wèn)題解決方案:
當(dāng)遇到 scons --menuconfig 命令異常時(shí),請(qǐng)按以下步驟處理:
· 檢查是否安裝了沖突的kconfiglib
pip list | grep kconfiglib
· 如果已安裝(顯示版本信息),則執(zhí)行卸載
pip uninstall kconfiglib
2.1 安裝工具鏈
以下三個(gè)工具鏈,可根據(jù)個(gè)人的喜好來(lái)安裝
1、安裝gcc工具鏈
從如下鏈接下載gcc工具鏈:
https://github.com/hpmicro/riscv-gnu-toolchain/releases/download/2022.05.15/riscv32-unknown-elf-newlib-multilib_2022.05.15_linux.tar.gz
或
https://gitee.com/hpmicro/riscv-gnu-toolchain/releases/download/2022.05.15/riscv32-unknown-elf-newlib-multilib_2022.05.15_linux.tar.gz
解壓到指定的目錄,如opt/riscv32-unknown-elf-newlib-multilib
添加環(huán)境變量
在 ~/.bashrc 的最后一行追加RTT_RISCV_TOOLCHAIN
此處假定工具鏈被安裝/解壓到/opt/riscv32-unknown-elf-newlib-multilib
exportRTT_RISCV_TOOLCHAIN=/opt/riscv32-unknown-elf-newlib-multilib/bin
2、安裝zcc工具鏈
從兆松科技的官網(wǎng)的如下鏈接下載zcc 4.0.0或zcc 4.1.1及以上版本的工具鏈
https://www.terapines.com/download/zcc
安裝到指定目錄。
以當(dāng)前版本ZCC-Installer為例,按如下方式來(lái)安裝。
chmod777ZCC-Installer
sudo ./ZCC-Installer
在彈出的窗口中點(diǎn)擊Install,在新界面中選擇安裝的路徑,本文使用默認(rèn)路徑/opt/Terapines/ZCC/4.0.0,繼續(xù)點(diǎn)擊Install,等待安裝完成并關(guān)閉安裝窗口。
添加到環(huán)境變量
在 ~/.bashrc 的最后一行追加ZCC_TOOLCHAIN_PATH
exportZCC_TOOLCHAIN_PATH=/opt/Terapines/ZCC/4.0.0/bin
3、安裝Segger Embedded Studio
從Segger官方網(wǎng)點(diǎn)如下鏈接下載Segger Embedded Studio的Linux版本。
解壓并安裝。
以8.24版本為例,解壓到segger_embedded_studio_v824_linux_x64,通過(guò)命令行進(jìn)入該文件夾,并通過(guò)如下命令安裝:
cd segger_embedded_studio_v824_linux_x64
sudo ./install_segger_embedded_studio
按默認(rèn)路徑安裝到/opt/SEGGER/segger_embedded_studio_8.24
設(shè)置環(huán)境變量
在 ~/.bashrc 的最后一行追加SEGGER_TOOLCHAIN_PATH
export SEGGER_TOOLCHAIN_PATH=/opt/SEGGER/segger_embedded_studio_8.24/bin
按如下鏈接申請(qǐng)License(非商用可跳過(guò)這一步)
https://license.segger.com/hpmicro.cgi
4、安裝 OpenOCD
從如下鏈接下載OpenOCD,并解壓到指定目錄,如/opt/hpm-openocd
https://github.com/hpmicro/riscv-openocd/releases/download/hpm_xpi_v0.3.0/openocd-linux.tar.gz-設(shè)置環(huán)境變量在 ~/.bashrc 的最后一行追加:
export PATH=$PATH:/opt/hpm-openocd/bin
對(duì)于熟悉openocd編譯的用戶,也可自行基于https://github.com/hpmicro/riscv-openocd倉(cāng)庫(kù)的taghpm_xpi_v0.3.0
完成克隆和編譯安裝,在此不作展開。
5、安裝 JLink 和 Ozone
該步驟為可選操作, 若手上沒(méi)有JLink硬件,可跳過(guò)。
從如下鏈接下載JLink和Ozone安裝包并安裝
https://www.segger.com/downloads/jlink/
3、項(xiàng)目開發(fā)流程
基于先楫的RT-Thread BSP包,典型的開發(fā)模式如下所示:
準(zhǔn)備工作
下載相近開發(fā)板的BSP包
導(dǎo)出相近例程
工程的配置
使用RT-Thread Env完成工程相應(yīng)的配置
按scons的語(yǔ)法管理新添加的代碼
指定編譯器、ARCH、ABI等信息
工程生成、編譯和調(diào)試
使用scons編譯,或者生成對(duì)應(yīng)的cmake或Segger Embedded Studio工程
使用openocd+gdb調(diào)試,或使用ozone+jlink調(diào)試
3.1 準(zhǔn)備工作
第一步: 下載 先楫BSP 包
用戶朋友可通過(guò)如下鏈接分別下載先楫官方開發(fā)板的BSP包。
開發(fā)板 | 倉(cāng)庫(kù)鏈接 |
hpm6750evkmini | http://git-mirror.rt-thread.com:12236/hpmicro/rtt-bsp-hpm6750evkmini/archive/v1.10.0.zip |
hpm6750evk2 | http://git-mirror.rt-thread.com:12236/hpmicro/rtt-bsp-hpm6750evk2/archive/v1.10.0.zip |
hpm6300evk | http://git-mirror.rt-thread.com:12236/hpmicro/rtt-bsp-hpm6300evk/archive/v1.10.0.zip |
hpm6200evk | http://git-mirror.rt-thread.com:12236/hpmicro/rtt-bsp-hpm6200evk/archive/v1.10.0.zip |
hpm5300evk | http://git-mirror.rt-thread.com:12236/hpmicro/rtt-bsp-hpm5300evk/archive/v1.10.0.zip |
hpm5301evklite | http://git-mirror.rt-thread.com:12236/hpmicro/rtt-bsp-hpm5301evklite/archive/v1.10.0.zip |
hpm6800evk | http://git-mirror.rt-thread.com:12236/hpmicro/rtt-bsp-hpm6800evk/archive/v1.10.0.zip |
hpm6e00evk | http://git-mirror.rt-thread.com:12236/hpmicro/rtt-bsp-hpm6e00evk/archive/v1.10.0.zip |
hpm6p00evk | http://git-mirror.rt-thread.com:12236/hpmicro/rtt-bsp-hpm6p00evk/archive/v1.10.0.zip |
hpm5e00evk | http://git-mirror.rt-thread.com:12236/hpmicro/rtt-bsp-hpm5e00evk/archive/v1.10.0.zip |
第二步:導(dǎo)出例程
解壓下載的BSP包,在包的根目錄,先楫提供了bsp_utils.py腳本,該腳本的簡(jiǎn)要用法如下:
python bsp_utils.py -l查看BSP包支持的例程列表
python bsp_utils.py -e -p= -o=來(lái)導(dǎo)出指定的例程。若project_name的值為all,則導(dǎo)出所有支持的例程。
我們以blink_led例程為例,假定當(dāng)前用戶的目錄為/home/builder/,可通過(guò)如下命令導(dǎo)出該例程。
python ./bsp_utils.py -e -p=blink_led -o=/home/builder
執(zhí)行完該操作后,可在/home/builder/blink_led目錄下找到該例程。
3.2 配置工程
第一步: 基于 RT-Thread Env 配置工程
1、通過(guò)menuconfig配置工程
基于上述教程,以blink_led例程為例,通過(guò)命令行進(jìn)入/home/builder/blink_led目錄。
通過(guò)scons --menuconfig打開kconfig相關(guān)的配置,完成如下操作:
板級(jí)配置
內(nèi)核配置
組件配置
在線包配置
其他用戶添加的配置等
操作示例如下圖所示:

該操作和基于RT-Thread Studio中的圖形化操作很類似。
關(guān)于kconfig相關(guān)的背景知識(shí),請(qǐng)自行通過(guò)deepseek或者搜索引擎檢索。
關(guān)于 RT-Thread Env 的詳細(xì)用法,請(qǐng)參考如下鏈接:
https://github.com/RT-Thread/rt-thread/blob/master/documentation/env/env.md#bsp-configuration-menuconfig
https://www.rt-thread.org/document/site/#/development-tools/env/env
2、通過(guò)scons腳本組織工程
詳見(jiàn)
https://www.rt-thread.org/document/site/#/development-tools/build-config-system/SCons
第二步:按需更改工具鏈參數(shù)
1、配置RV_ARCH和RV_ABI(不適用于Segger Embedded Studio工程)
用戶可在工程目錄下的命令行執(zhí)行如下操作完成ABI的配置,若無(wú)該操作,默認(rèn)值為RV_ABI=ilp32。
exportRV_ABI=
用戶可在工程目錄下的命令行執(zhí)行如下操作完成ARCH的配置,若無(wú)該操作,默認(rèn)值為RV_ARCH=rv32imac。
exportRV_ARCH=
支持的RV_ARCH和RV_ABI的組合有:
rv32imac + ilp32
rv32imafc + ilp32f
rv32gc + ilp32d
2、配置 RTT_BUILD_TYPE(不適用于Segger Embedded Studio工程)
用戶可通過(guò)如下操作完成RTT_BUILD_TYPE的配置,若無(wú)該操作,默認(rèn)值為flash_debug。
exportRTT_BUILD_TYPE=
通常支持的RTT_BUILD_TYPE選項(xiàng)為:
ram_debug
ram_release
flash_debug
flash_relase
flash_hybrid_debug (僅限HPM5E00系列)
flash_hybrid_release (僅限HPM5E00系列)
詳細(xì)支持的選項(xiàng)可從rtconfig.py中查詢。
3、切換工具鏈
用戶可以工程目錄下使用如下操作完成工具鏈的切換,或無(wú)該操作,默認(rèn)工具鏈為gcc。
exportRTT_TOOLCHAIN_PLATFORM=
其中,platform支持的選項(xiàng)為:
gcc
zcc
segger
3.3第三步:生成、編譯和調(diào)試工程
使用scons腳本,用戶可以直接在命令行完成編譯等高級(jí)功能。
1、使用scons直接編譯生成可執(zhí)行文件
scons-jN
其中:N代表線程數(shù)。
對(duì)于各位命令行大神,可以使用openocd+riscv32-unknown-elf-gdb實(shí)現(xiàn)基于命令行的調(diào)試。
手握JLink的玩家,也可使用JLink+Ozone來(lái)調(diào)試。
2、生成cmake 工程
當(dāng)使用gcc或zcc工具鏈時(shí),可通過(guò)如下命令生成cmake工程。
scons --target=cmake
之后,大家可使用自己熟悉的支持cmake的IDE(如vscode, CLion等) 來(lái)打開cmake工程完成后續(xù)的開發(fā)和調(diào)試。
注意:
在該模式下,如果需要重新更改RT-Thread相關(guān)的配置,可能需要反復(fù)執(zhí)行如下操作:
scons--menuconfig
scons--target=cmake
3、生成Segger Embedded Studio工程
當(dāng)使用segger工具鏈時(shí),可通過(guò)如下命令生成Segger Embedded Studio工程。
exportRTT_TOOLCHAIN_PLATFORM=segger # Ensure this system variable is correct
scons --target=ses
注意:在該模式下,如果需要重新更改RT-Thread相關(guān)的配置,可能需要反復(fù)執(zhí)行如下操作:
scons--menuconfig
scons--target=cmake
在生成工程后,可使用如下命令打開工程
xdg-open project.emProject

注:默認(rèn)生成的project.emProject中的RISC-V ISA和RISC-V ABI的組合為rv32imac及ilp32,如下圖所示。用戶可根據(jù)需要自己調(diào)整為相應(yīng)的配置。

之后,可通過(guò)Segger Embedded Studio實(shí)現(xiàn)開發(fā)和調(diào)試。調(diào)試的體驗(yàn)和使用hpm_sdk一致。
4、典型示例
4.1 使用rv32imac+ilp32+gcc基于scons完成代碼的編譯
按如下示例腳本所示:
exportRTT_TOOLCHAIN_PLATFORM=gcc
exportRV_ARCH=rv32imac
exportRV_ABI=ilp32
scons-j16
4.2 使用 rv32gc+ilp32d + gcc基于scons完成cmake工程的生成
按如下示例腳本所示:
exportRTT_TOOLCHAIN_PLATFORM=gcc
exportRV_ARCH=rv32gc
exportRV_ABI=ilp32d
scons --target=cmake
4.3 使用 rv32imafc+ilp32f + zcc基于scons完成代碼的編譯
按如下示例腳本所示:
exportRTT_TOOLCHAIN_PLATFORM=zcc
exportRV_ARCH=rv32imafc
exportRV_ABI=ilp32f
scons-j16
4.4 使用 rv32gc+ilp32d + zcc基于scons完成cmake工程的生成
按如下示例腳本所示:
exportRTT_TOOLCHAIN_PLATFORM=zcc
exportRV_ARCH=rv32gc
exportRV_ABI=ilp32d
scons --target=cmake
4、小結(jié)
本文提供了在Ubuntu上開發(fā)基于先楫MCU的RT-Thread應(yīng)用的簡(jiǎn)要流程,實(shí)際體驗(yàn)下來(lái),整個(gè)過(guò)程和體驗(yàn)還是簡(jiǎn)單和直觀的。大家如果在使用過(guò)程中有任何疑問(wèn)和建議,歡迎在公眾號(hào)下留言,或者在相應(yīng)的github倉(cāng)庫(kù)提issue。
-
mcu
+關(guān)注
關(guān)注
147文章
19063瀏覽量
402187 -
Ubuntu
+關(guān)注
關(guān)注
5文章
615瀏覽量
33590 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1632瀏覽量
45115
發(fā)布評(píng)論請(qǐng)先 登錄
先楫RT-Thread BSP v1.2.0的主要功能
RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南基礎(chǔ)篇—以先楫bsp的hwtimer設(shè)備為例
RT-Thread驅(qū)動(dòng)開發(fā)指南進(jìn)階篇-動(dòng)手驅(qū)動(dòng)先楫未適配的外設(shè)LCD
開發(fā)者分享 | 基于先楫RT-Thread BSP,使用CLion開發(fā)應(yīng)用
RT-Thread編程指南
RT-Thread全球技術(shù)大會(huì):在RT-Thread上編寫測(cè)試用例
RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
上海線下培訓(xùn):RT-Thread×先楫 HPM5300 for RT-Thread ,高性能 RISC-V 平臺(tái)開發(fā)快速上手
線下活動(dòng)|先楫HPM5300 for RT-Thread ,高性能 RISC-V 平臺(tái)開發(fā)快速上手
先楫半導(dǎo)體亮相2023 RDC RT-Thread開發(fā)者大會(huì)
先楫 RT-Thread BSP v1.4.0 正式發(fā)布
《RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南》基礎(chǔ)篇--以先楫bsp的hwtimer設(shè)備為例
【好書推薦】RT-Thread設(shè)備驅(qū)動(dòng)開發(fā)指南
Windows上使用ENV工具開發(fā)基于先楫MCU的RT-Thread應(yīng)用
在Ubuntu上開發(fā)基于先楫MCU的RT-Thread應(yīng)用指南
評(píng)論