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

menuconfig 图形化配置原理说明三

一.  简介

本文继续简单了解一下,uboot的图形化配置原理。具体了解 Kconfig语法。

之前文章了解了几个 Kconfig语法。地址如下:

menuconfig 图形化配置原理说明二-CSDN博客

二.  menuconfig 图形化配置之 Kconfig语法

1.  config 条目

顶层 Kconfig 中的 “General setup” 子菜单内容如下:

menu "General setup"
config LOCALVERSIONstring "Local version - append to U-Boot release"
...................
config LOCALVERSION_AUTO
bool "Automatically append version information to the version string"default y
...................
config SYS_MALLOC_F_LENhex "Size of malloc() pool before relocation"
...................
endif
endmenu # General setup
可以看出,在 menu/endmenu 代码块中,有大量的 “ config xxxx ” 的代码块,也就是 config 条目。 config 条目就是 “ General setup ” 菜单的具体配置项,如下图 所示:

顶层 Kconfig中,第 1行中,以 config 关键字开头,后面跟着 LOCALVERSION,LOCALVERSION就是配置项名字。

config 条目都是以 config条目开头的。后面紧跟着配置项名,例如,LOCALVERSION,使能了条目以后,就会在 .config文件 里面添加 CONFIG_LOCALVERSION=y。

由此可知, .config 文件中的 CONFIG_xxx (xxx 就是具体的配置项名字 ) 就是 Kconfig 文件中 config 关键字后面的配置项名字加上 CONFIG_ 缀。

config 关键字下面的这几行是配置项属性,3~5 行是 LOCALVERSION 的属性。

属性里面描述了配置项的类型、输入提示、依赖关系、帮助信息和默认值等。
17 行的 string 是变量类型,也就是“ CONFIG_ LOCALVERSION ”的变量类型。
可以为:bool tristate string hex int ,一共 5 种。
最常用的是 bool tristate string 这三种。
bool 型有两种值: y n ,当为 y 的时候表示使能这个配置项,当为 n 的时候就禁止这个配置项。
tristate 类型有三种值: y m n ,其中 y n 的涵义与 bool 类型一样, m 表示将这个配置项编
译为模块。
string 为字符串类型,所以 LOCALVERSION 是个字符串变量,用来存储本地字符 串,选中以后即可输入用户定义的本地版本号。如下可以输入:

string 后面的 “ Local version - append to U-Boot release ” 就是这个配置项在图形界面上的显示出来的标题。
18 行, help 表示帮助信息,告诉我们配置项的含义,当我们按下“ h ”或“ ? ”弹出来的帮助界面就是 help 的内容。

2.  source

source 用于读取另一个 Kconfig ,例如顶层 Kconfig 文件中 :
source "arch/Kconfig"

顶层 Kconfig 读取 uboot根目录下的 arch/目录下的 Kconfig。

3. choice/endchoice

arch/Kconfig 文件中有如下代码:
choiceprompt "Architecture select"default SANDBOX
config ARCbool "ARC architecture"
.................config ARMbool "ARM architecture"
.................
config X86bool "x86 architecture"
.................
endchoice

choice/endchoice 代码段定义了一组可选择项,将多个类似的配置项组合在一起,供用户单
选或者多选。
就是选择处理器架构,可以从 ARC ARM AVR32 等这些架构 中选择,这里是单选。
uboot 图形配置界面上选择“ Architecture select ”,进入以后,如下图所示:

可以在图 中通过移动光标来选择所使用的 CPU 架构。
2 行的 prompt , 给出这个 choice/endchoice 段的提示信息为“ Architecture select ”。

4. depends on 和 select

打开 arch/Kconfig 文件,在里面有这如下代码:
config HAVE_GENERIC_BOARDboolconfig SYS_GENERIC_BOARDbooldepends on HAVE_GENERIC_BOARDchoiceprompt "Architecture select"default SANDBOXconfig ARCbool "ARC architecture"select HAVE_PRIVATE_LIBGCCselect HAVE_GENERIC_BOARDselect SYS_GENERIC_BOARDselect SUPPORT_OF_CONTROL

