RT-Thread构建与配置系统

news2025/1/11 22:44:50

简述

RT-Thread的构建与配置系统由以下几个部分组成:
在这里插入图片描述

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

Kconfig在RT-Thread中的工作机制

C语言项目的裁剪配置本质通过条件编译和宏的展开来实现的,RT-Thread借助Kconfig这套机制更方便的实现了这一功能。

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
//相对应的rtconfig.h片段
#define RT_USING_TIMER_SOFT 
#define RT_TIMER_THREAD_PRIO 4
#define RT_TIMER_THREAD_STACK_SIZE 512

在这里插入图片描述

  1. menuconfig遍历解析各级Kconfig文件
  2. 保存配置到.config
  3. 最后生成rtconfig.h

Kconfig文件在源码中呈现树形结构,需要在工程的根目录下存放一份顶层Kconfig文件,顶层Kconfig文件在文件中通过source语句显示地调用各子目录下的Kconfig文件

Env在根目录下执行menuconfig命令后会递归解析各级Kconfig文件,然后提供如下配置界面,完成相应的配置后并保存,根目录下会存在一份.config保存当前选择的配置项,并将.config文件转为RT-Thread的系统配置文件rtconfig.h。

Kconfig语法及示例

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

注释
Kconfig采用#作为注释标记符,例如:

#This is a comment

config语句

config定义了一组新的配置选项

menu "Hardware Drivers Config"

menu "Onboard Peripheral Drivers"
	config BSP_USING_USB_TO_USART
		bool "Enable USB TO USART(uart1)"
		select BSP_USING_UART
		select BSP_USING_UART1
		default y
	
	config BSP_USING_USER_LED
		bool "Enable User LED(pa1)"
		select RT_USING_PIN
		default y
	
	cofig BSP_USING_USER_KEY
		bool "Enable User Key(pa0)"
		select RT_USING_PIN
		default y
endmenu

menu "On-chip Peripheral Drivers"
	config BSP_USING_GPIO
		bool "Enable GPIO"
		select RT_USING_PIN
		default y
	
	menuconfig BSP_USING_UART
		bool "Enable UART"
		default y
		select RT_USING_SERIAL
		if BSP_USING_UART1
		config BSP_USING_UART1
			bool "Enable UART1"
			default y
		
		config BSP_UART1_RX_USING_DMA
                bool "Enable UART1 RX DMA"
                depends on BSP_USING_UART1 && RT_SERIAL_USING_DMA
                default n

            config BSP_USING_UART2
                bool "Enable UART2"
                default n

            config BSP_UART2_RX_USING_DMA
                bool "Enable UART2 RX DMA"
                depends on BSP_USING_UART2 && RT_SERIAL_USING_DMA
                default n
         endif
endmenu

menu "Board extended module Drivers"
endmenu

endmenu

在这里插入图片描述
对于一个BSP而言,有如下三类驱动:

  • 板载外设驱动:指MCU之外,开发板上外设,例如TF卡、以太网和LCD等。
  • 片上外设:指MCU芯片上的外设,例如硬件定时器、ADC和看门狗等。
  • 扩展模块驱动:指可以通过扩展接口或者杜邦线连接的开发板的模块,如ESP8266

config语句

config BSP_USING_GPIO
	bool "Enable GPIO"
	select RT_USING_PIN
	default y

在这里插入图片描述
在这里插入图片描述
语句分析

  • config表示一个配置选项的开始,紧跟着的BSP_USING_GPIO是配置选项的名称,config下面几行定义了该配置选项的属性。
  • bool表示配置选项的类型,每个config菜单项都要有类型定义,变量有5种类型,bool类型,tristate三态类型,string字符串,hex十六进制,int整型。
  • select是反向依赖关系的意思,即当前配置选项被选中,则RT_USING_PIN就会被选中。
  • default表示配置选项的默认值,bool类型的默认值可以是y/n。
  • help帮助信息。

通过env选中以上配置界面的选项后,最终可在rtconfig.h文件中生成如下两个宏:

#define BSP_USING_GPIO
#define RT_USING_PIN

string类型

config RT_CONSOLE_DEVICE_NAME
	string "the device name for console"
	default "uart1"

#define RT_CONSOLE_DEVICE_NAME "uart1"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1198711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB中plot函数用法

目录 语法 说明 向量和矩阵数据 表数据 其他选项 示例 创建线图 绘制多个线条 根据矩阵创建线图 指定线型 指定线型、颜色和标记 在特定的数据点显示标记 指定线宽、标记大小和标记颜色 添加标题和轴标签 绘制持续时间并指定刻度格式 基于表绘制坐标 在一个轴…

编程艺术之源:深入了解设计模式和设计原则

深入了解设计模式和设计原则 一、认识设计模式1.1、设计模式是什么?1.2、设计模式是怎么来的?1.3、设计模式解决了什么问题? 二、设计模式的基础2.1、面向对象思想2.2、设计原则 三、如何学习设计模式3.1、明确目的3.2、学习步骤 总结 一、认…

时序预测 | MATLAB实现WOA-CNN-GRU-Attention时间序列预测(SE注意力机制)

时序预测 | MATLAB实现WOA-CNN-GRU-Attention时间序列预测(SE注意力机制) 目录 时序预测 | MATLAB实现WOA-CNN-GRU-Attention时间序列预测(SE注意力机制)预测效果基本描述模型描述程序设计参考资料 预测效果 基本描述 1.MATLAB实现…

“可一学院”新课程《区块链企业应用》正式上线

