首頁 >運維 >linux運維 >一個Linux驅動工程師必知的核心配置知識

一個Linux驅動工程師必知的核心配置知識

嵌入式Linux充电站
嵌入式Linux充电站轉載
2023-07-31 15:51:411554瀏覽

Linux核心設定係統的組成

Linux核心原始碼很多,有數千個設定選項,設定相當複雜。

為了更好選擇自己想要的功能配置,linux核心原始碼組織了一個配置系統;

配置系統包括三個部分:

##Makefile:負責整體的設定編譯

一個Linux驅動工程師必知的核心配置知識
Kconfig

:設定選項的來源##配置選單

這個設定係統就是執行

make menuconfig顯示的圖形化介面:

################# ######核心Kconfig檔###### ###############Kconfig層級關係############核心設定選項的來源檔案是###Kconfig###檔;#########主選項的設定原始檔是:###arch/$(ARCH)/Kconfig###檔案###;###

Kconfig檔案呼叫其他目錄的Kconfig文件,其他目錄的Kconfig檔案呼叫各級子目錄的Kconfig文件,形成樹狀的設定選項;

Kconfig語法介紹

例如: drivers/net/usb/Kconfig中,DM9601選單:

一個Linux驅動工程師必知的核心配置知識

config USB_NET_DM9601選單項目;選單項目下面的是選單的屬性;

選單都是以config 開頭,中間有空格,後面大寫的就是選單項目。

  • tristate :表示提示訊息,在配置選單中顯示的字串
  • depends :表示依賴的選項(所依賴的選項選上,才能選這個選項)
  • select :表示本選單選上後,自動選用的選單
  • Help :說明文字;

Kconfig的語法詳細參考:Documentation/ kbuild/kconfig-languages.txt

.config檔

核心配置完畢之後,會在核心原始碼的頂層目錄下產生.config文件;

#開.config文件,我們可以看到內容如下:

一個Linux驅動工程師必知的核心配置知識

#這裡在設定中選了」Davicom DM96xx based USB 10/100 ethernet device」選項,在.config檔案中會產生「CONFIG_USB_NET_DM9601= y」的設定資訊;如果沒有選上,這個選用上會用「#」註解掉;

核心Makefile檔案

#和Kconfig一樣,頂層以及各子目錄下都有一個Makefile檔。其功能如下:

  • 頂層Makefile負責配置編譯整個linux核心;
  • ##頂層
    Makefile讀取.config文件,根據.config文件的設定選項編譯核心;
  • 頂層
    makfile遞歸地遍歷核心原始碼中的所有子目錄,編譯所有的目標文件;
  • 每個子目錄下都有
    Mekefile文件,這些Makefile檔案會使用.config檔案中的信息,編譯對應的檔案;

#Makefile中的範例:

一個Linux驅動工程師必知的核心配置知識

obj-$(CONFIG_USB_NET_DM9601) = dm9601.o

相當於:

obj-y = dm9601.o

  • obj-y的意思是把dm9601.o目標檔編譯進內核,dm9601 .o目標檔案應該從dm9601.cdm9601.S檔案中編譯過來;
  • obj-m 的意思是把目標檔案編譯成模組

#載入核心配置的方法

#通常每個廠商都有自己的defconfig文件,載入配置時只需執行make xxx_defconfig,然後就會產生一個.config文件,即代表載入完配置。

在日常開發過程中,對於修改過.config,通常也會將.config拷貝覆寫原來的xxx_defconfig,然後上傳程式碼。

以上是一個Linux驅動工程師必知的核心配置知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:嵌入式Linux充电站。如有侵權,請聯絡admin@php.cn刪除