Kconfig文件详解
以下內(nèi)容源于朱有鵬嵌入式課程的學(xué)習(xí),如有侵權(quán),請(qǐng)告知?jiǎng)h除。
1、Kconfig的格式
(1)Kconfig按照一定的格式來書寫,menuconfig程序可以識(shí)別這種格式,然后從中提取出有效信息組成menuconfig中的菜單項(xiàng)。
(2)將來在做驅(qū)動(dòng)移植等工作時(shí),有時(shí)需要自己添加Kconfig中的一個(gè)配置項(xiàng)來將某個(gè)設(shè)備驅(qū)動(dòng)添加到內(nèi)核的配置項(xiàng)目中,這時(shí)候就需要對(duì)Kconfig的配置項(xiàng)格式有所了解。
(3)#開頭的行是注釋行。
(4)menuconfig表示菜單(本身屬于一個(gè)菜單中的項(xiàng)目,但是其又有子菜單項(xiàng)目)、config表示菜單中的一個(gè)配置項(xiàng)(本身并沒有子菜單下的項(xiàng)目)。
(5)menuconfig或者config后面用空格隔開的大寫字母,表示的就是這個(gè)配置項(xiàng)的配置項(xiàng)名字。這個(gè)字符串前面添加CONFIG_后就構(gòu)成了.config中的配置項(xiàng)名字。
(6)一個(gè)menuconfig后面跟著的所有config項(xiàng)就是這個(gè)menuconfig的子菜單。這就是Kconfig中表示的目錄關(guān)系。
(7)內(nèi)核源碼目錄樹中每一個(gè)Kconfig都會(huì)source引入其所有子目錄下的Kconfig,從而保證了所有的Kconfig項(xiàng)目都被包含進(jìn)menuconfig中。
- 如果在linux內(nèi)核中添加一個(gè)文件夾,一定要在這個(gè)文件夾下創(chuàng)建一個(gè)Kconfig文件,然后在這個(gè)文件夾的上一層目錄的Kconfig中source引入這個(gè)文件夾下的Kconfig文件。
2、tristate和bool的含義
tristate意思是三態(tài)(3種狀態(tài),對(duì)應(yīng)Y、N、M三種選擇方式),bool是要么真要么假(對(duì)應(yīng)Y和N)。
- tristate的意思就是這個(gè)配置項(xiàng)可以有三種選擇;
- bool的意思是這個(gè)配置項(xiàng)只能有2種選擇。
3、depends的含義
(1)本配置項(xiàng)依賴于另一個(gè)配置項(xiàng)。
- 如果那個(gè)依賴的配置項(xiàng)為Y或者M(jìn),則本配置項(xiàng)才有意義;如果依賴的哪個(gè)配置項(xiàng)本身被設(shè)置為N,則本配置項(xiàng)根本沒有意義。
(2)depends項(xiàng)目會(huì)導(dǎo)致make menuconfig的時(shí)候找不到一些配置項(xiàng)。
- 所以在menuconfig中如果找不到一個(gè)選項(xiàng),但是這個(gè)選項(xiàng)在Kconfig中卻是有的,則可能的原因就是這個(gè)配置項(xiàng)依賴的一個(gè)配置項(xiàng)是不成立的。
(3)depends并不要求依賴的配置項(xiàng)一定是一個(gè),可以是多個(gè),而且還可以有邏輯運(yùn)算。此時(shí)只要依賴項(xiàng)目運(yùn)算式子的邏輯結(jié)果為真則依賴就成立。
4、help
幫助信息,告訴我們這個(gè)配置項(xiàng)的含義,以及如何去配置他。
5、Kconfig和.config文件和Makefile三者的關(guān)聯(lián)
(1)配置項(xiàng)被配置成Y、N、M會(huì)影響.config文件中的CONFIG_XXX變量的配置值。
(2).config中的配置值(=y、=m、沒有)會(huì)影響最終的編譯鏈接過程。
- 如果=y則會(huì)被編入(built-in),如果=m會(huì)被單獨(dú)連接成一個(gè)ko模塊,如果沒有則對(duì)應(yīng)的代碼不會(huì)被編譯。這是怎么實(shí)現(xiàn)的?都是通過makefile實(shí)現(xiàn)的。
(3)obj-$(CONFIG_DM9000) += dm9000.o
- 如果CONFIG_DM9000變量值為y,則obj += dm9000.o,因此dm9000.c會(huì)被編譯;
- 如果CONFIG_DM9000變量未定義,則dm9000.c不會(huì)被編譯。
- 如果CONFIG_DM9000變量的值為m,則會(huì)被連接成ko模塊。
- 這些都是在linux內(nèi)核的Makefile中定義的規(guī)則。
總結(jié):把menuconfig中的菜單項(xiàng)、Kconfig中的配置項(xiàng)、.config中的一行、 Makefile中的一行,這4個(gè)東西結(jié)合起來理解。
總結(jié)
以上是生活随笔為你收集整理的Kconfig文件详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 杰魔(Geomagic Design)逆
- 下一篇: 计算机度分秒在线,度分秒换算器(度分秒换