kconfig檔案的作用
核心原始碼樹的目錄下都有兩個檔案kconfig(2.4版本是config.in)和makefile。分布到各目錄的kconfig構成了乙個分布式的核心配置資料庫,每個kconfig分別描述了所屬目錄原始檔相關的核心配置選單。在核心配置make menuconfig(或xconfig等)時,從kconfig中讀出選單,使用者選擇後儲存到.config的核心配置檔案中。在核心編譯時,主makefile呼叫這個.config,就知道了使用者的選擇。
*上面的內容說明了,kconfig就是對應著核心的配置選單。如果要想新增新的驅動到核心的原始碼中,可以修改kconfig,這樣就可以選擇這個驅動,如果想使這個驅動被編譯,要修改makefile
so新增新的驅動時需要修改的檔案有兩種(注意不只是兩個)
*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的配置.
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個組成部分:
makefile 最頂層的makefile
.config 核心的當前配置檔案,編譯時成為定層makefile的一部分
arch/$(arch)/makefile 與體系結構相關的makefile
s/ makefile.* 一些makefile的通用規則
kbuild makefile 各級目錄下的大概約500個檔案,編譯時根據上層makefile傳下來的巨集定義和其他編譯規則,將源**編譯成模組或者編入核心
頂層的makefile檔案讀取 .config檔案的內容,並總體上負責build核心和模組。arch makefile則提供補充體系結構相關的資訊。 s目錄下的makefile檔案包含了所有用來根據kbuild makefile 構建核心所需的定義和規則。
(其中.config的內容是在make menuconfig的時候,通過kconfig檔案配置的結果。
舉個例子:
假設想把自己寫的乙個flash的驅動程式載入到工程中,而且能夠通過menuconfig配置核心時選擇該驅動該怎麼辦呢?可以分三步:
第一:將你寫的flashtest.c 檔案新增到/driver/mtd/maps/ 目錄下。
第二:修改/driver/mtd/maps目錄下的kconfig檔案:
config mtd_flashtest
tristate 「ap71 flash"
這樣當make menuconfig時 ,將會出現 ap71 flash選項。
第三:修改該目錄下makefile檔案。
ü 新增如下內容:obj-$(config_mtd_flashtest) += flashtest.o
這樣,當你執行make menuconfig時,你將發現ap71 flash選項,如果你選擇了此項。該選擇就會儲存在.config檔案中。當你編譯核心時,將會讀取.config檔案,當發現ap71 flash 選項為yes 時,系統在呼叫/driver/mtd/maps/下的makefile時,將會把 flashtest.o 加入到核心中。即可達到你的目的
核心Kconfig詳解
1 核心的原始碼樹的每一級目錄下一般都會有兩個檔案 kconfig和makefile。分布在各目錄下的kconfig構成了乙個分布式的核心配置資料庫,每個kconfig分別描述了所屬目錄原始檔相關的核心配置選單,在核心配置make menuconfig時,如果已經存在.config,就直接將.con...
Kconfig檔案詳解
1 kconfig按照一定的格式來書寫,menuconfig程式可以識別這種格式,然後從中提取出有效資訊組成menuconfig中的選單項。2 將來在做驅動移植等工作時,有時需要自己新增kconfig中的乙個配置項來將某個裝置驅動新增到核心的配置專案中,這時候就需要對kconfig的配置項格式有所了...
Kconfig文件的作用
kconfig文件的作用 核心原始碼樹的目錄下都有兩個文件kconfig 2.4版本是config.in 和makefile。分布到各目錄的kconfig構成了乙個分布式的核心配置資料庫,每個kconfig分別描述了所屬目錄源文件相關的核心配置選單。在核心配置make menuconfig 或xco...