Zephyr学习 - 第二章 -3:`default`、符号可见性与 `menuconfig`
02-3default、符号可见性与menuconfig验证方式Zephyr 本地文档、.config、autoconf.h、native_sim/native/64验证结论模拟确认1. 本节目标理解四个问题为什么default只是候选值而不是强制值多个default同时存在时如何选择prompt 为什么决定 symbol 是否能由用户配置如何用menuconfig查一个 symbol 的当前值、依赖和来源。2.default只是没有更强配置时的候选值实验定义config LEARN_TIMEOUT_MS int Timeout selected by ordered defaults range 100 5000 default 2000 if LEARN_VERBOSE default 500可以这样理解如果配置文件或用户已经给出合法值 - 使用用户值 否则 - 从上到下寻找第一个条件满足的 default因此条件最终值LEARN_VERBOSEy没有显式设置 timeout2000LEARN_VERBOSEn没有显式设置 timeout500配置文件显式设置 timeout123123default不是赋值锁也不会阻止用户覆盖。3. 多个default的顺序Kconfig 从上到下处理默认项使用第一个当前可用的 default。default 2000 if LEARN_VERBOSE default 500当LEARN_VERBOSEy时第一条条件成立选择 2000后面的 500 不再覆盖它。如果顺序写反default 500 default 2000 if LEARN_VERBOSE无条件的 500 总是先匹配后面的条件默认值就没有机会生效。所以通常把更具体、带条件的 default 放前面把通用 fallback 放最后。4. 实验一使用条件默认值defaults.confCONFIG_LEARN_FEATUREy CONFIG_LEARN_VERBOSEy CONFIG_LEARN_VISIBLE_VALUE42它没有设置CONFIG_LEARN_TIMEOUT_MS...因为LEARN_VERBOSEy预期 timeout 使用条件默认值 2000。构建命令cd~/project/exportZEPHYR_SDK_INSTALL_DIR/home/yff/zephyr-sdk/zephyr-sdk-0.17.1sourcezephyr/zephyr-env.sh west build\-bnative_sim/native/64\/mnt/c/study/1-zephyr/labs/ch02_kconfig\--build-dir /mnt/c/study/1-zephyr/work/ch02_defaults\-palways\---DCONF_FILEdefaults.conf west build\--build-dir /mnt/c/study/1-zephyr/work/ch02_defaults\-trun实际输出中的对应行defaults: timeout_ms2000 visible42 hidden_mirror42最终.configCONFIG_LEARN_TIMEOUT_MS2000 CONFIG_LEARN_VISIBLE_VALUE42 CONFIG_LEARN_HIDDEN_MIRROR425. 实验二显式值覆盖 defaultdefaults_override.confCONFIG_LEARN_FEATUREy CONFIG_LEARN_VERBOSEy CONFIG_LEARN_TIMEOUT_MS123 CONFIG_LEARN_VISIBLE_VALUE42虽然条件默认值 2000 仍满足但显式合法值 123 优先。west build\-bnative_sim/native/64\/mnt/c/study/1-zephyr/labs/ch02_kconfig\--build-dir /mnt/c/study/1-zephyr/work/ch02_defaults_override\-palways\---DCONF_FILEdefaults_override.conf实际输出中的对应行defaults: timeout_ms123 visible42 hidden_mirror42两个 build 的最终配置对比ch02_defaults: TIMEOUT_MS2000 ch02_defaults_override: TIMEOUT_MS123结论显式合法值 123 的优先级高于满足条件的 default 2000。6. 可见 symbol有 promptconfig LEARN_VISIBLE_VALUE int Visible source value range 1 99 default 7引号中的Visible source value就是 prompt。有 prompt 的 symbol能在menuconfig中显示在依赖满足时可以由用户修改可以在.conffragment 中赋值仍然受到类型、range 和 dependencies 约束。注意有 prompt 不代表任何时候都可见。如果depends on不满足它会暂时隐藏或不可编辑。7. 不可见 symbol没有 promptconfig LEARN_HIDDEN_MIRROR int default LEARN_VISIBLE_VALUE它只有类型没有 prompt所以是 invisible symbol。不可见 symbol不在普通menuconfig菜单中供用户直接修改不应该在 application.conf中直接赋值通常由default、select、imply或其他表达式计算适合表达内部能力、派生状态和 helper。本实验中LEARN_VISIBLE_VALUE42 ↓ default LEARN_VISIBLE_VALUE LEARN_HIDDEN_MIRROR42隐藏 symbol 仍会出现在最终.config和autoconf.h只是用户没有直接控制权。8. 错误示范给 invisible symbol 赋值hidden_invalid.confCONFIG_LEARN_VISIBLE_VALUE42 CONFIG_LEARN_HIDDEN_MIRROR99LEARN_HIDDEN_MIRROR没有 prompt配置文件中的 99 不会成为正常用户选择。最终值仍应由default LEARN_VISIBLE_VALUE得到 42并伴随赋值无效相关 warning。原则.conf主要配置有 prompt 的 visible symbolsinvisible symbols 应由 Kconfig 逻辑计算。该 warning 将在02-5集中分析。9. 运行menuconfig必须先有一个已经配置过的 build directory。本节使用west build\--build-dir /mnt/c/study/1-zephyr/work/ch02_defaults\-tmenuconfig常用操作按键作用方向键/Enter浏览和进入菜单Space切换 bool/tristate/按 symbol 名称搜索?查看当前项目帮助A显示/隐藏当前不可见 symbolS保存D保存最小配置只保留偏离默认值的 symbolQ或 Esc退出建议依次搜索LEARN_TIMEOUT_MS LEARN_VISIBLE_VALUE LEARN_HIDDEN_MIRROR LEARN_DEPENDS_CLIENT观察timeout 显示当前值 2000并能看到两个 defaultsvisible value 可以编辑hidden mirror 没有 prompt普通模式下不可直接编辑depends client 在 required backend 关闭时不可见或不可选。10.menuconfig修改的是谁交互界面保存时修改build/zephyr/.config它不会自动修改prj.conf defaults.conf Kconfig所以 menuconfig 非常适合探索配置查看 symbol 的定义位置、依赖和反向依赖临时试验某个值导出 minimal config 后再人工整理到.conf。但直接 pristine rebuild 会重新生成.config临时修改可能丢失。要永久保存应把需要的配置写回合适的.conf文件。11. 两个容易混淆的menuconfig11.1 构建 targetmenuconfigwest build-tmenuconfig这是终端交互配置界面。11.2 Kconfig 关键字menuconfigUSS 主开关写成menuconfig USS_TDK_ICU30201 bool TDK ICU30201 ...这里的menuconfig是 Kconfig 定义关键字。它表示这个 symbol 可以作为其后相关配置的菜单入口。二者名字相同但作用不同west build -t menuconfig - 启动配置界面 menuconfig FOO - 在 Kconfig 中定义可展开的菜单型 symbol12. 本节结论default 仅在没有更强用户值时提供候选值 多个 default 使用第一个条件满足的项 有 prompt symbol 对用户可见、可配置 但仍受 dependencies 控制 无 prompt invisible symbol 由 default/select/imply/表达式计算 不应在普通 .conf 中直接赋值 menuconfig 界面 编辑 build/zephyr/.config 用于探索不会自动改回源码配置 fragment13. 自测题default 2000 if VERBOSE和配置文件显式设置 123哪个优先两个 default 的条件都满足时选择哪一个Kconfig symbol 没有 prompt 意味着什么invisible symbol 是否一定不会出现在.config和autoconf.h为什么depends on不满足时有 prompt 的 symbol 仍可能不可见menuconfig 保存后修改的是prj.conf还是 build 中的.configwest build -t menuconfig与menuconfig USS_TDK_ICU30201有什么区别下一节02-4-Kconfig如何控制CMake和源码编译。