6 行,“ depends on ” 说明 SYS_GENERIC_BOARD 项依赖于 HAVE_GENERIC_BOARD ,
也就是说 HAVE_GENERIC_BOARD 被选中以后, SYS_GENERIC_BOARD 才能被选中。
14~17 行,“ select ” 表示反向依赖,当选中 “ ARC ” 以后,“ HAVE_PRIVATE_LIBGCC ”、
HAVE_GENERIC_BOARD ”、“ SYS_GENERIC_BOARD ”和“ SUPPORT_OF_CONTROL ”这四个也会被选中。

5.  comment

comment 用 于 注 释 , 也 就 是 在 图 形 化 界 面 中 显 示 一 行 注 释 , 打 开 文 件
drivers/mtd/nand/Kconfig ,有如下所示代码:
config NAND_ARASANbool "Configure Arasan Nand"helpThis enables Nand driver support for Arasan nand flashcontroller. This uses the hardware ECC for read andwrite operations.comment "Generic NAND options"

8 行,使用 comment 标注了一行注释,注释内容为:“ Generic NAND options ”,这行注释在配置项 NAND_ARASAN 的下面。在图形化配置界面中按照如下路径打开:
-> Device Drivers
        -> NAND Device Support

如下图所示:

从上图中可以看出,在配置项“ Configure Arasan Nand ”下面有一行注释,注释内容为
*** Generic NAND options *** ”。

相关文章:

menuconfig 图形化配置原理说明三

一. 简介 本文继续简单了解一下,uboot的图形化配置原理。具体了解 Kconfig语法。 之前文章了解了几个 Kconfig语法。地址如下: menuconfig 图形化配置原理说明二-CSDN博客 二. menuconfig 图形化配置之 Kconfig语法 1. config 条目 顶层 Kconfig …...

Ansible简介

环境 控制节点:Ubuntu 22.04Ansible 2.10.8管理节点:CentOS 8 组成 Ansible环境主要由三部分组成: 控制节点(Control node):安装Ansible的节点,在此节点上运行Ansible命令管理节点&#xff…...

Tomcat+nginx负载均衡和动静分离

Nginx实现负载均衡和动静分离的原理 Nginx实现负载均衡是通过反向代理实现Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发。 但是不是把所有的web请求转发,而是将静态页面请求Ncinx服务器自己来处理&#xff0c…...

全景环视AVM标定

目录 一、前言 二、鱼眼模型 三、标定流程 四、角点提取 4.1 亚像素坐标计算...

【JavaScript】leetcode链表相关题解

【JavaScript】leetcode链表相关题解 一、什么是链表?二、Javascript中的链表三、leetcode相关链表2.两数相加237.删除链表中的节点206.反转链表 💎个人主页: 阿选不出来 💎个人简介: 大三学生,热爱Web前端,随机掉落学…...

洞察运营机会的数据分析利器

这套分析方法包括5个分析工具: 用“描述性统计”来快速了解数据的整体特点。用“变化分析”来寻找数据的问题和突破口。用“指标体系”来深度洞察变化背后的原因。用“相关性分析”来精确判断原因的影响程度。用“趋势预测”来科学预测未来数据的走势,...

使用Python实现文字的声音播放

winsound 是 Python 的一个内置模块,它提供了访问 Windows 操作系统的声音播放功能的接口。这个模块可以用来播放简单的声音,例如提示音或者短促的音效。 # Author : 小红牛 # 微信公众号:WdPython import win32com.client import winsound#…...

gulp自动化构建

什么是Gulp? Gulp是一种前端开发过程中广泛使用的自动化构建工具,它是基于Node.js构建的,能够极大地提高开发效率和代码质量。Gulp的主要功能包括文件的压缩、合并、重命名等,同时它也支持文件监听和浏览器自动刷新等功能。使用Gulp&#x…...

java时间解析生成定时Cron表达式工具类