2023年8月,上海可一澈科技有限公司启动了一站式区块链学习平台“可一学院BitClass”。9月6日,可一学院正式推出一门新课程《区块链企业应用》,这门课程将帮助学习者了解企业需要什么样的区块链,以及应该如何运用这项技术来推动自身…

vite基础学习笔记:14.路由跳转(二)携带query参数

说明:自学做的笔记和记录,如有错误请指正 1. 路由跳转(携带query参数) (1)第一层路由(点击卡片路由跳转至新页面-携带query参数) 知识点: query传参对应的是path和qu…

Gradio App生产环境部署教程

如果机器学习模型没有投入生产供人们使用,就无法充分发挥其潜力。 根据我们的经验,将模型投入生产的最常见方法是为其创建 API。 然而,我们发现这个过程对于 ML 开发人员来说可能相当令人畏惧,特别是如果他们不熟悉 Web 开发的话。…

我在Vscode学OpenCV 色彩空间转换

文章目录 色彩【 1 】色彩空间(色域)(1)**RGB色彩空间**与xyz色彩空间的转换将 RGB 色彩空间转换为 XYZ 色彩空间将 XYZ 色彩空间转换为 RGB 色彩空间 (2)**CMYK色彩空间**(3)**HSV*…

贪吃蛇(c语言)!!源码加解析

目录 1.建议先把源码拿去VS中测试一下了解这个贪吃蛇是什么样的 1.头文件代码 2.源代码 3.测试代码 4.代码详解 1.头文件的解析 2.源代码的解析 1.光标的位置封装函数 2.打印欢迎界面 3.打印整体的一个地图 4.蛇的初始化 (重要) 5.打印边栏信…

过去5年,Python生态有什么变化?

你好,我是 EarlGrey,一名双语学习者,会一点编程,目前已翻译出版《Python 无师自通》、《Python 并行编程手册》等书籍。 点击上方蓝字关注我,持续接收优质好书、高效工具和赚钱机会,一起提升认知和思维。 过…

《网络协议》04. 应用层(DNS DHCP HTTP)

title: 《网络协议》04. 应用层(DNS & DHCP & HTTP) date: 2022-09-05 14:28:22 updated: 2023-11-12 06:55:52 categories: 学习记录:网络协议 excerpt: 应用层、DNS、DHCP、HTTP(URI & URL,ABNF&#xf…

2个器件,做1个恒流源

在项目中经常要用到恒流源,查找资料可以使用电压源芯片LM317构造一个电流源芯片。本文将电压源加上一个电阻改为电流源,这种设计思路可以扩展到其他类型的电源芯片上,如开关电源及其他类型的线性电源,关键点在于基准电压VREF的使用…

免费分享一套基于Springboot+Vue的在线考试系统,挺漂亮的

大家好,我是java1234_小锋老师,看到一个不错的SpringbootVue的在线考试系统,分享下哈。 项目视频演示 【免费】springbootvue在线考试系统 Java毕业设计_哔哩哔哩_bilibili【免费】springbootvue在线考试系统 Java毕业设计项目来自互联网&a…

GPT 写作与改编

GPT 写作与改编 文商科GPT 写作收益 改编技巧【改编一段话】【改编评价】【意识预设】落差,让顾客看到就感性和冲动害怕,让顾客看到就想买和拥有画面,切换空间,瞬间代入,勾人魂魄对比,设置参考物&#xff0…

港科夜闻 | 香港科大(广州)知识转移办公室创业中心主办的INNOPITCH路演推介会成功举办...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、11月7日,由香港科大(广州)知识转移办公室创业中心主办的“INNOPITCH路演推介会:新材料、能源环保、微电子技术专场”在香港科大(广州)校园内举办。十…

《网络协议》05. 网络通信安全 · 密码技术

title: 《网络协议》05. 网络通信安全 密码技术 date: 2022-09-10 15:16:15 updated: 2023-11-12 07:03:52 categories: 学习记录:网络协议 excerpt: 网络通信安全(ARP 欺骗,DoS & DDoS,SYN 洪水攻击,LAND 攻击&a…

实验室(检验科)信息系统源码,医学检验LIS系统源码,云LIS源码

实验室(检验科)信息系统源码,LIS源码,基于云计算技术的LIS系统源码,云LIS源码 LIS系统(LaboratoryInformationSystem) 即 实验室(检验科)信息系统,它是医院信息管理的重要组成部分之…

利用OGG实现PostgreSQL实时同步

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

任正非说:到现在我们终于可以说没有失败,但我们还不能说成功。

你好!这是华研荟【任正非说】系列的第36篇文章,让我们聆听任正非先生的真知灼见,学习华为的管理思想和管理理念。 华研荟导语:今天的任正非先生讲话主要节选了他在2001-2004年的几个关于IPD、ISC的论述,可能大家会发现…

Linux shell编程学习笔记24:函数定义和使用

为了实现模块化设计和代码重用,很多编程语言支持函数或过程,Linux shell也支持函数定义和调用。 Linux shell中的函数与其它编程语言很多有相似之处,也有自己独特之处。 1 函数的定义 1.1 标准格式 function 函数名(){语句或命令1……语句…

操作系统 | proc文件系统

🌈个人主页:Sarapines Programmer🔥 系列专栏:《操作系统实验室》🔖少年有梦不应止于心动,更要付诸行动。 目录结构 1. 操作系统实验之proc文件系统 1.1 实验目的 1.2 实验内容 1.3 实验步骤 1.4 实验…