相关新闻

前端转大模型:为什么你的 Agent 上线就崩?权限与日志才是 2026 的硬通货

前端转大模型:为什么你的 Agent 上线就崩?权限与日志才是 2026 的硬通货

聊《做过前端的人学大模型,哪些经验可以直接迁移?》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值…

2026/10/11 6:11:57 阅读更多 →
windows安装redis

windows安装redis

redis安装包下载 https://github.com/microsoftarchive/redis/releases 内容介绍 redis-server.exe:Redis服务端redis-cli.exe:Redis客户端redis.windows.conf:我们要修改的核心配置文件 第一步:修改配置(设置密码控…

2026/10/14 4:26:41 阅读更多 →
我为什么做了一个邮件群发软件?17年开发经验总结(附Windows客户端)

我为什么做了一个邮件群发软件?17年开发经验总结(附Windows客户端)

很多人一听到"邮件群发",第一反应就是垃圾邮件。 其实并不是。 对于很多企业来说,邮件依然是获客、通知、售后、订单提醒、Newsletter、海外推广最重要的渠道之一。 国外大量 SaaS 产品至今仍然依赖 Email Marketing 获客。 我从 2008 年开…

2026/10/13 13:26:56 阅读更多 →

最新新闻

MATLAB EMD工具箱实战:从经验模态分解到HHT时频分析

