配置Kconfig让内核支持mach-xxx开发板

配置Kconfig让内核支持mach-xxx开发板

配置Kconfig 让内核支持mach-xxx开发板

文章目录

配置Kconfig 让内核支持mach-xxx开发板

前言

1. 了解Linux内核编译过程

2. Kconfig 基本配置方法

2.1. 添加驱动编译选项

2.1.1. 配置 Kconfig

2.1.2. 配置 Makefile

2.1.3. 配置上层 Makefile 和 Kconfig

2.2. 添加 mach-xxx 平台配置选项

2.2.1. 配置SOC Kconfig

2.2.2. 配置SOC Makefile

2.2.3.添加驱动设备

3. Kconfig 基本语法

3.1. menuconfig 语句

3.2. config 语句

3.3. 变量类型

3.3.1 bool 类型

3.3.2 int 类型

3.3.3. string 类型

3.3.4. hex 类型

3.3.5. tristate 类型

3.4. choice/endchoice 语句

3.5. comment 语句

3.6. source 语句

前言

补充之前写的向 Linux 内核添加硬件平台向 Linux 内核添加硬件平台

Linux内核支持的芯片可以通过内核配置直接对SOC进行配置,这些芯片的硬件平台对应的实现文件也都集成在内核中(arch/arm/mach-xxx),每一个mach-xxx都表示一个SOC硬件平台。

向内核添加soc平台主要完成两个工作:

Makefile:mach-xxx 各层 Makefile 对文件的编译(所有的编译文件可变翼的前提下)。

Kconfig:将添加的soc平台中的驱动进行配置(开/关、关联、依赖)。

配置目标结果如下图:

注:本文主要对 Kconfig 配置方法说明。

1. 了解Linux内核编译过程

对内核配置进行操作前,我们需要先了解下Linux内核的编译过程:

遍历每个源码目录的 Makefile文件

每个 Makefile 会根据 Kconfig 来定制需要编译的对象

最后回到顶层目录的 Makefile 执行编译

总的来说,Kconfig 文件就是各种配置界面的源文件。当遍历完了 Makefile 和 Kconfig 以后,会在顶层目录生成一个 .config 文件(.config文件保存着所有的内核配置选项),然后回到顶层 Makefile 编译。

(通过配置 Kconfig 将驱动选项添加到内核的编译选项中,我们主要配置的是自己硬件平台mach-asu的Kconfig)

2. Kconfig 基本配置方法

2.1. 添加驱动编译选项

例如,完成了一个 ASU_TEST 驱动,需要将选项加入到内核的编译选项中,可以按照以下步骤进行:

2.1.1. 配置 Kconfig

在 ASU-imx6ull-test/drivers 目录下建立 asu_test 子目录,进入该目录下创建 Kconfig 文件,内容如下:

// ASU-imx6ull-test/drivers/asu_test/Kconfig

config TEST

bool "ASU_TEST"

help

Support for ASU TEST!!

这里定义了一个 TEST 句柄,Kconfig 可以通过这个句柄来控制在 Makefile 中是否编译,ASU_TEST 是显示在中端的名称。具体的语法在Kconfig语法中介绍。

2.1.2. 配置 Makefile

同样在 ASU-imx6ull-test/drivers/asu_test 下新建一个 Makefile 文件,内容如下:

# ASU-imx6ull-test/drivers/asu_test/Makefile

obj-y$(CONFIG_TEST) += asu_test.o

Obj - $(CONFIG_选项名) += xxx.o

# 当CONFIG_选项名=n时,表示对应目录下的xxx.c不参与编译

# 当CONFIG_选项名=y时,表示对应目录下的xxx.c将被编译进内核

# 当CONFIG_选项名=m时,表示对应目录下的xxx.c将被编译成一个.ko模块

2.1.3. 配置上层 Makefile 和 Kconfig

在 ASU-imx6ull-test/drivers/Kconfig 中添加内容如下:

// ASU-imx6ull-test/drivers/Kconfig

menu "Device Drivers"

source "drivers/asu_test/Kconfig" // 前面添加的内容地址

在 ASU-imx6ull-test/drivers/Makefile 中添加内容如下:

obj-y += asu_test/ # 加入编译队列

检验结果,如下图:

2.2. 添加 mach-xxx 平台配置选项

配置过程和 2.1 节大同小异,基本都是对Makefile和Kconfig进行修改

2.2.1. 配置SOC Kconfig

相关推荐

黾的拼音、黾怎么读?上面口加底下电(口电)念什么?
365bet体育在线直播

黾的拼音、黾怎么读?上面口加底下电(口电)念什么?

📅 07-03 👁️ 9541
【节日】20首送给父亲的歌曲,向天下伟大父亲致敬!
365bet体育在线直播

【节日】20首送给父亲的歌曲,向天下伟大父亲致敬!

📅 06-28 👁️ 9226
试听了一下金砖二代
365bet足球真人

试听了一下金砖二代

📅 07-02 👁️ 768
版本历史
365bet中文资讯网

版本历史

📅 06-28 👁️ 1399
【No.97】WPS会员权益全面对比,哪个更适合你?
365bet中文资讯网

【No.97】WPS会员权益全面对比,哪个更适合你?

📅 06-30 👁️ 2913
我们来了 第二季节目表
365bet体育在线直播

我们来了 第二季节目表

📅 07-01 👁️ 7972