RT-Thread Env使用
Env用户手册
Env是RT-Thread推出的开发辅助工具,针对基于RT-Thread操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。
其内置的menuconfig提供了简单易用的配置裁剪工具,可对内核、组件和软件包进行自由裁剪,使系统以搭积木的方式进行构建。
主要特性
- menuconfig图形化配置界面,交互性好,操作逻辑强。
- 丰富的文字帮助说明,配置无需查阅文档。
- 使用灵活,自动处理依赖,功能开关彻底。
- 自动生成rtconfig.h,无需手动修改。
- 使用scons工具生成工程,提供编译环境,操作简单。
- 提供多种软件包,模块化软件包耦合关联少,可维护性好。
- 软件包可在线下载,软件包持续集成,包可靠性高。
准备工作
Env工具包含了RT-Thread源代码开发编译环境和软件包管理系统。
Env的使用方法
RT-Thread的软件包环境主要以命令控制台为主,同时以字符型界面进行辅助,使得尽量减少修改配置文件的方式即可搭建RT-Thread开发环境的方式。打开Env控制台有两种方式:
编译BSP
scons是RT-Thread使用的编译构建工具,可以使用scons相关命令来编译RT-Thread。
打开控制台后,可以在命令模式下使用cd命令切换到想要配置的BSP根目录中。
Env中携带了Python&scons环境,只需运行scons命令即可使用默认的ARM_GCC工具链编译bsp。
如果使用mdk/iar来进行项目开发,可以直接使用BSP中的工程文件或者使用以下命令中的其中一种,重新生成工程,再进行编译下载。
scons --target=iar
scons --target=mdk4
scons --target=mdk5
BSP配置:menuconfig
menuconfig是一种图形化配置工具,RT-Thread使用其对整个系统进行配置、裁剪。

进入BSP根目录,输入menuconfig命令即可打开其界面。menuconfig常用快捷键如图所示:
- ESC键退出
- ?键帮助
- /键打开搜索选项
- 空格键选中获取取消选项
- 回车键进入子菜单
修改配置
menuconfig有多种类型的配置项,修改方法也有所不同,常见类型如下:
- 开关型:使用空格键来选中或者关闭
- 数值、字符串型:按下回车键后会出现对话框,在对话框中对配置项进行修改
保存配置
选择好配置项之后按ESC键退出,**选择保存修改即可自动生成rtconfig.h文件。**此时再次使用scons命令就会根据新的rtconfig.h文件重新编译工程了。
软件包管理:package
RT-Thread提供一个软件包管理平台,这里存放了官方提供或开发者提供的软件包。该平台为开发者提供了众多可重用软件包的选择,这也是RT-Thread生态的重要组成部分。
package工具作为Env的组成部分,为开发者提供了软件包的下载、更新、删除等管理功能。
Env命令行输入pkgs可以看到命令简介:

下载、更新、删除软件包
在下载更新软件包前,需要现在menuconfig中开启想要操作的软件包,这些软件包位于RT-Thread online packages菜单下,进入菜单后,即可看到软件包分类:

找到需要的软件包然后选中开启,保存并退出menuconfig。
此时软件包已被标记选中,但是还没有下载到本地,所以还无法使用。
- 下载:如果软件包在本地已被选中,但是未下载,此时输入:pkgs --update,该软件包自动下载。
- 更新:如果选中的软件包在服务器端有更新,并且版本号选择的是latest。此时输入pkgs --update,该软件包将会在本地进行更新。
- 删除:某个软件包如果无需使用,需要先在menuconfig中取消其的选中状态,然后再执行pakg --update,此时本地已下载但未被选中的软件包将会被删除。
升级本地软件包信息
随着package系统的不断壮大,会有越来越多的软件包加入进来,所以本地看到menuconfig中的软件包列表可能会与服务器不同步。使用pkgs --upgrade命令解决该问题。
这个命令不仅会对本地的包信息进行更新同步,还会对Env的功能脚本进行升级,建议定期使用。
Env工具配置
新版本的Env工具中加入了自动更新软件包和自动生成mdk/iar工程的选项,默认是不开启的。
可以使用menuconfig -s/–setting命令进行配置。

