【迅為iTop4412學習筆記】2. make menuconfig即Kconfig的仿寫(簡單說說,但是很重要)
在寫第5篇的註冊驅動的時候,發現還是要寫一下這裡,這裡其實就圍繞了Kconfig展開
make menuconfig 是圖形化配置介面,Kconfig是真正背後修改的檔案。
看一下linux的結構會發現,目錄裡有個Kconfig,而它包含了子目錄下的Kconfig,子目錄的Kconfig又包含了他的子目錄的Kconfig。
到此其實應該就明白了,linux原始碼是分層的,每一層裡都有一個Kconfig檔案。
舉個例子,老闆手下有3個經理,每個經理手下有5個組長,每個組長手下有10個人。老闆當然不會管理所有人(難管理+累),大家都管好自己的手下即可,這樣也就管理了所有人。
make menuconfig就是從主目錄的Kconfig(老闆)開始搜尋,一層一層(老闆->經理->組長->組員)的搜下去,這樣,整個linux就全部呈現在眼前了,我們裁剪linux,也就是選擇需要的,剔除不要的。
在註冊驅動的時候,需要定義的巨集定義就是在本章節仿照已有的LEDS來仿寫的。
一方面是為了配置巨集定義,一方面也是在make menuconfig中新增選項。
因為仿寫的是LEDS,LEDS是字元裝置,路徑是drivers/char,而我們需要修改的是字元裝置裡的Kconfig
vim drivers/char/Kconfig
搜尋LEDS 然後仿寫一個就行了,我這就叫MRYANG_CTL吧
config LEDS_CTL
bool "Enable LEDS config"
default y
help
Enable LEDS config
config MRYANG_CTL
bool "Enable MRYANG config"
default y
help
Study Kconfig
下面這個就是我仿寫的,bool表示開關兩個選項,還有三個選項的叫tristate,這個百度搜一下,都很簡單。
這裡的定義在註冊裝置時至關重要,請記住你定義的巨集定義的名字…
=========================================================
東西比較簡單,稍微記錄一下,有空再來完整寫。
以下只是個草稿
虛擬機器Ubuntu版
linux核心參考:https://yq.aliyun.com/articles/594992?utm_content=m_50735
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.2.tar.xz
xz -d .tar.xz
tar -xvf .tar
cd linux
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
cp /boot/config-$(uname -r) .config
make menuconfig
ssh視窗要夠大 不然顯示不了會失敗
/Device Drivers/Character devices
vim drivers/char/Kconfig
make menuconfig就有了