2026/3/30 14:02:00
网站建设
项目流程
建立网站目录结构时应注意哪几个方面?,网站建设数据表设计 性别,浙江住房和城乡建设部网站,唐山网站建设开发设计公司Kconfig 本质是内核配置菜单的 “描述语言”#xff0c;语法简洁但有明确的规则。一、Kconfig 核心语法规则#xff08;基础必懂#xff09;1. 注释单行注释#xff1a;用 # 开头#xff08;和 Shell/Makefile 一致#xff09;#xff1b;无多行注释#xff0c;多行需每…Kconfig本质是内核配置菜单的 “描述语言”语法简洁但有明确的规则。一、Kconfig 核心语法规则基础必懂1. 注释单行注释用#开头和 Shell/Makefile 一致无多行注释多行需每行加#。config# 这是注释定义字符设备驱动配置项 config HELLO_DRV tristate Hello World Driver2. 大小写敏感配置项名称如CONFIG_HELLO_DRV严格区分大小写建议全大写 下划线行业惯例关键字如config、tristate、menu小写是固定语法。3. 缩进规则子项如tristate、help、depends on需缩进通常 4 个空格不要用 Tab同一层级的选项缩进一致保证可读性。二、Kconfig 核心关键字按使用频率排序1.config- 定义单个配置项最核心作用声明一个配置项对应.config中的CONFIG_XXX是所有驱动 / 功能配置的基础格式config 配置项名称 缩进的属性类型、描述、依赖等类型必选类型含义对应.config 值适用场景tristate三态内置 / 模块 / 不编译y/m/n驱动支持编译为模块bool布尔启用 / 禁用y/n内核功能不支持模块string字符串值自定义字符串如设备树路径、版本号int整数值数字如缓冲区大小、超时时间hex十六进制值十六进制数如寄存器地址、掩码示例三态驱动配置项configconfig HELLO_DRV tristate Hello World Character Driver # 界面显示的名称 help # 帮助说明可选但推荐 This is a simple char driver for RK356X platform. Say Y/M to compile it into kernel/module, N to disable.2.menu/endmenu- 定义菜单分组作用将相关配置项归类到一个可视化菜单中menuconfig界面中可展开 / 折叠格式menu 菜单名称 缩进的配置项 endmenu示例字符设备菜单configmenu Character devices # menuconfig中显示的菜单名 config HELLO_DRV tristate Hello World Driver help Simple char driver test. config TTY bool Enable TTY support default y endmenu # 结束菜单分组3.depends on- 配置项依赖条件限制作用限制配置项的显示 / 可选性只有依赖条件满足时该配置项才会出现在menuconfig中格式depends on 条件条件可多个用/||连接示例仅 ARM64 架构可见configconfig HELLO_DRV tristate Hello World Driver depends on ARCH_ROCKCHIP ARM64 # 仅RK356XROCKCHIP ARM64架构可见 help Driver for RK356X ARM64 platform.4.default- 设置默认值作用指定配置项的默认值无需手动选择时的默认状态格式default 值 [if 条件]条件可选示例configconfig HELLO_DRV tristate Hello World Driver depends on ARM64 default m if ARCH_ROCKCHIP # RK架构默认编译为模块 default n # 其他架构默认不编译5.select- 强制选中依赖项作用当当前配置项被选中y/m时强制将另一个配置项设为y单向依赖格式select 被依赖的配置项示例选驱动时强制启用字符设备核心configconfig HELLO_DRV tristate Hello World Driver depends on ARM64 select CHR_DEV # 选中HELLO_DRV时CHR_DEV自动设为y6.prompt- 自定义界面显示名称作用替代tristate/bool后的字符串单独定义菜单中显示的名称等价写法可选示例configconfig HELLO_DRV tristate prompt Hello World Driver # 和直接写tristate xxx效果一致 default m7.source- 引入其他 Kconfig 文件作用在当前 Kconfig 中引入子目录的 Kconfig实现配置项的分层管理内核核心机制格式source 路径/文件名示例内核根目录 Kconfig 引入字符设备配置config# 内核根目录 Kconfig source drivers/char/Kconfig # 加载字符设备目录的Kconfig source drivers/spi/Kconfig # 加载SPI驱动目录的Kconfig8.choice/endchoice- 单选菜单作用创建互斥的单选选项只能选其中一个格式choice 缩进的config仅bool/tristate endchoice示例驱动模式选择configchoice prompt Hello Driver Mode default HELLO_DRV_NORMAL config HELLO_DRV_NORMAL bool Normal Mode config HELLO_DRV_DEBUG bool Debug Mode endchoice三、实战示例RK356X 驱动的 Kconfig 完整写法以下是适配你场景的完整Kconfig片段放在drivers/char/Kconfig中config# 字符设备菜单下添加自定义驱动 menu Character devices # 自定义驱动配置项 config HELLO_DRV tristate Hello World Driver for RK356X depends on ARCH_ROCKCHIP ARM64 # 仅RK356X ARM64可见 default m # 默认编译为模块 select CHR_DEV # 依赖字符设备核心 help This is a simple character driver for Rockchip RK356X platform. If you want to compile it as a module, choose M (recommended), compile into kernel choose Y, or N to disable. endmenu四、语法校验与常见坑校验方法修改 Kconfig 后执行make menuconfig若界面能正常打开且配置项显示说明语法无错若报错syntax error检查缩进 / 关键字拼写。常见错误缩进用 Tab 而非空格内核要求空格depends on后条件写错如ARCH_RK356X写成RK356X三态配置项用bool类型导致无法编译为模块。总结Kconfig核心是通过config定义配置项用menu分组depends on做条件限制default设默认值驱动开发中最常用的是tristate类型支持模块编译depends on匹配开发板架构关键语法配置项名称大写、子项缩进 4 空格、依赖条件匹配开发板如ARCH_ROCKCHIP。