1、前言
RT-Thread Env是RT-Thread推出的開發(fā)輔助工具,針對基于RT-Thread操作系統(tǒng)的項目工程,提供編譯構(gòu)建環(huán)境、圖形化系統(tǒng)配置及軟件包管理功能。其內(nèi)置的menuconfig提供了簡單易用的配置剪裁工具,可對內(nèi)核、組件和軟件包進行自由裁剪,使系統(tǒng)以搭積木的方式進行構(gòu)建。
先楫新發(fā)布的RT-Thread BSP v1.10也支持通過RT-Thread Env來方便的圖形化的配置和裁剪應用、完成編譯、生成cmake工程和Segger Embedded Studio工程等操作。
本文從介紹基于Ubuntu的RT-Thread開發(fā)環(huán)境的搭建開始,結(jié)合先楫RT-Thread BSP v1.10的新特性,介紹利用RT-Thread Env如何使用如下工具鏈來開發(fā)RT-Thread應用。
gcc
zcc
Segger Embedded Studio
2、準備開發(fā)環(huán)境
按照https://gitee.com/RT-Thread-Mirror/env提供的步驟依次安裝開發(fā)環(huán)境。
2.1 安裝RT-Thread Env環(huán)境
注意:以下配置環(huán)境變量的示例針對的是不熟悉Ubuntu的新手用戶,對于熟悉Linux環(huán)境變量配置的朋友,可按照自己的習慣來配置,實現(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、準備環(huán)境
在 ~/.bashrc 的最后一行追加
source ~/.env/env.sh
3、注意事項
版本匹配要求:
先楫RT-Thread BSP v1.10是基于RT-Threadv5.0.2開發(fā)的,必須使用RT-Thread Env v1.5.2來開發(fā)。
環(huán)境配置問題解決方案:
當遇到 scons --menuconfig 命令異常時,請按以下步驟處理:
· 檢查是否安裝了沖突的kconfiglib
pip list | grep kconfiglib
· 如果已安裝(顯示版本信息),則執(zhí)行卸載
pip uninstall kconfiglib
2.1 安裝工具鏈
以下三個工具鏈,可根據(jù)個人的喜好來安裝
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
安裝到指定目錄。
以當前版本ZCC-Installer為例,按如下方式來安裝。
chmod777ZCC-Installer
sudo ./ZCC-Installer
在彈出的窗口中點擊Install,在新界面中選擇安裝的路徑,本文使用默認路徑/opt/Terapines/ZCC/4.0.0,繼續(xù)點擊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)點如下鏈接下載Segger Embedded Studio的Linux版本。
解壓并安裝。
以8.24版本為例,解壓到segger_embedded_studio_v824_linux_x64,通過命令行進入該文件夾,并通過如下命令安裝:
cd segger_embedded_studio_v824_linux_x64
sudo ./install_segger_embedded_studio
按默認路徑安裝到/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
按如下鏈接申請License(非商用可跳過這一步)
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
對于熟悉openocd編譯的用戶,也可自行基于https://github.com/hpmicro/riscv-openocd倉庫的taghpm_xpi_v0.3.0
完成克隆和編譯安裝,在此不作展開。
5、安裝 JLink 和 Ozone
該步驟為可選操作, 若手上沒有JLink硬件,可跳過。
從如下鏈接下載JLink和Ozone安裝包并安裝
https://www.segger.com/downloads/jlink/
3、項目開發(fā)流程
基于先楫的RT-Thread BSP包,典型的開發(fā)模式如下所示:
準備工作
下載相近開發(fā)板的BSP包
導出相近例程
工程的配置
使用RT-Thread Env完成工程相應的配置
按scons的語法管理新添加的代碼
指定編譯器、ARCH、ABI等信息
工程生成、編譯和調(diào)試
使用scons編譯,或者生成對應的cmake或Segger Embedded Studio工程
使用openocd+gdb調(diào)試,或使用ozone+jlink調(diào)試
3.1 準備工作
第一步: 下載 先楫BSP 包
用戶朋友可通過如下鏈接分別下載先楫官方開發(fā)板的BSP包。
開發(fā)板 | 倉庫鏈接 |
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 |
第二步:導出例程
解壓下載的BSP包,在包的根目錄,先楫提供了bsp_utils.py腳本,該腳本的簡要用法如下:
python bsp_utils.py -l查看BSP包支持的例程列表
python bsp_utils.py -e -p= -o=來導出指定的例程。若project_name的值為all,則導出所有支持的例程。
我們以blink_led例程為例,假定當前用戶的目錄為/home/builder/,可通過如下命令導出該例程。
python ./bsp_utils.py -e -p=blink_led -o=/home/builder
執(zhí)行完該操作后,可在/home/builder/blink_led目錄下找到該例程。
3.2 配置工程
第一步: 基于 RT-Thread Env 配置工程
1、通過menuconfig配置工程
基于上述教程,以blink_led例程為例,通過命令行進入/home/builder/blink_led目錄。
通過scons --menuconfig打開kconfig相關(guān)的配置,完成如下操作:
板級配置
內(nèi)核配置
組件配置
在線包配置
其他用戶添加的配置等
操作示例如下圖所示:

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

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

之后,可通過Segger Embedded Studio實現(xiàn)開發(fā)和調(diào)試。調(diào)試的體驗和使用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應用的簡要流程,實際體驗下來,整個過程和體驗還是簡單和直觀的。大家如果在使用過程中有任何疑問和建議,歡迎在公眾號下留言,或者在相應的github倉庫提issue。
-
mcu
+關(guān)注
關(guān)注
147文章
19160瀏覽量
404718 -
Ubuntu
+關(guān)注
關(guān)注
5文章
617瀏覽量
33707 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1644瀏覽量
45264
發(fā)布評論請先 登錄
先楫RT-Thread BSP v1.2.0的主要功能
RT-Thread設(shè)備驅(qū)動開發(fā)指南基礎(chǔ)篇—以先楫bsp的hwtimer設(shè)備為例
RT-Thread驅(qū)動開發(fā)指南進階篇-動手驅(qū)動先楫未適配的外設(shè)LCD
開發(fā)者分享 | 基于先楫RT-Thread BSP,使用CLion開發(fā)應用
RT-Thread編程指南
RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
上海線下培訓:RT-Thread×先楫 HPM5300 for RT-Thread ,高性能 RISC-V 平臺開發(fā)快速上手
線下活動|先楫HPM5300 for RT-Thread ,高性能 RISC-V 平臺開發(fā)快速上手
先楫半導體亮相2023 RDC RT-Thread開發(fā)者大會
先楫 RT-Thread BSP v1.4.0 正式發(fā)布
《RT-Thread設(shè)備驅(qū)動開發(fā)指南》基礎(chǔ)篇--以先楫bsp的hwtimer設(shè)備為例
Windows上使用ENV工具開發(fā)基于先楫MCU的RT-Thread應用
在Ubuntu上開發(fā)基于先楫MCU的RT-Thread應用指南
評論