前言
Env 是 RT-Thread 推出的开发辅助工具,针对基于 RT-Thread 操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。其内置的 menuconfig 提供了简单易用的配置剪裁工具,可对内核、组件和软件包进行自由裁剪,使系统以搭积木的方式进行构建。
先楫 RT-Thread BSP v1.10.0不仅支持基于RT-Thread Studio的应用开发,也支持通过RT-Thread ENV来生成不同工具链和IDE进行应用开发。
本文介绍如何在Windows上基于RT-Thread ENV使用如下工具链来开发RT-Thread应用。包括:
使用RT-Thread ENV生成gcc工具链编译工程
使用RT-Thread ENV生成zcc工具链编译工程
使用RT-Thread ENV生成Segger Embedded Studio工程
1.环境搭建
1.1 相关软件安装
在segger官方下载并安装Segger Embedded Studio IDE。链接:https://www.segger.com/downloads/embedded-studio/,选择Embedded Studio for Arm and RISC-V最新版本即可。建议安装到无中文和空格的目录下。
--按如下链接申请License(非商用可跳过这一步) https://license.segger.com/hpmicro.cgi
按照 https://www.rt-thread.org/document/site/#/development-tools/env/env 搭建安装RT-Thread ENV,推荐阅读Env 的使用方法中的在文件夹中通过右键菜单打开 Env 控制台的部分。
--注意:先楫 RT-Thread BSP v1.10是基于RT-Thread v5.0.2开发的,必须使用RT-Thread Env v1.5.2来开发。下载RT-Thread官方env_release网盘时需要选择env-windows-v1.5.2.7z
1.2 相关编译工具链安装
下载RISC-V gcc工具链
下载链接:
https://github.com/helloeagleyang/riscv32-gnu-toolchain-win/archive/2022.04.12.zip 或
https://gitee.com/hpmicro/riscv-gnu-toolchain/releases/download/2022.04.12/riscv32-gnu-toolchain-win-2022.04.12.7z
解压到无中文和空格的目录下,记住解压后的路径的bin目录。
若不想使用gcc工具链只需要用Segger Embedded Studio可忽视此步骤
下载zcc工具链
从兆松科技的官网下载zcc工具链为4.0.0或者4.1.1及更高的版本
下载链接:https://www.terapines.com/download/zcc
解压到无中文和空格的目录下,记住解压后的路径的bin目录。
若不想使用zcc工具链只需要用Segger Embedded Studio可忽视此步骤
segger工具链
从上述软件安装好Segger Embedded Studio IDE之后,记住Segger Embedded Studio的安装路径下的bin目录。
ENV设置环境变量
右键打开Env控制台,点击右上角的system menu,选择settings

点击Environment,在编辑框分别按需输入RTT_RISCV_TOOLCHAIN和ZCC_TOOLCHAIN_PATH还有SEGGER_TOOLCHAIN_PATH变量,变量值为上述的工具链路径。设置完毕点击Save settings保存。

RTT_RISCV_TOOLCHAIN对应上述的riscv32-gnu-toolchain-win-2022.04.12/bin目录
ZCC_TOOLCHAIN_PATH对应上述的zcc-4.0.0/bin目录
SEGGER_TOOLCHAIN_PATH对应上述的Segger Embedded Studio/bin目录
重启ENV,使环境变量生效。
注意:set =中的 = 前后不允许出现空格
2.基于RT-Thread ENV编译开发应用
2.1 下载安装先楫BSP包
根据自己的开发板下载对应的BSP包
开发板 | 仓库链接 |
hpm6750evkmini | https://github.com/hpmicro/rtt-bsp-hpm6750evkmini/archive/v1.10.0.zip |
hpm6750evk2 | https://github.com/hpmicro/rtt-bsp-hpm6750evk2/archive/v1.10.0.zip |
hpm6300evk | https://github.com/hpmicro/rtt-bsp-hpm6300evk/archive/v1.10.0.zip |
hpm6200evk | https://github.com/hpmicro/rtt-bsp-hpm6200evk/archive/v1.10.0.zip |
hpm5300evk | https://github.com/hpmicro/rtt-bsp-hpm5300evk/archive/v1.10.0.zip |
hpm5301evklite | https://github.com/hpmicro/rtt-bsp-hpm5301evklite/archive/v1.10.0.zip |
hpm6800evk | https://github.com/hpmicro/rtt-bsp-hpm6800evk/archive/v1.10.0.zip |
hpm6e00evk | https://github.com/hpmicro/rtt-bsp-hpm6e00evk/archive/v1.10.0.zip |
hpm6p00evk | https://github.com/hpmicro/rtt-bsp-hpm6p00evk/archive/v1.10.0.zip |
hpm5e00evk | https://github.com/hpmicro/rtt-bsp-hpm5e00evk/archive/v1.10.0.zip |
2.2 导出BSP包的例程
需要安装python,推荐版本为Python 3.10以上
解压下载的BSP包,可以使用BSP包里的bsp_utils.py脚本导出例程
在BSP包的目录下,使用PowerShell或者git bash运行bsp_utils.py,当前该脚本支持的命令如下:
-v/--version Show version 获取脚本版本
-l/--list Show supported examples in this BSP 查看当前BSP支持的所有例程
-e/--export_proj Export project from this BSP to specified destination directory 导出生成工程到指定目录
以blink_led例程为例,假定需要导出的路径为D:\rtt_proj,可通过如下命令导出该例程。
python .\bsp_utils.py -e --project_name=blink_led --output=D:\rtt_proj
当导出成功后,会提示以下,并且在D:\rtt_proj目录下生成一个blink_led目录,该目录下就是导出的工程。
Successfully exported project 'blink_led' to 'D:\rtt_proj\blink_led'
注意:确保导出的路径存在。
2.3 配置工程
根据上述教程新建的工程,以blink_led为例
在工程的主目录下右键打开,选择ComEmu here,会弹出env窗口

