前言
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 KernelRT-Thread内核配置
RT-Thread ComponentsRT-Thread组件配置
RT-Thread online packageRT-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。
-
mcu
+关注
关注
147文章
18142浏览量
372554 -
WINDOWS
+关注
关注
4文章
3620浏览量
91905 -
RT-Thread
+关注
关注
32文章
1453浏览量
42448
发布评论请先 登录
先楫RT-Thread BSP v1.2.0的主要功能

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

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

基于RT-Thread操作系统env开发工具的使用方法
在Linux中使用RT-Thread Env工具的简明指南

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

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

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

在Ubuntu上开发基于先楫MCU的RT-Thread应用指南

评论