MATLAB EMD工具箱实战:从经验模态分解到HHT时频分析

简介:Matlab EMD经验模态分解工具箱,面向信号处理、故障诊断与振动分析领域的研究人员与工程师,用于对非线性、非平稳信号做自适应分解并提取有物理意义的本征模态函数分量。压缩包共38个文件,其中10个m脚本承担核心算法与在线/局…

2026/10/16 19:42:22 阅读更多 →
教务管理系统源码解析:技术选型、数据库设计与二次开发避坑指南

教务管理系统源码解析:技术选型、数据库设计与二次开发避坑指南

简介:这是一套面向计算机专业学生与Java Web开发者的教务管理系统完整源码,适合作为课程设计、毕业设计或企业级项目练手参考,帮助理解教育管理信息化的业务逻辑与技术落地。资源包共746个文件,约5.46MB,涵盖html、css…

2026/10/16 19:42:22 阅读更多 →
E7-2 AXOS everyPON 数据服务实施:从订户模板到策略映射实战指南

E7-2 AXOS everyPON 数据服务实施:从订户模板到策略映射实战指南

简介:Calix E7-2 AXOS everyPON数据服务实施课程的官方介绍文档,面向负责二层数据服务部署的技术员、网络运营者、规划师与工程师。资源包内仅含1个PDF文件,容量74KB,以精炼篇幅浓缩了4小时讲师授课的核心内容:E7-2 AX…

2026/10/16 19:42:22 阅读更多 →
gemma-skills新手必读:Google官方两大技能如何让AI Agent具备Gemma开发与微调能力

gemma-skills新手必读:Google官方两大技能如何让AI Agent具备Gemma开发与微调能力

【免费下载链接】gemma-skills Skills for the Gemma and model/agent interactions 项目地址: https://gitcode.com/gh_mirrors/ge/gemma-skills 点击查看 免费下载 如果你是刚接触 Gemma 模型的新手,gemma-skills 会是一个绝佳的起点。这是 Google 官…

2026/10/16 19:41:22 阅读更多 →
DeepSeek-V3-W4A8-Pruing权重文件怎么读?safetensors三分片结构与index索引完全解析

DeepSeek-V3-W4A8-Pruing权重文件怎么读?safetensors三分片结构与index索引完全解析

【免费下载链接】DeepSeek-V3-W4A8-Pruing 项目地址: https://ai.gitcode.com/hf_mirrors/vllm-ascend/DeepSeek-V3-W4A8-Pruing 点击查看 免费下载 初次接触 DeepSeek-V3-W4A8-Pruing 模型仓库时,面对 3 个 safetensors 分片文件、一个 578KB 的 index…

2026/10/16 19:41:22 阅读更多 →
整车控制器开发源代码:模块划分、状态机设计与工程落地

整车控制器开发源代码:模块划分、状态机设计与工程落地

简介:整车控制器(VCU)开发源代码包主要面向电动汽车与混合动力汽车控制系统的开发者、算法工程师及嵌入式软件研究者,用于解决VCU底层驱动、控制策略、状态机管理与故障处理等核心开发问题。包内文件共88个,以C源文件、…

2026/10/16 19:40:21 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →