Linux Kconfig檔案的簡介

2021-06-16 22:39:31 字數 3293 閱讀 3709

核心原始碼樹的目錄下都有兩個檔案kconfig和makefile。分布到各目錄的kconfig構成了乙個分布式的核心配置資料庫,

每個kconfig分別描述了所屬目錄原始檔相關的核心配置選單。在核心配置make menuconfig(或xconfig等)時,從kconfig中讀出選單,

使用者選擇後儲存到.config的核心配置檔案中。

在核心編譯時,主makefile呼叫這個.config,就知道了使用者的選擇。

上面的內容說明了,kconfig就是對應著核心的配置選單。

如果要想新增新的驅動到核心的原始碼中,可以修改kconfig,這樣就可以選擇這個驅動,如果想使這個驅動被編譯,要修改makefile

所以新增新的驅動時需要修改的檔案有兩種(注意不只是兩個)

*kconfig

*makefile

要想知道怎麼修改這兩種檔案,就要知道兩種檔案的語法結構

kconfig

每個選單都有乙個關鍵字標識,最常見的就是config

語法:config

symbol是乙個新的標記的選單項,options是在這個新的選單項下的屬性和選項

其中options部分有:

1、型別定義:

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

config hello_module

bool "hello test module"

bool型別的只能選中或不選中

tristate型別的選單項多了編譯成核心模組的選項,如果選擇編譯成核心模組,則會在.config中生成乙個config_hello_module=m的配置,

如果選擇內建,就是直接編譯成核心映象,就會在.config中生成乙個config_hello_module=y的配置.

詳細配置

n, 表示預設不編譯

y,表示預設編譯進核心

m,表示預設編譯為模組

2、依賴型定義depends on或requires

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

config hello_module

bool "hello test module"

depends on arch_pxa

這個例子表明hello_module這個選單項只對xscale處理器有效。

3、幫助性定義

只是增加幫助用關鍵字

help或者---help---

核心的makefile

在linux2.6.x/documentation/kbuild目錄下有詳細的介紹有關kernel makefile的知識。

核心的makefile分為5個組成部分:

(1)makefile 最頂層的makefile

(2).config 核心的當前配置檔案,編譯時成為定層makefile的一部分

(3)arch/$(arch)/makefile 與體系結構相關的makefile

(4)s/ makefile.* 一些makefile的通用規則 (這裡的s指 「scripts」,by imjacob)

(5)kbuild makefile 各級目錄下的大概約500個檔案,編譯時根據上層makefile傳下來的巨集定義和其他編譯規則,將源**編譯成模組或者編入核心

頂層的makefile檔案讀取 .config檔案的內容,並總體上負責build核心和模組。arch makefile則提供補充體系結構相關的資訊。

s目錄下的makefile檔案包含了所有用來根據kbuild makefile 構建核心所需的定義和規則。

(其中.config的內容是在make menuconfig的時候,通過kconfig檔案配置的結果。

舉個例子:

假設想把自己寫的乙個flash的驅動程式載入到工程中,而且能夠通過menuconfig配置核心時選擇該驅動該怎麼辦呢?

可以分三步:

第一:將你寫的hello.c 檔案新增到/drivers/char/ hello目錄下。

第二:修改/drivers/char/ hello目錄下的kconfig檔案:

config hello_module

tristate "hello-tristate"

default y

help

this is help test

這樣當make menuconfig時 ,將會出現 hello-tristate選項。

第三:修改該目錄下makefile檔案。

新增如下內容:

obj-$(config_hello_module) += hello.o

修改上層目錄/drivers/char中kconfig檔案

這樣,當你執行make menucofnig時,你將發現 hello-tristate選項,如果你選擇了此項。

該選擇就會儲存在.config檔案中。體現為

這將是在hello/makefile中

obj-$(config_hello_module) += hello.o

等價為obj-y += hello.o

系統在呼叫hello下的makefile 時,將會把 hello.o 加入到核心中。即可達到你的目的。

為測試kconfig不同的型別:

kconfig檔案:

向Linux Kconfig樹中新增驅動配置資訊

這裡使用 kconfig樹 這個詞是因為我不知道準確的說法應該是怎樣的,我想表達的意思是 make menuconfig的選單中能夠顯示我們自己寫的驅動資訊,我們可以通過make menuconfig來決定是否使用該驅動,這樣也讓核心知道我們驅動的存在,而不是讓我們寫的驅動成為乙個野生的程式以致汙染...

使用Matlab批量的處理檔案(檔案的檔名類似)

matlab是處理資料的乙個強有力的工具。讀取大量的檔案,一次只處理乙個資料,是乙個浪費精力的工作,可以使用一種方法批量的處理檔名相似的檔案,將會節省大量的時間,去幹更多有意義的事情,要學會偷懶。clc clear close all fori 1 10 代表檔案的格式 filename strca...

檔案以及檔案的統計

file 哎,說起檔案就煩,原來就沒學會,現在又來一遍講的還是很快 小小的總結一下。1.建立和刪除檔案 測試檔案的建立和刪除 param filename 建立檔案的路徑 throws ioexception public void testcreateanddelete string filena...