- 软件包自动更新功能:在退出menuconfig功能下,会自动使用pkgs --update命令来下载并安装软件包,同时删除旧的软件包。
- 当修改menuconfig配置后,必须输入scons --target=xxx来重新生成工程。开启此功能,就会在退出menuconfig时,自动重新生成工程,无需再手动输入scons命令来重新生成工程。
menuconfig中选项的修改方法
如果想在menuconfig的配置项中添加宏定义,则可以修改BSP下的Kconfig文件,修改方法可以在网络中搜索Kconfig语法关键字获得详细的说明文档,也可以参数RT-Thread中的Kconfig文件或者已经支持过menuconfig的BSP中的Kconfig文件。
新的项目添加menuconfig功能
这里的新项目,指的是还未生成.config和rtconfig.h的全新开发的项目。因为这两个文件,只有在menuconfig第一次保存时才会创建。具体流程如下:
- 将已经支持menuconfig功能的BSP里面的Kconfig文件拷贝到新的项目根目录中。
- 注意修改Kconfig中的RTT_ROOT值为RT_Thread所在目录,否则可能提示找不到RTT_ROOT。
- 使用menuconfig命令开始配置即可。
旧项目添加menuconfig功能
这里的旧项目指的是已经经过一段时间的开发,而且项目中存在已经修改过的rtconfig.h文件,但是没有使用过menuconfig来配置的项目。具体流程如下:
- 首先备份旧项目内的rtconfig,h文件。
- 使用scons --genconfig命令根据已有的rtconfig.h生成.config文件,这里生成的.config文件保存了旧项目中rtconfig.h文件对项目的配置参数。
- 将已经支持menuconfig功能的BSP里面的kconfig文件拷贝到要修改项目的根目录中。
- 注意修改Kconfig中的RTT_ROOT值为RT-Thread所在目录,否则可能提示找不到RTT_ROOT。
- 使用 menuconfig 命令来配置我们要修改的旧项目。menuconfig 会读取第二步生成的 .config 文件,并根据旧项目的配置参数生成新的 .config 文件和 rtconfig.h 文件 。
- 对比检查新旧两份 rtconfig.h 文件,如果有不一致的地方,可以使用 menuconfig 命令对配置项进行调整。
相关文章:
RT-Thread Env使用
Env用户手册 Env是RT-Thread推出的开发辅助工具,针对基于RT-Thread操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。 其内置的menuconfig提供了简单易用的配置裁剪工具,可对内核、组件和软件包进行自由裁剪…...
2011年09月21日 Go生态洞察:Go图像处理包
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
《QT从基础到进阶·十七》QCursor鼠标的不同位置坐标获取
一些常用鼠标图形: 鼠标光标相对于整个电脑屏幕的位置:QCursor::pos() 当前光标相对于当前窗口的位置:this->mapFromGlobal(QCursor::pos()) void MainWindow::mouseReleaseEvent(QMouseEvent* event) {QPoint pos event->pos(); …...
K8s----资源管理
目录 一、Secret 1、创建 Secret 1.1 用kubectl create secret命令创建Secret 1.2 内容用 base64 编码,创建Secret 2、使用方式 2.1 将 Secret 挂载到 Volume 中,以 Volume 的形式挂载到 Pod 的某个目录下 2.2 将 Secret 导出到环境变量中 二、Co…...
java.net.UnknownServiceException: CLEARTEXT communication to 127.0.0.1 not p
解决方案3(推荐) 在 AndroidManifest.xml —> application节点中增加 <application...android:usesCleartextTraffic"true"... />...
STM32——系统时钟(概述,问题总结)
文章目录 前言系统时钟1.为什么32有那么多时钟源?2.主频有什么用?3.时钟与主频的关系?4.STM32提供了四种可选择的时钟源头。5.独立看门狗的时钟源只能是 LSI。 前言 系统时钟后续会出一个详细的关于STM32F103的系统时钟分析,可以关注一下。…...
魔众文库系统 v5.5.0 批量快捷上传,文档图标优化,档转换逻辑优化
魔众文库系统基于文档系统知识,建立平台与领域,打造流量、用户、付费和变现的闭环,帮助您更好的搭建文库系统。 魔众文库系统发布v5.5.0版本,新功能和Bug修复累计14项,批量快捷上传,文档图标优化ÿ…...
52. 携带研究材料
题目描述 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间࿰…...
局域网内部服务器访问外部网络
一、环境说明 如下图所示,局域网1中的服务器是可以访问外网的,局域网2中的服务器发出的数据包经过中间路由可以到达局域网1中的服务器。现在有一种需求需要使局域网2中的服务器也要能访问外网,这里考虑采用如下方法来实现。 二、软…...
IP行业API助力于网络分析和数据挖掘
引言 在当今数字化时代,数据成为了企业、科研机构和政府决策者的重要资源,而IP行业API则成为了数据分析及挖掘的工具之一。IP行业API是一种能够查询IP地址所属的行业分类信息的应用程序接口,它能够提供在网络分析、用户行为分析及大数据挖掘…...
Azure 机器学习 - 如何使用模板创建安全工作区
目录 先决条件了解模板配置模板连接到工作区疑难解答错误:Windows 计算机名的长度不能超过 15 个字符,并且不能全为数字或包含以下字符 本教程介绍如何使用 [Microsoft Bicep]和 [Hashicorp Terraform]模板创建以下 Azure 资源: Azure 虚拟网…...
可变类与不可变类
可变类(Mutable Class)和不可变类(Immutable Class)是面向对象编程中的两种类的设计模式,它们在对象的状态和行为上有不同的特性。 可变类(Mutable Class): 状态可修改:…...
什么是Node.js的调试器(debugger)工具?
聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...
log4j CVE-2021-44228 RCE漏洞复现
一、漏洞特征 Apache Log4j 是 Apache 的一个开源项目,Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。我们可以控制日志信息输送的目的地为控制台、文件、GUI组件等,通过定义每一条日志信息的…...
leetcode 刷题 - 有效三角形个数 - 长度最小的子数组 - 无重复字符的最长子串
l611. 有效三角形的个数 - 力扣(LeetCode) 给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。 示例 1:输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3示…...
如何更好的使用Copilot
Copilot从诞生到现在过去了挺长时间了,大家对Copilot的评价算是褒贬不一吧。有些人觉得Copilot高效且神奇,可以对自己的工作大大提效;有些觉得也就那样,为什么要花那么多钱做这个事情,钱它不香吗? 从最开始…...
C++ Qt 学习(五):Qt Web 编程
1. Chrome 技术介绍 大多数 web 技术都是基于 chrome,例如 CEF、QCefView 以及 QWebEngineView,这些都是在 native 界面里用来显示 html 网页,并且可以与 web 交互 例如常见的登录窗口、优酷的视频区域、WPS 的稻壳商城等,这些都…...
基于arm-gcc 工具链开发mcu程序时,怎么便捷查看内存映像
目录 一、背景 arm-none-eabi-size 二、脚本实现 2.1. 源码2.2. 效果呈现 三、实现说明 3.1 基本思路3.2 涉及到的shell 相关知识 3.2.1 sed 实现只打印第二行3.2.2 cut 截取某一行数据的第n个字段3.2.3 使用bc 计算器,实现浮点运算 一、背景 arm-gcc 工具链…...
亚马逊云科技Zero ETL集成全面可用,可运行近乎实时的分析和机器学习
亚马逊云科技数据库、数据分析和机器学习全球副总裁Swami Sivasubramanian曾指出:“数据是应用、流程和商业决策的核心。”如今,客户常用的数据传输模式是建立从Amazon Aurora到Amazon Redshift的数据管道。这些解决方案能够帮助客户获得新的见解&#x…...
Java 设计模式——访问者模式
目录 1.概述2.结构3.案例实现3.1.抽象访问者类3.2.抽象元素类3.3.具体元素类3.4.具体访问者类3.5.对象结构类3.6.测试 4.优缺点5.使用场景6.扩展6.1.分派6.2.动态分配6.3.静态分配6.4.双分派 1.概述 访问者模式 (Visitor Pattern) 是一种行为型设计模式,它用于将数…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
