1、前言
RT-Thread Env是RT-Thread推出的开发辅助工具,针对基于RT-Thread操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。其内置的menuconfig提供了简单易用的配置剪裁工具,可对内核、组件和软件包进行自由裁剪,使系统以搭积木的方式进行构建。
先楫新发布的RT-Thread BSP v1.10也支持通过RT-Thread Env来方便的图形化的配置和裁剪应用、完成编译、生成cmake工程和Segger Embedded Studio工程等操作。
本文从介绍基于Ubuntu的RT-Thread开发环境的搭建开始,结合先楫RT-Thread BSP v1.10的新特性,介绍利用RT-Thread Env如何使用如下工具链来开发RT-Thread应用。
gcc
zcc
Segger Embedded Studio
2、准备开发环境
按照https://gitee.com/RT-Thread-Mirror/env提供的步骤依次安装开发环境。
2.1 安装RT-Thread Env环境
注意:以下配置环境变量的示例针对的是不熟悉Ubuntu的新手用户,对于熟悉Linux环境变量配置的朋友,可按照自己的习惯来配置,实现同样的效果即可。
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、准备环境
在 ~/.bashrc 的最后一行追加
source ~/.env/env.sh
3、注意事项
版本匹配要求:
先楫RT-Thread BSP v1.10是基于RT-Threadv5.0.2开发的,必须使用RT-Thread Env v1.5.2来开发。
环境配置问题解决方案:
当遇到 scons --menuconfig 命令异常时,请按以下步骤处理:
· 检查是否安装了冲突的kconfiglib
pip list | grep kconfiglib
· 如果已安装(显示版本信息),则执行卸载
pip uninstall kconfiglib
2.1 安装工具链
以下三个工具链,可根据个人的喜好来安装
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
添加环境变量
在 ~/.bashrc 的最后一行追加RTT_RISCV_TOOLCHAIN
此处假定工具链被安装/解压到/opt/riscv32-unknown-elf-newlib-multilib
exportRTT_RISCV_TOOLCHAIN=/opt/riscv32-unknown-elf-newlib-multilib/bin
2、安装zcc工具链
从兆松科技的官网的如下链接下载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,继续点击Install,等待安装完成并关闭安装窗口。
添加到环境变量
在 ~/.bashrc 的最后一行追加ZCC_TOOLCHAIN_PATH
exportZCC_TOOLCHAIN_PATH=/opt/Terapines/ZCC/4.0.0/bin
3、安装Segger Embedded Studio
从Segger官方网点如下链接下载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
设置环境变量
在 ~/.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-设置环境变量在 ~/.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、项目开发流程
基于先楫的RT-Thread BSP包,典型的开发模式如下所示:
准备工作
下载相近开发板的BSP包
导出相近例程
工程的配置
使用RT-Thread Env完成工程相应的配置
按scons的语法管理新添加的代码
指定编译器、ARCH、ABI等信息
工程生成、编译和调试
使用scons编译,或者生成对应的cmake或Segger Embedded Studio工程
使用openocd+gdb调试,或使用ozone+jlink调试
3.1 准备工作
第一步: 下载 先楫BSP 包
用户朋友可通过如下链接分别下载先楫官方开发板的BSP包。
开发板 | 仓库链接 |
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
执行完该操作后,可在/home/builder/blink_led目录下找到该例程。
3.2 配置工程
第一步: 基于 RT-Thread Env 配置工程
1、通过menuconfig配置工程
基于上述教程,以blink_led例程为例,通过命令行进入/home/builder/blink_led目录。
通过scons --menuconfig打开kconfig相关的配置,完成如下操作:
板级配置
内核配置
组件配置
在线包配置
其他用户添加的配置等
操作示例如下图所示:
该操作和基于RT-Thread Studio中的图形化操作很类似。
关于kconfig相关的背景知识,请自行通过deepseek或者搜索引擎检索。
关于 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
第二步:按需更改工具链参数
1、配置RV_ARCH和RV_ABI(不适用于Segger Embedded Studio工程)
用户可在工程目录下的命令行执行如下操作完成ABI的配置,若无该操作,默认值为RV_ABI=ilp32。
exportRV_ABI=
用户可在工程目录下的命令行执行如下操作完成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第三步:生成、编译和调试工程
使用scons脚本,用户可以直接在命令行完成编译等高级功能。
1、使用scons直接编译生成可执行文件
scons-jN
其中:N代表线程数。
对于各位命令行大神,可以使用openocd+riscv32-unknown-elf-gdb实现基于命令行的调试。
手握JLink的玩家,也可使用JLink+Ozone来调试。
2、生成cmake 工程
当使用gcc或zcc工具链时,可通过如下命令生成cmake工程。
scons --target=cmake
之后,大家可使用自己熟悉的支持cmake的IDE(如vscode, CLion等) 来打开cmake工程完成后续的开发和调试。
注意:
在该模式下,如果需要重新更改RT-Thread相关的配置,可能需要反复执行如下操作:
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相关的配置,可能需要反复执行如下操作:
scons--menuconfig
scons--target=cmake
在生成工程后,可使用如下命令打开工程
xdg-open project.emProject
注:默认生成的project.emProject中的RISC-V ISA和RISC-V ABI的组合为rv32imac及ilp32,如下图所示。用户可根据需要自己调整为相应的配置。
之后,可通过Segger Embedded Studio实现开发和调试。调试的体验和使用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、小结
本文提供了在Ubuntu上开发基于先楫MCU的RT-Thread应用的简要流程,实际体验下来,整个过程和体验还是简单和直观的。大家如果在使用过程中有任何疑问和建议,欢迎在公众号下留言,或者在相应的github仓库提issue。
-
mcu
+关注
关注
147文章
18142浏览量
372500 -
Ubuntu
+关注
关注
5文章
599浏览量
31765 -
RT-Thread
+关注
关注
32文章
1453浏览量
42443
发布评论请先 登录
先楫RT-Thread BSP v1.2.0的主要功能

RT-Thread设备驱动开发指南基础篇—以先楫bsp的hwtimer设备为例

RT-Thread驱动开发指南进阶篇-动手驱动先楫未适配的外设LCD

开发者分享 | 基于先楫RT-Thread BSP,使用CLion开发应用

RT-Thread编程指南
RT-Thread文档_RT-Thread 潘多拉 STM32L475 上手指南

上海线下培训:RT-Thread×先楫 HPM5300 for RT-Thread ,高性能 RISC-V 平台开发快速上手

线下活动|先楫HPM5300 for RT-Thread ,高性能 RISC-V 平台开发快速上手

先楫半导体亮相2023 RDC RT-Thread开发者大会
先楫 RT-Thread BSP v1.4.0 正式发布

《RT-Thread设备驱动开发指南》基础篇--以先楫bsp的hwtimer设备为例

Windows上使用ENV工具开发基于先楫MCU的RT-Thread应用

评论