menuconfig 图形化配置原理说明二

news2025/1/11 16:56:48

一.  简介

之前一篇文章中,我们已经知道: scripts/kconfig/mconf 会调用 uboot 根目录下的 Kconfig 文件开始 构建图形化配置界面。
接下来简单学习一下 Kconfig 的语法。因为后面学习 Linux 驱动开发 时,可能会涉及到修改 Kconfig ,对于 Kconfig 语法我们不需要太深入的去研究。本文我们大概了解其原理即可。

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

打开 uboot 根目录下的 Kconfig ,这个 Kconfig 文件就是顶层 Kconfig ,我们就以这个文件为例来简单学习一下 Kconfig 语法。

1.  mainmenu

顾名思义 mainmenu 就是主菜单,也就是输入“ make menuconfig ”以后打开的默认界面,在顶层 Kconfig 中有如下代码:
mainmenu "U-Boot $UBOOTVERSION Configuration"
以上的代码是定义了一个名为 “ U-Boot $UBOOTVERSION Configuration ” 的主菜单,其中,UBOOTVERSION=2016.03 ,因此,主菜单名为“ U-Boot 2016.03 Configuration ”,如下图所示:

2.  调用其他目录下的 Kconfig 文件

makefile 一样,Kconfig 也可以调用其他子目录中的 Kconfig 文件,调用方法如下:

source "xxx/Kconfig" //xxx 为具体的目录名,相对路径

在顶层 Kconfig 中有如下代码:

source "arch/Kconfig"
................
source "drivers/Kconfig"
source "fs/Kconfig"
source "lib/Kconfig"
source "test/Kconfig"
可以看出,顶层 Kconfig 文件调用了很多其他子目录下的 Kconfig 件,这些子目录下的 Kconfig 文件在主菜单中生成各自的菜单项。

3.  menu/endmenu 条目

menu 用于生成菜单, endmenu 就是菜单结束标志,这两个一般是成对出现的。在顶层 Kconfig 中有如下代码:

menu "General setup"
.................
	  When disabling this, please check if malloc calls, maybe
	  should be replaced by calloc - if expects zeroed memory.
endif
endmenu		# General setup

可以看出,有一个 menu/endmenu 代码块,这个代码块就是一个子菜单。
1 行的  “ menu "General setup" ”  表示子菜单“ General setup ”。

4.  menuconfig

menuconfig menu 很类似,但是 menuconfig 是个带选项的菜单,其一般用法为:
menuconfig MODULES 
    bool "菜单"
if MODULES
...
endif # MODULES

1 行,定义了一个可选的菜单 MODULES ,只有选中了 MODULES ,第 3~5 if endif 之间的内容才会显示。在顶层 Kconfig 中有如下代码:
menu "General setup"
.................
menuconfig EXPERT
	bool "Configure standard U-Boot features (expert users)"
	default y
	help
	  This option allows certain base U-Boot options and settings
	  to be disabled or tweaked. This is for specialized
	  environments which can tolerate a "non-standard" U-Boot.
	  Only use this if you really know what you are doing.

if EXPERT
.................
	  should be replaced by calloc - if expects zeroed memory.
endif
endmenu		# General setup

第1 ~6 行使用 menuconfig 实现了一个菜单,路径如下:
General setup
-> Configure standard U-Boot features (expert users) --->

配置界面如下图所示:

可以看到,前面有“ [ ] ”说明这个菜单是可选的,当选中这个菜单以后就可以进入到子选项中,
也就是 的第12 ~15 行所描述的菜单。效果如下:

如果不选择 Configure standard U-Boot features (expert users) ,那么代码中
12~15 行所描述的菜单就不会显示出来,进去以后是空白的。

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

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

相关文章

VNC图形化远程连接Ubuntu服务器

我的Ubuntu版本22.04.3,带有gnome图形桌面。配置过程参考了几篇博客,大致流程如下。因为是配置完之后才整理的流程,可能有疏漏。 Ubuntu服务器上的配置 1.先在服务器上下载vnc server(任何一种版本均可) vncserver有…

最近面试遇到的高频面试题

大家好,我是 jonssonyan 互联网寒冬?金九银十真的不存在了么?虽说现在行情是差了一些,面试机会少了一些,但是大部分公司还是或多或少的招人,春招秋招都在进行。有人离职就有人入职。所以如果你还没约到面试…

【vue会员管理系统】篇三之自定义Axios、初试后台接口、跨域问题

一、自定义封装Axios异步对象和添加拦截器 因为本项目很多组件需要通过Axios发送一步请求,所以封装Axios对象,自己封装的Axios在后续可以使用axios中提供的拦截器。 1.在src文件夹下创建utils文件夹,再在utils文件夹下创建request.js文件 2.…

Rabbitmq----分布式场景下的应用

服务异步通信-分布式场景下的应用 如果单机模式忘记也可以看看这个快速回顾rabbitmq,在做学习 消息队列在使用过程中,面临着很多实际问题需要思考: 1.消息可靠性 消息从发送,到消费者接收,会经理多个过程: 其中的每一…

安美数字酒店宽带运营系统 server_ping.php 远程命令执行漏洞

数字于2006年正式推出了中国酒店智慧客房投资运营的相关业务和商业模式,凭借雄厚的研发实力、超前的技术优势、高效整合的精英团队以及深厚的行业积淀,快速地占领了酒店行业智能化服务市场;同时依托自主创新的InnFor Anymode核心技术,创建了全高清酒店客房互动信息服务运营平台…

