新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Linux內核驅動程序的配置

        Linux內核驅動程序的配置

        作者: 時間:2016-10-08 來源:網絡 收藏

        腳本1: bool Networking support腳本2: bool prompt Networking support輸入提示的一般格式的如下所示:prompt[if ]其中可選的 if 用來表示該提示的依賴關系。

        默認值的格式如下所示: default [if ]一般配置選項可以存在任意多個默認值,這種情況下,只有第一個被定義的值是可用的。如果用戶不設置對應的選項,配置選項的值就是默認值。

        依賴關系的格式如下所示:depends on (或者 requires) 如果定義了多個依賴關系,他們之間用 “”間隔。依賴關系也可以應用到該菜單中所有的其他選項中(這些選項同樣可接受 if 表達式),下面的兩端段腳本是等價的。

        腳本1: bool foo if BAR default y if BAR腳本2: depends on BAR bool foo default y反向依賴關系的格式如下所示:select [if ] depends能限定一個 symbol 的上限,即如果 A 依賴于 B,則在 B 被配置為 Y 的情況下,A 可以為“Y、M 和N;在 B 被配置為 ”M 情況下,A 可以被配置為M 或 N;B 在被配置為 N 的情況下,A 只能為 “N. select 能限定一個 symbol 的下限,若 A 反向依賴于 B,則 A 的配置值會高于或等于 B(正好與 depends)。如果 symbol 反向依賴于多個對象,則它的下陷是這些對象的最大值。

        kbuild Makefile 中的 expr (表達式) 定義如下所示: ::= '=' '!=' ' ( ' ' ) ' ' ! ' '' ' || ' 也就是說 expr 是由 symbol 、兩個 symbol 相等、兩個symbol 不等以及 expr 的賦值、非、與、或運算構成。而 symbol 分為兩類,一類是由菜單入口定義配置選項定義的非常數 symbol,另一類是作為 expr 組成部分的常數 symbol.數據范圍的格式如下:rang [if ]為 int 和 hex 類型的選項設置可以接受的輸入值范圍,用戶只能輸入大于等于第一個 symbol,小于等于第二個 symbol 的值。

        幫助信息的格式如下: help(或 ——help——)

        開始……

        結束幫助信息完全靠文本縮進識別結束。——help—— 和 help 在作用上沒有區別,設計——help—— 的初衷在于將文件中的配置邏輯與給開發人員的提示分開。

        menuconfig 關鍵字的作用與 config 類似,但它在 config 的基礎上要求所有的子選項作為獨立的行顯示。

        (2)菜單結構菜單入口在菜單樹結構中的位置可由兩種方法決定。第一種方式如下所示:menu Networking device support depends on NET config NETDEVICES……

        endmenu所有處于menu 和 endmenu 之間的菜單入口都會成為 Network device support 的子菜單。而且,所有子菜單選項都會繼承父菜單的依賴關系,比如, Network device support 對 Net 的依賴被加到了配置選項 NETDEVICES 的依賴列表中。

        另一種方式是通過分析依賴關系生成菜單結構。如果菜單選項在一定程度上依賴于前面的選項,它就恩能能成為該選項的子菜單。如果父選項為 N,則子選項不可見;如果父選項為 Y 或 M ,則子選項可見,例如:config MODULES bool Enable loadable module support config MODVERSIONS bool Set version information on all module symbols depends on MODULES comment module support disabled depends on !MODULES MODVERSIONS 直接依賴 MODULES,如果 MODULES 不為 “N,該選項才可見。

        除此之外,Kconfig 中還可能使用 “choices……endchoice、comment、if …… endif 這樣的語法結構。其中 choices …… endchoice” 的結構如下所示:choice endchoice它定義一個選擇群,其接受的選項(chioce options)可以是前面描述的任何屬性。在一個硬件有多個驅動的情況下使用,使用選擇可以實現最終只有一個驅動被編譯進內核或模塊。選擇群還可以接受的另一個選項是“optional”,這樣菜單入口就被設置為 N,沒有被選中。

        4. 應用實例:在內核中新增加驅動代碼目錄和子目錄假設要在內核源代碼 drivers 目錄下為 arm 體系結構新增如下用于 test driver 的樹型目錄:|——test |——cpu |——cpu.c |——test.c |——test_client.c |——test_ioctl.c |——test_proc.c |——test_queue.c在內核中增加目錄和子目錄,我們需為相應的新增目錄創建 Kconfig 和 Makefile 文件,而新增目錄的父目錄中的 Kconfig 和 Makefile 文件愛也需要修改,以便新增的 Kconfig 和 Makefile 文件能被引用。

        在新增的 test 目錄下,應該包含如下 Kconfig 文件:# #Test driver configuration # menu TEST Driver comment TEST Driver config CONFIG_TEST bool TEST support config CONFIG_TEST_USER tristate TEST user-space interface depends on CONFIG_TEST endmenu由于 TEST_driver 對于內核來說是新的功能,所以首先需要創建一個菜單 TEST Driver;然后顯示 TEST support,等待用戶選擇;接下來判斷用戶是否選擇了 TEST Driver,如果是(CONFIG_TEST=y),則進一步顯示子功能:用戶接口與CPU 功能:用戶接口與CPU 功能支持;由于用戶接口功能可以被編譯成內核模塊,所以這里的詢問語句使用了 tristate.為了使這個 Kconfig 文件能起作用,需要修改 arch/arm/Kconfig 文件,增加以下內容:source driver/test/Kconfig腳本中的 source 意味著引用新的 Kconfig 文件。



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 德化县| 天峨县| 右玉县| 泌阳县| 肇州县| 赤峰市| 安平县| 鸡泽县| 清河县| 松滋市| 安塞县| 英超| 台南市| 图木舒克市| 荔浦县| 扬中市| 嘉定区| 巴彦县| 洪泽县| 南城县| 娱乐| 张家川| 噶尔县| 肥城市| 临夏市| 望江县| 克拉玛依市| 利辛县| 喜德县| 丹东市| 雷波县| 古交市| 德惠市| 海口市| 留坝县| 德清县| 阳江市| 仲巴县| 聂荣县| 和硕县| 乐东|