日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kconfig文件详解

發布時間:2023/12/20 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kconfig文件详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下內容源于朱有鵬嵌入式課程的學習,如有侵權,請告知刪除。



1、Kconfig的格式

(1)Kconfig按照一定的格式來書寫,menuconfig程序可以識別這種格式,然后從中提取出有效信息組成menuconfig中的菜單項。

(2)將來在做驅動移植等工作時,有時需要自己添加Kconfig中的一個配置項來將某個設備驅動添加到內核的配置項目中,這時候就需要對Kconfig的配置項格式有所了解。

(3)#開頭的行是注釋行。

(4)menuconfig表示菜單(本身屬于一個菜單中的項目,但是其又有子菜單項目)、config表示菜單中的一個配置項(本身并沒有子菜單下的項目)。

(5)menuconfig或者config后面用空格隔開的大寫字母,表示的就是這個配置項的配置項名字。這個字符串前面添加CONFIG_后就構成了.config中的配置項名字。

(6)一個menuconfig后面跟著的所有config項就是這個menuconfig的子菜單。這就是Kconfig中表示的目錄關系。

(7)內核源碼目錄樹中每一個Kconfig都會source引入其所有子目錄下的Kconfig,從而保證了所有的Kconfig項目都被包含進menuconfig中。

  • 如果在linux內核中添加一個文件夾,一定要在這個文件夾下創建一個Kconfig文件,然后在這個文件夾的上一層目錄的Kconfig中source引入這個文件夾下的Kconfig文件。

2、tristate和bool的含義

tristate意思是三態(3種狀態,對應Y、N、M三種選擇方式),bool是要么真要么假(對應Y和N)。

  • tristate的意思就是這個配置項可以有三種選擇;
  • bool的意思是這個配置項只能有2種選擇。

3、depends的含義

(1)本配置項依賴于另一個配置項。

  • 如果那個依賴的配置項為Y或者M,則本配置項才有意義;如果依賴的哪個配置項本身被設置為N,則本配置項根本沒有意義。

(2)depends項目會導致make menuconfig的時候找不到一些配置項。

  • 所以在menuconfig中如果找不到一個選項,但是這個選項在Kconfig中卻是有的,則可能的原因就是這個配置項依賴的一個配置項是不成立的。

(3)depends并不要求依賴的配置項一定是一個,可以是多個,而且還可以有邏輯運算。此時只要依賴項目運算式子的邏輯結果為真則依賴就成立。


4、help

幫助信息,告訴我們這個配置項的含義,以及如何去配置他。


5、Kconfig和.config文件和Makefile三者的關聯

(1)配置項被配置成Y、N、M會影響.config文件中的CONFIG_XXX變量的配置值。

(2).config中的配置值(=y、=m、沒有)會影響最終的編譯鏈接過程。

  • 如果=y則會被編入(built-in),如果=m會被單獨連接成一個ko模塊,如果沒有則對應的代碼不會被編譯。這是怎么實現的?都是通過makefile實現的。

(3)obj-$(CONFIG_DM9000) += dm9000.o

  • 如果CONFIG_DM9000變量值為y,則obj += dm9000.o,因此dm9000.c會被編譯;
  • 如果CONFIG_DM9000變量未定義,則dm9000.c不會被編譯。
  • 如果CONFIG_DM9000變量的值為m,則會被連接成ko模塊。
  • 這些都是在linux內核的Makefile中定義的規則。

總結:把menuconfig中的菜單項、Kconfig中的配置項、.config中的一行、 Makefile中的一行,這4個東西結合起來理解。


總結

以上是生活随笔為你收集整理的Kconfig文件详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。