menuconfig 图形化配置原理说明三

news2024/12/26 0:55:51

一.  简介

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

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

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

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

1.  config 条目

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

menu "General setup"
config LOCALVERSION
	string "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_LEN
	hex "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 文件中有如下代码:
choice
	prompt "Architecture select"
	default SANDBOX
config ARC
	bool "ARC architecture"
.................

config ARM
	bool "ARM architecture"
.................
config X86
	bool "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_BOARD
	bool

config SYS_GENERIC_BOARD
	bool
	depends on HAVE_GENERIC_BOARD

choice
	prompt "Architecture select"
	default SANDBOX

config ARC
	bool "ARC architecture"
	select HAVE_PRIVATE_LIBGCC
	select HAVE_GENERIC_BOARD
	select SYS_GENERIC_BOARD
	select 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_ARASAN
	bool "Configure Arasan Nand"
	help
	  This enables Nand driver support for Arasan nand flash
	  controller. This uses the hardware ECC for read and
	  write operations.

comment "Generic NAND options"

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

如下图所示:

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

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

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

相关文章

荣电集团与钕希科技签署全面战略合作

10月26日,荣电集团(以下简称荣电)与钕希科技南京有限公司(以下简称钕希科技)今天在合肥市签署全面战略合作协议,联合进军混合现实(Mixed Reality,以下简称MR)空间计算高科…

【计算机毕设小程序案例】基于SpringBoot的小演员招募小程序

前言:我是IT源码社,从事计算机开发行业数年,专注Java领域,专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 👉IT源码社-SpringBoot优质案例推荐👈 👉IT源码社-小程序优质案例…

Hadoop 请求数据长度 Requested Data length 超过配置的最大值

一、问题 现象 Spark 任务速度变慢,也不失败。 DataNode 内存足够 CPU 负载不高 GC 时间也不长。 查看 DataNode 日志,发现有些日志出现很多 Netty RPC 超时。超时的 destination 是一个 NameNode 节点,然后查看 NameNode 节点的日志&…

代码随想录算法训练营第2天| 977有序数组的平方、209长度最小的子数组。

JAVA代码编写 977. 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释&…

基于STC系列单片机实现定时器扫描数码管显示定时器/计数器产生频率的功能

#define uchar unsigned char//自定义无符号字符型为uchar #define uint unsigned int//自定义无符号整数型为uint #define NixieTubeSegmentCode P0//自定义数码管段码为单片机P0组引脚 #define NixieTubeBitCode P2//自定义数码管位码为单片机P2组引脚 sbit LED P1^0;//位定义…

nodejs+vue购物网站设计系统-计算机毕业设计

遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模块图,流程图以及E-R图。目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1…

基于 FFmpeg 的跨平台视频播放器简明教程(十):在 Android 运行 FFmpeg

系列文章目录 基于 FFmpeg 的跨平台视频播放器简明教程(一):FFMPEG Conan 环境集成基于 FFmpeg 的跨平台视频播放器简明教程(二):基础知识和解封装(demux)基于 FFmpeg 的跨平台视频…

基于nodejs+vue 宁夏旅游景点客流量数据分析系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

Docker添加软链接,解决c盘占用问题

Docker的文件,默认放在 c 盘,用多了很影响系统的速度。 解决方法: 为 Docker 路径添加软链接。 在 windows 搜索框,输入cmd ,以管理员身份运行 cmd * 执行命令: “C:\Program Files\Docker” 这个地址是…

【Linux】第四站:Linux基本指令(三)

文章目录 一、时间相关的指令1.指令简介2.使用 二、cal指令三、find指令 -name1.介绍2.使用 四、grep指令1.介绍2.使用 五、zip/unzip指令1.介绍2.zip的安装3.使用 六、tar指令:打包解包,不打开它、直接看内容1.介绍2.使用 七、bc指令八、uname -r指令1.…

【C++进阶】pair容器

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

基于单片机设计的防煤气泄漏装置

一、前言 煤气泄漏是一个严重的安全隐患,可能导致火灾、爆炸以及对人体健康的威胁。为了提高家庭和工业环境中煤气泄漏的检测和预防能力,设计了一种基于单片机的防煤气泄漏装置。 单片机选择STC89C52作为主控芯片。为了检测煤气泄漏,采用了…

Prompt设计与大语言模型微调

本文主要介绍了Prompt设计、大语言模型SFT和LLM在手机天猫AI导购助理项目应用。 ChatGPT基本原理 “会说话的AI”,“智能体” 简单概括成以下几个步骤: 预处理文本:ChatGPT的输入文本需要进行预处理。输入编码:ChatGPT将经过预处理…

2.9每日一题(定积分的奇偶性以及比较大小)

1、用定积分奇函数和偶函数的性质 2、用常用的基本不等式推出大小 3、用区间相同的情况下被积函数大的定积分大的定理

如何在Node.js中使用环境变量或命令行参数来设置HTTP爬虫ip?

首先,定义问题:在 Node.js 应用程序中,我们可以通过环境变量或命令行参数来设置HTTP爬虫ip,以便在发送请求时使用这些HTTP爬虫ip。 亲身经验:我曾经需要为一个项目设置HTTP爬虫ip,以便在发送请求时使用这些…

Kubernetes Label Selector

Author:rab 目录 前言一、Labels1.1 定义1.2 案例1.2.1 节点标签1.2.2 对象标签 二、Selector2.1 Node Selector2.2 Service Selector2.3 Deployment Selector2.4 StatefulSet Selector2.5 DaemonSet Selector2.6 HorizontalPodAutoscaler Selector2.7 NetworkPolic…

RTCM数据解码

RTCM RTCM数据协议介绍 1. 一帧数据组成 2.数据接收 /*(1) synchronize frame */ if (rtcm.nbyte 0){if (data ! RTCM3PREAMB)//RTCM3PREAMB:同步码return 0;rtcm.buff[rtcm.nbyte] data;return 0;} //(2)添加一B…

Spring Boot整合Spring Fox生成Swagger文档

Spring Fox简介 Springfox是一个用于在Spring应用程序中生成Swagger文档的开源库。它提供了一组注解和工具,可以将你的API代码和文档整合在一起,方便生成和展示API的Swagger文档。 使用Springfox,你可以在Spring Boot项目中集成Swagger&…

设计模式—创建型模式之单例模式

设计模式—创建型模式之单例模式 介绍 单例模式说明:一个单一的类,负责创建自己的对象,同时确保系统中只有单个对象被创建。 单例模式特点: 某个类只能有一个实例;(构造器私有)它必须自行创…

线程间的调度顺序

目录 ♫join和sleep ♫wait ♫notify和notifyAll 我们知道线程是抢占式执行,随机调度的,而这也是诱发线程安全的根本原因。我们虽然无法指定线程之间的调度顺序,但是可以通过JVM提供的一些API让某个线程阻塞,主动放弃CPU&#xf…