<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > RK3568驅動(dòng)指南|第二篇 字符設備基礎-第7章 menuconfig圖形化配置實(shí)驗(二)

RK3568驅動(dòng)指南|第二篇 字符設備基礎-第7章 menuconfig圖形化配置實(shí)驗(二)

發(fā)布人:紅李亞 時(shí)間:2024-03-01 來(lái)源:工程師 發(fā)布文章
7.2 Kconfig 語(yǔ)法簡(jiǎn)介
上一小節我們打開(kāi)的圖形化配置界面是如何生成的呢?圖形化配置界面中的每一個(gè)界面都會(huì )對應一個(gè)Kconfig文件。所以圖形化配置界面的每一級菜單是由Kconfig文件來(lái)決定的。
圖形化配置界面有很多菜單。所以就會(huì )有很多Kconfig文件,這也就是為什么我們會(huì )在內核源碼的每個(gè)子目錄下,都會(huì )看到Kconfig文件的原因,那掌握Kconfig文件相關(guān)的知識是不是就非常重要呢。
所以這一小節我們來(lái)看下如何編寫(xiě)Kconfig文件來(lái)生成圖形化配置界面,也就是Kconfig文件的語(yǔ)法是什么。
1.Mainmenu
mainmenu顧名思義就是主菜單,也就是我們輸入完“make menuconfig”以后默認打開(kāi)的界面,mainmenu用來(lái)設置主菜單的標題,如下所示:
mainmenu “Linux/$(ARCH) $(KERNELVERSION) Kernel Configuration”
此行代碼是設置菜單的名字為“Linux/$(ARCH) $(KERNELVERSION) Kernel Configuration”。如下圖(圖7-4)所示,ARCH變量是通過(guò)“export ARCH=arm64”設置的,內核版本KERNELVERSION為4.19.232。

2.source

source用于讀取另一個(gè)Kconfig文件,比如“source “init/Kconfig””就是讀取init目錄下的Kconfig文件。

3.menu/endmenu

menu/endmenu條目用于生成菜單,如下(圖7-5)所示,生成了Watchdog Timer Support的菜單。

menu之后的字符串是菜單名,“menu”是菜單開(kāi)始的標志,“endmenu”是菜單結束的標志,這倆個(gè)是成對出現的?!癿enu”和“endmenu”之間有很多config條目。在kernel目錄下輸入make menuconfig,如下圖(圖7-6)所示,可以看到上述代碼描述的"Watchdog Timer Support"菜單。

進(jìn)入“ Watchdog Timer Support —> ”可以看到很多config定義的條目,如下(圖7-7)所示:

4.if/endif

if/endif 語(yǔ)句是一個(gè)條件判斷,定義了一個(gè) if 結構,Kconfig中代碼如下(圖7-8)所示:

圖 7-8

當沒(méi)有選中 “Enable CAN” 選項時(shí),下面通過(guò) if 判斷的 Enable CAN1 選項并不會(huì )顯示出來(lái)。當上一級菜單選中 “Enable CAN” 時(shí),Enable CAN1 選項才會(huì )顯示。

\5. choice/endchooice

choice條目將多個(gè)類(lèi)似的配置選項組合到一起,供用戶(hù)選擇,用戶(hù)選擇是從“choice”開(kāi)始,從“endchoice”結束,“choice”和“endchoice”之間有很多的config條目,這些config條目是提供用戶(hù)選擇的,如下(圖7-9)所示:

我們在內核目錄下輸入make menuconfig可以看到,如下(圖7-10)所示,“Parade TrueTouch Gen5 MultiTouch Protocol”是choice選項名稱(chēng),“Protocol B”是Kconfig里面默認選擇的?!皑C>”代表此菜單能進(jìn)入,需要鍵盤(pán)操作進(jìn)入。

進(jìn)入“Parade TrueTouch Gen5 MultiTouch Protocol”后,可以看到多選項提供給用戶(hù)進(jìn)行選擇,如下(圖7-11)所示:

6.comment

comment 語(yǔ)句出現在界面的第一行,用于定義一些提示信息。

comment “Compiler: $(CC_VERSION_TEXT)”

以上代碼的配置界面如下(圖7-12)所示:

7.config

使用關(guān)鍵字config來(lái)定義一個(gè)新的選項,如下(圖7-13)所示

如上所示,使用config關(guān)鍵字定義了一個(gè)“helloworld”選項,每個(gè)選項都必須指定類(lèi)型,類(lèi)型包括bool,tristate,string,hex,int。最常見(jiàn)的是bool,tristate,string這三個(gè)。

bool類(lèi)型取值只有“y”和“n”

tristate類(lèi)型的變量取值有3種:“y”,“n”,“m”

string類(lèi)型取值為字符串

hex類(lèi)型取值為十六進(jìn)制的數據

int類(lèi)型取值為十進(jìn)制的數據

help表示幫助信息,當我們在圖形化界面按下h按鍵,彈出來(lái)的就是help的內容。

8.depends on

Kconfig中depends on關(guān)鍵字用來(lái)指定依賴(lài)關(guān)系,當依賴(lài)的選項被選中時(shí),當前的配置選項的信息才會(huì )在菜單中顯示出來(lái),才能操作該選項的內容。舉例來(lái)說(shuō),如下所示,選項A依賴(lài)選項B,只有當選項B被選中時(shí),選項A才可以被選中。

9.select

Kconfig中select關(guān)鍵字用來(lái)表示反向依賴(lài)關(guān)系,當指定當前選項被選中時(shí),此時(shí)select后面的選項也會(huì )被自動(dòng)選中。舉個(gè)例子來(lái)說(shuō),如下所示,在選項A被選中的情況下,選項B自動(dòng)被選中。

\10. menuconfig

menuconfig可以認為是config 中的升級版。menuconfig也是一個(gè)正常的配置項,通過(guò)自己的配置值來(lái)決定另外一組配置項是否作為子菜單的形式顯示出來(lái)并供用戶(hù)配置。代碼如下(圖7-14)所示。

以上代碼中通過(guò)menuconfig配置了一個(gè)bool類(lèi)型的配置項,在圖形化配置界面中顯示(圖7-15)如下:

當我們選中"Network device support"配置項時(shí),其子菜單被顯示出來(lái),如下圖(圖7-16)所示:

更多內容可以B站搜索北京迅為/CSDN搜索迅為RK3568開(kāi)發(fā)板


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: 開(kāi)發(fā)板

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>