Cron表达式工具类CronUtil 构建Cron表达式 /****方法摘要:构建Cron表达式*param taskScheduleModel*return String*/public static String createCronExpression(TaskScheduleModel taskScheduleModel){StringBuffer cronExp new StringBuffer("");if(…...

JavaEE 网络原理——TCP的工作机制(末篇 其余TCP特点)

文章目录 一、滑动窗口二、流量控制三、拥堵控制四、延时应答五、捎带应答六、面向字节流七、异常情况八、总结 其余相关文章: JavaEE 网络原理——TCP的工作机制(中篇 三次握手和四次挥手) 本篇文章衔接的是前面两篇文章的内容,在这里继续解释 TCP 的内…...

【软件测试】了解JUnit单元测试框架常用注解

目录 1、认识JUnit 2、Junit中常见的注解 1、Test 2、Disabled 3、BeforeAll和AfterAll 4、BeforeEach和AfterEach 5、 ParameterizedTest:参数化 6、order 3、断言 1、断言相等【Assertions.assertEquals(预期,比较值)】;相等测试通…...

【广州华锐互动】三维全景3D消防科普展馆

在我们的日常生活中,火灾安全是一个不容忽视的重要问题。然而,由于缺乏对火灾的了解和应对技巧,许多人在面对火灾时往往感到无助和恐慌。为了解决这个问题,广州华锐互动开发了三维全景3D消防科普展馆,它是一个以虚拟现…...

某大型车企:加强汽车应用安全防护,开创智能网联汽车新篇章

​某车企是安徽省最大的整车制造企业,致力于为全球消费者带来高品质汽车产品和服务体验,是国内最早突破百万销量的汽车自主品牌。该车企利用数字技术推动供应链网络的新型互动,加快数字化转型,持续进行场景创新、生态创新&#xf…...

LLVM学习笔记(50)

4.1.4. DAG合并与合法化 来自SelectionDAGBuilder的SelectionDAG输出还不能进行指令选择,必须通过额外的转换——显示在上图。在指令选择前应用的遍序列如下: 匹配一组节点,在有利时使用更简单的构造来替换它们,DAG合并遍优化Se…...

rpc入门笔记0x01

syntax "proto3"; // 这是个proto3的文件message HelloRequest{ // 创建数据对象string name 1; // name表示名称,编号是1 }生成python文件 安装grpcio和grpcio-tools库 pip install grpcio #安装grpc pip install grpcio-tools #安装grpc tools生成…...

web - Tomcat服务器

文章目录 目录 文章目录 前言 一 . CS和BS的异同 二 . 什么是Tomcat 二 . Tomcat安装 四 . Tomcat目录结构 bin目录: 用于存放二进制的可执行文件 config目录 server.xml:配置整个服务器信息。例如修改端口号。默认HTTP请求的端口号是:8080 lib目录 log…...

后端接口返回常见的状态码

2开头 (请求成功)表示成功处理了请求的状态代码 200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。 201 (已创建) 请求成功并且服务器创建了新的资源。 202 &#xf…...

50.MongoDB快速入门实战

MongoDB概念 MongoDB是一个文档数据库(以 JSON 为数据模型),由C语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。 原则上 Oracle 和 MySQL 能做的事情,MongoDB 都能做(包括 ACID 事务&#x…...

一款功能强大的音乐曲谱软件Guitar Pro 8 .1.1for Mac 中文破解版

Guitar Pro 8 .1.1for Mac 中文破解版是一款功能强大的音乐曲谱软件,非常适合学习如何玩,改进技巧,重现喜爱的歌曲或陪伴自己。可以帮助我们进行吉他的学习、绘谱与创作,它包含了几乎所有的吉他现有指法及音色,在做弹拨…...

图论基础和表示

一、概念及其介绍 图论(Graph Theory)是离散数学的一个分支,是一门研究图(Graph)的学问。 图是用来对对象之间的成对关系建模的数学结构,由"节点"或"顶点"(Vertex)以及连接这些顶点的"边"(Edge&a…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

算术操作符与类型转换:从基础到精通

目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...

Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合

无论是python,或者java 的大型项目中,都会涉及到 自身平台微服务之间的相互调用,以及和第三发平台的 接口对接,那在python 中是怎么实现的呢? 在 Python Web 开发中,FastAPI 和 Django 是两个重要但定位不…...

【大厂机试题解法笔记】矩阵匹配

题目 从一个 N * M(N ≤ M)的矩阵中选出 N 个数,任意两个数字不能在同一行或同一列,求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求:1 ≤ K ≤ N ≤ M ≤ 150 输入格式 N M K N*M矩阵 输…...

mcts蒙特卡洛模拟树思想

您这个观察非常敏锐,而且在很大程度上是正确的!您已经洞察到了MCTS算法在不同阶段的两种不同行为模式。我们来把这个关系理得更清楚一些,您的理解其实离真相只有一步之遥。 您说的“select是在二次选择的时候起作用”,这个观察非…...