menuconfig¶
FAQ1 menuconfig的实现机制是?¶
menuconfig的配置界面结构、所有配置项(名称、依赖关系、对应宏定义、说明文档等),均由目标工程(hcpu/lcpu/simulator)根目录下的Kconfig文件定义;该文件可通过source指令引用其他子目录下的Kconfig文件,最终拼接形成完整的menuconfig菜单树,是配置功能的底层核心。运行
menuconfig时,工具会优先读取工程根目录下的.config文件,将其中的配置值作为界面默认显示状态;完成配置并保存后,新的配置值会同步更新到
.config文件中,同时工程会自动将.config中的配置转换为rtconfig.h头文件(该文件包含所有配置项对应的宏定义),供编译阶段直接引用。
Kconfig 语法可参见kconfig.txt 的在线 HTML 版。
FAQ2 在哪里对menuconfig进行配置?¶
通过butterfli工具的界面进行配置
直接在对应工程(
hcpu/lcpu/simulator),右键打开menuconfig即可注意: Solution V2.4以前的版本,需要确认是否所有工程已经初始化初始化,如果没有,则需要手动初始化;Solution V2.4之后的版本,将自动初始化。

打开文件管理器,进入目标工程的根目录(
hcpu/lcpu/simulator),打开ComEmu,输入命令menuconfig并回车,即可进menuconfig配置界面。 按界面操作提示(方向键选择、空格选中 / 取消、回车确认)完成配置,配置完成后按 ESC 退出并保存
FAQ3 在menuconfig的配置中,怎么确定对应项与宏之间的关系?¶
在 menuconfig 配置界面中,可快速查询任意配置项对应的宏名称(宏是配置项在代码中生效的核心标识),操作步骤:
进入
menuconfig配置界面后,用方向键将光标移动到目标配置项上;切换为 英文输入法,按下键盘上的 ?(问号)键
界面会弹出该配置项的详细信息窗口,其中明确标注对应的宏定义名称、宏的默认值、依赖条件等

FAQ4 在menuconfig的配置中,怎么查找对应的宏?¶
当已知宏名称,需反向查找其在 menuconfig 中的配置位置时,可通过以下方法
进入需要配置的工程(
hcpu/lcpu/simulator)的menuconfig配置界面;确保输入法为英文状态,按下键盘上的 /(斜杠)键;(部分终端环境下,需先按 ESC 退出当前选项的编辑状态,再按 / 键)
弹出搜索输入框后,输入要查找的宏名称(可直接输入宏名或宏名的部分,支持模糊搜索),按下回车,
menuconfig会列出所有与该宏匹配的配置项,包含:配置项的完整路径(如
(Top) → Memory Config);配置项的当前状态(启用 / 禁用);
配置项对应的宏定义说明;
找到目标配置项后,可根据搜索结果中的路径,用方向键导航到对应位置修改配置
FAQ5 在menuconfig的配置中,为什么有时查找到需要修改的宏是灰色的?¶
如果查找到的宏,是灰色的,因是该配置项受依赖条件限制无法修改(非权限问题)。
依赖的前置配置项未启用
这是最常见的原因:
menuconfig的配置项存在 “依赖关系”,若某配置项依赖的父级配置项未开启(如CONFIG_A依赖CONFIG_B),则CONFIG_A会被置灰,无法操作。示例:若
FT_SIZE_SELF_DEFINED依赖LV_USING_FREETYPE_ENGINE,未开启LV_USING_FREETYPE_ENGINE时,CONFIG_LOG_DEBUG必然是灰色。
配置项被强制锁定(不可配置) 工程
Kconfig文件中,该配置项被标记为def_bool/default且未开放修改权限(如config XXX def_bool y),或被工程脚本 / 编译规则强制赋值,此时配置项仅显示状态,无法手动修改。当前工程 / 编译环境不匹配 部分宏仅针对特定工程生效(如lcpu工程的宏在hcpu工程中打开
menuconfig会置灰),或编译环境未满足基础条件(如缺少某类编译器、依赖库),导致配置项被禁用。配置项为 “隐藏项”/“只读项”
Kconfig中标记为hidden的配置项,或仅用于显示状态的 “信息类项”,本身不支持手动修改,会以灰色显示。
因此,需要针对以上原因,进行针对性的配置修改。
FAQ6 menuconfig配置后,rtconfig.h需要上传git么?¶
Solution的设计中,仅依赖.config,rtconfig.h是butterfli工具在编译的时候自动生成的中间文件,因此不需要上传。