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) 是一种行为型设计模式,它用于将数…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...