RT-Thread构建与配置系统

简述

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"

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【狂神说Java】Mybatis-plus

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :【狂神说Java】 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台&#xff0c…

ESP32网络开发实例-将数据保存到InfluxDB时序数据库

将数据保存到InfluxDB时序数据库 文章目录 将数据保存到InfluxDB时序数据库1、InfluxDB介绍与安装3、软件准备4、硬件准备5、代码实现6、InfluxDB数据可视化在本文中,将介绍 InfluxDB 以及如何将其与 ESP32 开发板一起使用。 我们将向展示如何创建数据库桶并将 ESP32 数据发送…

Python读取csv文件并绘制曲线

前言 有时候我们的数据保存在csv文件中,但是想要更加直观的看出数据的好坏,最好利用matplotlib来画出曲线图 数据准备 我的数据格式如下: 在画图时,我需要把第一行去掉 # 去除第一个元素 xdata xdata.drop(xdata.index[0])…

【Dubbo】Dubbo注册中心原理

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于…

工作量证明是解决拜占庭将军问题的唯一办法

号外:教链内参11.10《以太坊反攻》 文 | Oleg Andreev. 2014.5.23. 原标题:Proof That Proof-of-Work is the Only Solution to the Byzantine Generals Problem (本文是)回复Vlad_Roberto的话:“不,&#…

【SoC基础】DMA的工作原理

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

PTA_乙级_1086

#include <iostream> #include<string> #include<algorithm> using namespace std;int reverseNum(int n){//将数字n转为字符串string nStrto_string(n);//翻转字符串reverse(nStr.begin(),nStr.end());//转为数字int resstoi(nStr);return res; }int main()…

Python 潮流周刊#26:requests3 的现状

△点击上方“Python猫”关注 &#xff0c;回复“1”领取电子书 你好&#xff0c;我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容&#xff0c;大部分为英文。本周刊开源&#xff0c;欢迎投稿[1]。另有电报频道[2]作为副刊&#xff0c;补充发布更加丰富的资讯。 &#…

【LeetCode刷题-二分查找】--69.x的平方根

69.x的平方根 class Solution {public int mySqrt(int x) {int l 0,r x ,ans -1;while(l < r){int mid (r - l)/2 l;if((long)mid * mid <x){ans mid;l mid 1;}else{r mid - 1;}}return ans;} }

云原生微服务架构及实现技术

云原生是一种技术理念和架构方法&#xff0c;它充分利用云计算的优势&#xff0c;将应用程序和基础设施进行优化&#xff0c;以适应云环境的特性。云原生的设计原则主要包括弹性、韧性、安全性、可观测性、灰度等&#xff0c;旨在让企业在云环境中实现轻量、敏捷、高度自动化的…

webpack提升构建速度

目录 配置优化减少 resolve 的解析把 loader 应用的文件范围缩小减少 plugin 的消耗选择合适的 devtool 使用工具thread-loaderDLLPlugin 流程优化拆分构建步骤拆分项目代码 版本更新总结 前端项目随着时间推移和业务发展&#xff0c;页面可能会越来越多&#xff0c;或者功能和…

简单描述下微信小程序的相关文件类型以及微信小程序和uniapp的区别?

前言 微信小程序是一种基于微信平台的轻量级应用&#xff0c;其文件类型涵盖了不同用途的文件。了解这些文件类型能帮助开发者更好地构建小程序。 微信小程序是微信平台上的一种轻量级应用程序&#xff0c;为用户提供了一种便捷的方式来在微信生态系统内进行各种操作和获取服务…

MYSQL索引+常见的锁

一)联合索引: 1)定义:是给一张表上面的多个列增加索引&#xff0c;也就是说给表上面的多个列增加索引&#xff0c;供快速查询使用&#xff0c;当两个列的组合是唯一值时&#xff0c;联合索引是个不错的选择 联合索引和单个索引对比来讲&#xff0c;联合索引的所有索引项都会出现…

【左程云算法全讲7】二叉树基础

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于左程云算法课程进行的&#xff0c;每个知识点的修正和深入主要参考…

LeetCode(7)买卖股票的最佳时机【数组/字符串】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 121. 买卖股票的最佳时机 1.题目 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票…

Shell编程入门--概念、特性、bash配置文件

目录 一、Shell概念1.定义2.分类和使用场景2.1.分类和切换2.2.使用场景 3.特性3.1.文件描述符与输出重定向3.2.历史命令---history3.3.别名 --alias3.4.命令排序执行3.5.部分快捷键3.6.通配符置换 4.脚本规范5.脚本运行方式5.1.bash脚本执行5.2.bash脚本测试 二、bash配置文件1…

抢占全球30%碳化硅市场份额!英飞凌押注低碳化和数字化“新时代”

“未来十年将是低碳化和数字化‘双轮驱动’发展的时代。” 英飞凌科技全球高级副总裁及大中华区总裁、英飞凌科技大中华区电源与传感系统事业部负责人潘大伟在英飞凌2023年大中华区生态创新峰会上表示。 当前&#xff0c;“数字化低碳化”新趋势正在席卷和重塑着未来世界的千行…

【MySQL】初识数据库

目录 1.概念2.基本使用显示当前的数据库列表创建数据库使用数据库创建表向表中插入数据查看创建的表中的数据 3.SQL的分类4.存储引擎 1.概念 MySQL本质是基于C(mysql)S(mysqld)模式的一种网络服务。 mysqld&#xff1a;它是数据库的服务器端&#xff08;这是一个守护进程&…

SpringBoot代码生成器mapper model

Spring Boot 是一个由 Pivotal 团队提供的全新框架&#xff0c;设计目的是简化新 Spring 应用的初始搭建和开发过程。它采用特定的配置方式&#xff0c;使开发人员能够快速上手并构建基于 Spring 的应用程序。Spring Boot 提供了一套默认配置&#xff0c;包括 Spring、Spring M…

Mathtype公式自动转Word自带公式

Mathtype公式自动转Word自带公式 前言/word技巧探索过程参考资料&#xff08;有效与无效&#xff09;全自动方案/代码/教程 前言/word技巧 word公式 用ALT号可以输入简单latex显示公式&#xff1b;复杂度&#xff0c;需要引入latex包的不行&#xff1b;显示不出来的话按一下en…