核心Kconfig詳解

2021-07-31 06:14:33 字數 1566 閱讀 5215

1、核心的原始碼樹的每一級目錄下一般都會有兩個檔案:kconfig和makefile。分布在各目錄下的kconfig構成了乙個分布式的核心配置資料庫,每個kconfig分別描述了所屬目錄原始檔相關的核心配置選單,在核心配置make menuconfig時,如果已經存在.config,就直接將.config的選項顯示在圖形介面上,如果沒有.config則從kconfig中讀出配置選單,使用者配置完後儲存到.config(在頂層目錄下生成)中。在核心編譯時,主makefile呼叫這個.config,就知道了使用者對核心的配置情況。其實.config這個配置是不能直接使用的,核心在使用的時候其實使用的是根據.config生成的autoconf.h檔案,在核心目錄的include/generated/目錄下,make menuconfig完成後可以去該目錄下檢視。

2、kconfig的語法:

乙個典型的核心配置選單如下: 

menu "network device support" 

config netdevices 

bool "enable net devices" 

depends on net 

select esa_dma_api

default y 

help 

this is help desciption。

... 

endmenu 

其中包含在menu/endmenu中的內容會成為network device support的子選單。

每乙個子選單項都是由config來定義的。

congfig下方的那些bool、depends on、select、default、help等為config的屬性,用於定義該選單項的型別、依賴項、反向依賴、預設值、幫助資訊等

3、config型別說明

每個config選單項都要有型別定義: bool布林型別、 tristate三態(內建、模組、移除)、string字串、 hex十六進製制、 integer整型。

bool 型別的只能選中或不選中,顯示為[ ];

tristate型別的選單項多了編譯成核心模組的選項,顯示為< > ,

假如選擇編譯成核心模組,則會在.config中生成乙個 config_***=m的配置

,假如選擇內建,就是直接編譯成核心影響,就會在.config中生成乙個 config_***=y的配置.

hex十六進製制型別顯示為( )。

4、依賴說明

依賴型定義depends on或requires

指此選單的出現是否依賴於另乙個定義

config cpu_loongson2k

bool "loongson 2k cpu"

depends on sys_has_cpu_loongson2k

select cpu_supports_32bit_kernel

這個例子表明cpu_loongson2k只有在選擇了sys_has_cpu_loongson2k, 該選單才可見(可配置)。

而cpu_supports_32bit_kernel反向依賴cpu_loongson2k,意思就是說,只有選擇了cpu_loongson2k,cpu_supports_32bit_kernel才可配置。

Kconfig檔案詳解

1 kconfig按照一定的格式來書寫,menuconfig程式可以識別這種格式,然後從中提取出有效資訊組成menuconfig中的選單項。2 將來在做驅動移植等工作時,有時需要自己新增kconfig中的乙個配置項來將某個裝置驅動新增到核心的配置專案中,這時候就需要對kconfig的配置項格式有所了...

核心Kconfig詳盡分析

kconfig位於kernel原始碼內大部分的資料夾中,是一種特殊格式的檔案,負責提供kernel各個功能的配置選項。比如進行驅動移植等工作時,有時需要自己新增kconfig中的乙個配置項,從而將某個裝置驅動新增到核心的配置專案中。需要注意的是,kconfig僅僅負責提供配置選項本身,而不提供各選項...

核心kconfig語法及原理

目前自己用過 menu desc endmenu menuconfig config str bool desc depends on config other default y help if config str do sth endif choice prompt desc default ...