写新闻稿的基本步骤有哪些?纯干货!

新闻稿作为企业和品牌传递信息的重要载体,不仅要求准确、客观,还应该要具备吸引人的特质。本文伯乐网络传媒将为您详细解析写新闻稿的基本步骤,帮助您轻松撰写出高质量、具有深度的新闻稿。 一、选定热门话题:寻找具有吸引力的爆点…

openwrt下游设备在校园网(DLUT-LingShui)中使用ipv6网络

背景:校园网最多支持6台设备的无感认证,需要使用路由器(本人使用openwrt系统)为更多的设备提供网络,但校园网分配的ipv6地址子网为/128,不能为路由器下的设备分配全球ipv6地址,因此需要使用nat6转发下游设备的局域网ip…

[FSCTF 2023] web题解

文章目录 源码&#xff01;启动!webshell是啥捏细狗2.0ez_php1Hello,youEZ_eval 源码&#xff01;启动! 打开题目&#xff0c;发现右键被禁了 直接ctrlu查看源码得到flag webshell是啥捏 源码 <?php highlight_file(__FILE__); $&#x1f600;"a"; $&#x…

[UDS] --- UDS概述

UDS&#xff08;Unified Diagnostic Services&#xff0c;统一的诊断服务&#xff09;诊断协议是在汽车电子ECU环境下的一种诊断通信协议&#xff0c;在ISO 14229中规定。它是从ISO 14230-3&#xff08;KWP2000&#xff09;和ISO 15765-3协议衍生出来的。“统一”这个词意味着它…

web - Tomcat服务器

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

Qwt QwtPlotGrid网格类详解

1.概述 QwtPlotGrid类是Qwt绘图库中用于绘制网格的类。网格是图表中用于显示坐标轴刻度之间的辅助线的一种视觉元素。使用QwtPlotGrid类可以方便地添加水平和垂直网格线到绘图区域上。 以下是类继承关系图&#xff1a; 2.常用接口 分别启用或禁用x和y轴上的网格线。 enable…

优化改进YOLOv5算法:加入ODConv+ConvNeXt提升小目标检测能力——(超详细)

为了提升无人机视角下目标检测效果,基于YOLOv5算法,在YOLOv5主干中实现了Omnidimensional Convolution(ODConv),以在不增加网络宽度和深度的情况下提高精度,还在YOLOv5骨干网中用ConvNeXt块替换了原始的C3块,以加快检测速度。 1 Omni-dimensional dynamic convolution …

Docker 容器服务的注册、发现及Docker安全

目录 Docker容器服务的注册和发现 1、什么是服务注册与发现&#xff1f; 2、什么是consul consul的部署 1、环境准备 2、部署consul服务器 1&#xff09;建立 Consul 服务 2&#xff09;设置代理&#xff0c;在后台启动 consul 服务端 3&#xff09;查看集群信息 4&a…

VSCode:清理ipch缓存

VSCode使用了一段时间&#xff0c;发现有些变慢&#xff0c;电脑管家扫描后&#xff0c;提示“AppData\Local\Microsoft\vscode-cpptools\ipch”目录下有很多缓存文件可以清理。 查询了一下&#xff1a;C/C 扩展常见问题解答 (visualstudio.com) 该件夹内包含缓存的预编译头文…

vscode markdown 使用技巧 -- 如何快速打出一个Tab 或多个空格

背景描述&#xff1a; 我在使用VSCode&#xff0c;这玩意很好用&#xff0c;但是&#xff0c;有一个缺点是&#xff0c;我想使用Tab来做一些对齐&#xff0c;但是我发现在VSCode中&#xff0c;无论是Tab还是多个空格&#xff0c;最终显示出来的都是一个空格 使用代码可以实现打…

基于ssm的宠物医院管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

搞定蓝牙——第四章(GATT协议)

搞定蓝牙——第四章&#xff08;GATT协议&#xff09; 原理介绍层次结构server和client端Attribute ESP32代码 文章下面用的英文表示&#xff1a; server和client&#xff1a;服务端和客户端 char.&#xff1a;characteristic缩写&#xff0c;特征 Attribute:属性 ATT:Attribut…

02第二课 指标与指标体系

二、如何获得数据:指标体系与用户路径 Q1 指标可以用来干什么? 建立指标体系目的是获得全面而充足数据支撑,通过分析,从而发现问题、或得出主观问题的结论。 优秀的指标体系在制定每个指标时,会与业务目标密切关联,紧密围绕活动策略,数据结果可以有效的衡量产品的健康…

JAVA基础(JAVA SE)学习笔记(九)异常处理

前言 1. 学习视频&#xff1a; 尚硅谷Java零基础全套视频教程(宋红康2023版&#xff0c;java入门自学必备)_哔哩哔哩_bilibili 2023最新Java学习路线 - 哔哩哔哩 第三阶段&#xff1a;Java高级应用 9.异常处理 10.多线程 11.常用类和基础API 12.集合框架 13.泛型 14…

优咔科技创新连接方案助力高质量5G车联服务

上海优咔网络科技有限公司 CEO 闫楠 【摘要】本文就智能网联汽车对高质量5G车联服务的需求背景和行业趋势进行了分析&#xff0c;主要介绍采用5G双SIM卡的创新连接方案&#xff0c;重点讲述双SIM卡联网的端到端体系架构和技术方案&#xff0c;并就优咔科技全方位支撑行业领先车…