在env敲击menuconfig打开板级的kconfig相关配置,完成以下操作:
RT-Thread Kernel RT-Thread内核配置
RT-Thread Components RT-Thread组件配置
RT-Thread online package RT-Thread软件包配置
Hardware Drivers Config 板级硬件配置
操作示例如下:

该操作和基于RT-Thread Studio中的图形化操作很类似。
关于RT-Thread构建与配置系统,包含Kconfig和scons。请参考如下链接:
https://www.rt-thread.org/document/site/#/development-tools/build-config-system/summary
2.4 按需更改工具链参数
1、配置RV_ARCH和RV_ABI 架构指令集
用户可在工程目录下的env命令行执行如下操作完成ABI的配置,若无该操作,默认值为RV_ABI=ilp32。
set RV_ABI=
用户可在工程目录下的env命令行执行如下操作完成ARCH的配置,若无该操作,默认值为RV_ARCH=rv32imac。
set RV_ARCH=
支持的RV_ARCH和RV_ABI的组合有:
rv32imac + ilp32
rv32imafc + ilp32f
rv32gc + ilp32d
注意:
此变量只对gcc和zcc生效
2、配置 RTT_BUILD_TYPE编译选项
用户可在工程目录下的env命令行执行如下操作,若无该操作,默认值为flash_debug。
set RTT_BUILD_TYPE=
通常支持的RTT_BUILD_TYPE选项为:
flash_debug
flash_release
ram_debug
ram_release
flash_hybrid_debug
flash_hybrid_release
详细支持的选项可从rtconfig.py中查询。
注意:
当使用segger工具链时,RTT_BUILD_TYPE选项可不设置,相关编译选项可在Segger Embedded Studio IDE进行切换
3、切换工具链
用户可以工程目录下使用如下操作完成工具链的切换,或无该操作,默认工具链为gcc。
set RTT_TOOLCHAIN_PLATFORM=
其中,platform支持的选项为:
gcc
zcc
segger
2.5 生成、编译、调试工程
1、生成cmake工程
当使用gcc或zcc工具链时,可通过如下命令生成cmake工程
scons --target=cmake
之后,可使用自己熟悉的支持cmake的IDE(如vscode, CLion) 来打开cmake工程完成后续的开发和调试。
注意: 在该模式下,如果需要重新更改RT-Thread相关的配置,可能需要反复执行如下操作:
menuconfig
scons --target=cmake
2、生成Segger Embedded Studio工程
当使用segger工具链时,可通过如下命令生成Segger Embedded Studio工程。
set RTT_TOOLCHAIN_PLATFORM=segger
scons --target=ses
注意:在该模式下,如果需要重新更改RT-Thread相关的配置,可能需要反复执行如下操作:
menuconfig
scons --target=ses
在生成工程后,可以在工程目录下打开project.emProject文件,即可使用Segger Embedded Studio进行开发和调试。可在左上角不同的配置窗口选择不同的编译选项窗口

注:默认生成的proj.emProject中的RISC-V ISA和RISC-V ABI的组合为rv32imac及ilp32,如下图所示。用户可根据需要自己调整为相应的配置。

之后,可通过Segger Embedded Studio实现开发和调试。调试的体验和使用hpm_sdk一致。
3、基于env环境编译工程
Env 中携带了 Python & scons 环境,用户可在工程目录下的env命令行执行如下操作完成工程的编译。
使用scons 直接编译, 其中:N代表线程数。
scons -jN
编译完成后,会在工程目录下生成一个rtthread.elf文件,该文件就是可执行文件。
调试上,可以使用openocd + riscv32-unknown-elf-gdb 实现基于命令行的调试或者使用vscode的相关调试插件。也可使用jlink调试器配合Ozone来调试。
2.6 典型示例
使用 rv32imac+ilp32 + gcc基于scons完成代码的编译,编译选项为flash_release
按如下示例脚本所示:
set RTT_BUILD_TYPE=flash_release
set RTT_TOOLCHAIN_PLATFORM=gcc
set RV_ARCH=rv32imac set RV_ABI=ilp32
scons -j16
使用 rv32gc+ilp32d + gcc基于 scons完成 cmake工程的生成
按如下示例脚本所示:
set RTT_TOOLCHAIN_PLATFORM=gcc
set RV_ARCH=rv32gc
set RV_ABI=ilp32d
scons --target=cmake
使用 rv32imac+ilp32 + zcc基于scons完成代码的编译,编译选项为ram_debug
按如下示例脚本所示:
set RTT_BUILD_TYPE=ram_debug
set RTT_TOOLCHAIN_PLATFORM=zcc
set RV_ARCH=rv32imac
set RV_ABI=ilp32
scons -j16
使用 rv32gc+ilp32d + zcc基于 scons完成 cmake工程的生成
按如下示例脚本所示:
set RTT_TOOLCHAIN_PLATFORM=zcc
set RV_ARCH=rv32gc
set RV_ABI=ilp32d
scons --target=cmake
使用 segger基于 scons完成 segger embedded studio工程的生成
按如下示例脚本所示:
set RTT_TOOLCHAIN_PLATFORM=segger
scons --target=ses
3.小结
本文提供了在Windows上使用ENV工具开发基于先楫MCU的RT-Thread应用的简要流程,实际体验下来,整个过程和体验还是简单和直观的。大家如果在使用过程中有任何疑问和建议,欢迎在公众号下留言,或者在相应的github仓库提issue。
全部0条评论
快来发表一下你的评论吧 !