天天看點

迅為4412開發闆實驗Menuconfig_Kconfig(上)

3.1 本章導讀

Linux 驅動工程師一定要掌握 Linux 核心的編譯方法,也就是将 Linux 核心源碼,編譯成針對特定硬體的二進制鏡像。

在前面入門視訊“01-燒寫、編譯以及基礎知識視訊”→“實驗 10-搭建編譯環境uboot_linux_Android”中,簡單的介紹過如何将 Linux 源碼編譯生成二進制 zImage在本章中,将更加詳細的介紹這部分内容,然後介紹 Kconfig 配置檔案,Kconfig 檔案是和編譯的 Makemenuconfig 工具配合使用的。最後還需要掌握“.config”檔案的作用。

3.1.1 工具

3.1.1.1 硬體工具

1)PC 機

3.1.1.2 軟體工具

1)虛拟機 Vmware

2)Ubuntu12.04.2

3)Ubuntu 系統下解壓生成的 Linux 源碼

3.1.2 預備課程

入門視訊“01-燒寫、編譯以及基礎知識視訊”→“實驗 10-搭建編譯環境uboot_linux_Android”或者使用手冊“五 Android 開發環境搭建以及編譯”

3.1.3 視訊資源

本節配套視訊為“視訊 03_Menuconfig_Kconfig”

3.2 學習目标

本章需要學習以下内容:

掌握 Menuconfig 的用法

了解 Kconfig 檔案并掌握修改 Kconfig 的方法

了解配置檔案“.config”

Linux 核心配置裁減

3.3 Linux 核心配置系統

Linux 核心配置系統由三個部分組成。

Makefile 檔案:分布在 Linux 核心源碼中的 Makefile 檔案,定義了 Linux 核心的編譯規則。

Kconfig 檔案:給使用者提供配置選擇的功能。

配置工具:這裡使用的是 menuconfig,相比其它工具,這個工具使用的比較多,也比較

容易上手,無論哪個機構釋出的 Linux 版本應該都是支援 menuconfig 的。

3.4 Menuconfig 的操作

Linux 的裁減配置是通過 menuconfig 工具來實作的,本節介紹如何使用這個工具。

3.4.1 Menuconfig 發展曆史簡介

在 Linux 發展過程中,配置核心可以使用以下工具。

#make config

這是基于文本的最為傳統的配置界面,不推薦使用

#make menuconfig

基于文本菜單的配置界面,現在大部分都是使用這個工具來裁減配置核心的,本章節也是

介紹這種方法。

#make xconfig

要求 QT 被安裝,用的比較少。

#make gconfig

要求 GTK,用的比較少。

上面不同的指令代表使用不同的工具,如下圖所示,在源碼目錄下,輸入指令“make

config”。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如上圖所示,這是一個文本類型的配置工具,根據提示“scripts/kconfig/conf --oldaskconfig Kconfig”可以知道,這種方法是舊的配置方法,雖然 Linux 核心可能會長時間的支援,但是不人性化的操作方式,會降低效率,是以現在幾乎淘汰了。

使用“Ctrl+c”可以退出配置界面,退出後,如下圖所示。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

3.4.2 Menuconfig 操作方法

前面實驗提到過 menuconfig 實作的代碼在源碼“scripts”目錄下,不過這裡根本不用關心它是怎麼實作的,隻需要掌握怎麼操作即可,就像學習開車,要知道怎麼打方向盤,而不需要知道方向盤和輪子之間是怎麼傳動的。

下面介紹 menuconfig 的操作方法。

如下圖所示,在源碼目錄下,輸入指令“make Menuconfig”。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如下圖所示,進入配置界面。這個功能界面對應配置工具,它包含配置指令解釋器,對配置腳本中使用的指令進行解釋;還包含了配置使用者界面,用來提供字元界面和圖形界面。這些配置工具都是使用腳本語言編寫的,不過隻用關心怎麼使用。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如下圖所示,“方向按鍵”中的“左右”可以選擇你需要的操作。“<Select>”表示進入選擇的配置界面,“< Exit >”表示傳回,“< Help >”可以閱讀幫助文檔。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如下圖所示,“方向按鍵”中的“上下”可以選擇配置的選項。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如下圖所示,輸入“/”,可以進入搜尋界面。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如下圖所示,這裡來查找一下“leds”的驅動,輸入“leds”,然後按“回車”。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如下圖所示,發現很多配置都是“=n”,通過方向按鍵,控制向下翻頁,然後觀察那個選項配置成了“=y”。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如下圖所示,這裡可以看到這個 leds 驅動的目錄“Device Drivers”“Characterdevices”。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

然後,根據查找出來的資訊,找到對應的 leds 驅動。如下圖,傳回配置界面。找到“Device Drivers”目錄。輸入“回車”。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如下圖所示,進入“Device Drivers”對應的配置界面。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

然後,如下圖所示,找到“Character devices”,輸入“回車”。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如下圖所示,進入“Character devices”配置界面。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如下圖所示,“Enable LEDS config”找到對應的 leds 驅動配置選項。預設配置檔案裡,這個已經選上了。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

單擊“空格”鍵後,去掉 leds 驅動選項。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

再次敲擊“空格”,選上 leds 驅動的選項。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

然後,選上“Exit”,如下圖所示,輸入“回車”。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如下圖所示,繼續退出。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如下圖所示,繼續退出。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如下圖所示,因為修改過配置選項,是以退出的時候會提醒“是否儲存新的配置”。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

如下圖所示,因為第一次操作,擔心使用者在無意間動了某個配置選項,編譯後無法啟動,建議選擇“No”,不儲存退出。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

到這裡,整個 Menuconfig 配置的操作以及流程就完全介紹完了。如果修改了配置檔案,如下圖所示的“.config”檔案就會被修改。再次編譯核心的時候,系統會根據新的config 檔案來編譯整個核心。

核心的配置非常多,大家可以看一下使用手冊 9.4 小節,裡面有詳細的介紹。

迅為4412開發闆實驗Menuconfig_Kconfig(上)

iTOP4412開發闆項目實戰:

1.雲伺服器隻能家居 2.門禁系統 3.WEB服務及遠端控制 4.智能網關 5.手機遠端控制開發闆 6.圖像識别 7.機車導航項目 8.Zigbee智能家居

學習資料:2300頁教程+300期配套視訊教程

繼續閱讀