当前位置: 首页 > news >正文

RT-Thread的构建与配置系统

在这里插入图片描述

  • Kconfig:kernel config配置文件(提供系统的配置裁剪功能)
  • Scons:构建工具
  • env工具:主要提供构建系统所需的各种环境变量以及软件包的管理

Env

Env是RT-Thread推出的开发辅助工具,针对基于RT-Thread操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。

其内置的menuconfig提供了简单易用的配置剪裁工具,可对内核、组件和软件包进行自由裁剪,使系统以搭积木的方式进行构建。

  • menuconfig图形化配置界面,交互性好,操作逻辑强;
  • 丰富的文字帮助说明,配置无需查阅文档;
  • 使用灵活,自动处理依赖,功能开关彻底;
  • 自动生成rtconfig,h,无需手动修改;
  • 使用scons工具生成工程,提供编译环境,操作简单;
  • 提供多种软件包,模块化软件包耦合关联少,可维护性好;
  • 软件包可在线下载,软件包持续集成,包可靠性高。

scons是RT-Thread使用的编译构建工具,可以使用scons相关命令编译RT-Thread。

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 常用快捷键如图所示:

在这里插入图片描述

  • 开/关型:使用空格键来选中或者关闭
  • 数值、字符串型:按下回车键后会出现对话框,在对话框中对配置项进行修改

KConfig在RT-Thread中的工作机制

C语言项目的裁剪配置本质上是通过条件编译和宏的展开来实现的。
RT-Thread借助KConfig这套机制更方便的实现了这一功能。
当前以Windows下Env工具中的使用为例,简述Kconfig在RT-Thread的工作机制。

Kconfig机制包括了Kconfig文件和配置UI界面(如menuconfig,pyconfig等)。

  • Kconfig文件中的配置项会映射至rtconfig.h中。
  • Kconfig文件可以随源码分散至各级子目录,便于灵活修改。
# .config片段
CONFIG_RT_USING_TIMER_SOFT=y
CONFIG_RT_TIMER_THREAD_PRIO=4
CONFIG_RT_TIMER_THREAD_STACK_SIZE=512
CONFIG_RT_DEBUG=y
//相对应的rtconfig.h片段
#define RT_USING_TIMER_SOFT
#define RT_TIMER_THREAD_PRIO 4
#define RT_TIMER_THREAD_STACK_SIZE 512
#define RT_DEBUG

在这里插入图片描述
Kconfig文件在源码中呈现树形结构,需要在工程的根目录下存在一份顶级Kconfig文件,顶级Kconfig文件在文件中通过source语句显示地调用各子目录下的Kconfig文件。
Env在根目录下执行menuconfig命令后会递归解析各级Kconfig文件,然后提供如下配置界面,完成相应的配置后并保存,根目录下会存在一份.config文件保存当前选择的配置项,并将.config文件转为RT-Thread的系统配置文件rtconfig.h。

Kconfig源于Linux内核的配置构建系统。

config语句

以下为RT-Thread系统中config语句的示例

config BSP_USING_GPIObool "Enable GPIO"select RT_USING_PINdefault yhelpconfig gpio

config表示一个配置选项的开始,紧跟着的BSP_USING_GPIO是配置选项的名称,
bool表示选项的类型
select是反向依赖关系的意思,即当前配置选项被选中,则RT_USING_PIN就会被选中。
default表示配置选项的默认值
help帮助信息
在这里插入图片描述
在这里插入图片描述
通过env选中以上配置界面的选项后,最终可在rtconfig.h文件中生成如下两个宏:

#define RT_USING_PIN
#define BSP_USING_GPIO

menu/endmenu语句

menu语句用于生成菜单。

menu "Hardware Drivers Config"config BSP_USING_COM2bool "Enable COM2 (uart2 pin conflict with Ethernet and PWM)"select BSP_USING_UARTselect BSP_USING_UART2default nconfig BSP_USING_COM3bool "Enable COM3 (uart3 pin conflict with Ethernet)"select BSP_USING_UART3default n
endmenu
http://www.lryc.cn/news/222364.html

相关文章:

  • 合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)
  • Git的简介以及基本使用
  • django安装数据库
  • springboot--外部环境配置
  • 『MySQL快速上手』-④-表的操作
  • 2023年10月Web3行业月度发展报告区块链篇 |陀螺研究院
  • 【TES745D】青翼自研基于复旦微的FMQL45T900全国产化ARM核心模块(100%国产化)
  • 初次给外贸客户发邮件范文
  • C语言中的多种形式的循环结构
  • 7天入门python系列之第二天python 基础语法
  • 【星海出品】flask 与docker
  • Oracle的to_date()函数解决sql语句日期格式问题
  • Vue实现面经基础版案例(路由+组件缓存)
  • uniapp打开外部链接方式
  • SecureCRT安装、注册教程
  • 音乐免费下载mp3格式+音频格式转换+剪辑音频+合并音频教程
  • 腾讯云16核服务器配置有哪些?CPU型号处理器主频性能
  • 什么是屏蔽机房?
  • wsl2 ubuntu22.04安装docker
  • 【Java SE】详解数组
  • windows下直接把文件夹打包成war包
  • 搭建嵌入式GDB调试环境以及VSCode+gdbserver 图形化调试
  • 深入理解 Django 模板系统
  • Flutter:安装依赖报错doesn‘t support null safety
  • MS2111多点低压差分(M-LVDS)线路驱动器和接收器
  • flink的起源、概念、特点、应用
  • 11月第1周榜单丨飞瓜数据B站UP主排行榜榜单(B站平台)发布!
  • Modbus入门
  • Sysmon 日志监控
  • JWT(JSON web token)的三个组成部分