Linux內核移植之三:內核配置選項

內容來自 韋東山《嵌入式Linux應用開發完全手冊》

 

         Linux內核配置選項多達上千個,一個個地進行選擇既耗費時間,對開發人員的要求也比較高(需要了解每個配置選項的作用)。一般的做法是在某個默認配置文件的基礎上進行修改,比如我們可以先加載配置文件arch/arm/configs/s3c2410_defconfig,再增加、去除某些配置選項。

         下面分3部分介紹內核配置選項,先從整體介紹主菜單的類別,然後分別介紹和移植系統關係比較密切的“System Type”、“Device Drivers”菜單。

1.配置界面主菜單的類別

        表16.4講解了主菜單的類別,以後讀者配置內核時,可以根據自己所要設置的功能進入某個菜單,然後根據其中各個配置選項的幫助信息進行配置。

表16.4配置界面主菜單的類別/功能

配置界面主菜單 描述
Code maturity level options

代碼成熟度選項:用於包含一些正在開發的或者不成熟的代碼、驅動程序。一般不設置

General setup 常規設置:比如增加附加的內核版本號、支持內存頁交換(swap)功能、System V進程間通信等。除非很熟悉其中的內容,否則一般使用默認配置
Loadable module support 可加載模塊支持:一般都會打開可加載模塊支持(Enable loadable module support)、允許卸載已經加載的模塊(Module unloading)、讓內核通過運行modprobe來自動加載所需要的模塊(Automatic kernel module loading)
Block layer 塊設備層:用於設置塊設備的一些總體參數,比如是否支持大於2TB的塊設備、是否支持大於2TB的文件、設置I/0調度器等。一般使用默認值即可
System Type 系統類型:選擇CPU的架構、開發板類型等與開發板相關的配置選項
Bus support PCMC1A/CardBus總線的支持,對於本書的開發板,不用設置
Kermel Features 用於設置內核的一些參數,比如是否支持內核搶佔(這對實時性有幫助)、是否支持動態修改系統時鐘(imer ick)等
Boot oplions  啓動參數:比如設置默認的命令行參數等,一般不用理會
Floating point enulalion 浮點運算仿真功能,縣前Lx還不支持硬件浮點運算,所以要選擇一個浮點仿真器,一般選擇“NWFPE math emulation”
Userspace binary formats 可執行文件格式:一般都選擇支持ELF、a.out格式
Power management options 電源管理選項
Networking 網絡協議選項:一般都選擇“Networking support”以支持網絡功能,選擇“Packet socket”以支持socket 接口功能,選擇“TCP/IP networking”以支持TCP/IP網絡協議。通常可以在選擇“Networking support”後,使用默認配置
Device Drivers 設備驅動程序:幾乎包含了Linux的所有驅動程序
File systems 文件系統:可以在裏面選擇要支持的文件系統,比如EXT2、JFFS2等
Profiling support  對系統的活動進行分析,僅供內核開發者使用
Kernel hacking 調試內核時的各種選項
Security options 安全選項:一般使用默認配置
Cryptographic options 加密選項
Library routines

庫子程序:比如CRC32檢驗函數、zlib壓縮函數等。不包含在內核源碼中的第三方內核模塊可能需要這些庫,可以全不選,內核中若有其他部分依賴它,會自動選上

 

2.“System Type”菜單:系統類型

        對於arm平臺(在頂層Makefile中修改“ARCH?=arm”),執行“make menuconfig”後在配置界面可以看到“System Type”字樣,進入它得到另一個界面,如圖16.5所示。

        第一行“ARM system type”用來選擇體系結構,進入它之後選中“Samsung S3C2410,S3C2412,S3C2413,S3C2440,S3C2442,S3C2443”,查看幫助信息可以知道它對應CONFIG ARCHS3C2410配置項。

        下面幾行用來設置S3C2410(包括S3C2412等)系統的特性,比如選中“S3C2410UART to use for low-level messages”後按回車鍵,可以輸入數字,表示使用哪個串口來輸入內核打印信息;選中“S3C2410DMA support”表示支持DAM功能。

        再往下的“S3C2410Machines…>”、“S3C2440Machines-…>”表示這又是一個菜單,它們用來選擇開發板類型。比如進入“S3C2410Machines”菜單後,可以看到如下內容:

{*]SMDK2410/A9M2410

[]IPAQ H1940

[]Acer N30

[]simtec Electronics BAST(EB2410ITX)

T1 Nexvision OTOM Board

[]AML M5900 Series

[]Thorcom VR1000

[*]QT2410

        它們表示目前內核中支持S3C2410的8種開發板。選中某個開發板後,它相應的文件就

會被編譯進內核中。比如對於開發板“SMDK2410/A9M2410”,它的配置項爲CONFIG ARCH SMDK2410(可以查看幫助信息知道這點),在arcl/arm/mach-s3c2410/Makefile中可以看到如下一行,表示如果選擇支持該開發板,則arch/arm/mach-s3c2410/mach-smdk2410.c文件被編進內核中。

0bj-¥(CONPTGARCH_SMDK2410) += mach-smdk2410.0

        在移植內核時,可以選中某個配置相似的開發板,然後在上面進行修改。

        後面的內容一看名字就可以瞭解它們的功能,不再介紹。

3.“Device Drivers”菜單:設備驅動程序

        執行“make menuconfig”後在配置界面可以看到“Device Drivers”字樣,進入它則進入如圖16.6所示界面。

        圖16.6中的各個子菜單與內核源碼 drivers/目錄下各個子目錄一一對應,如表16.5所示。在配置過程中可以參考這個表格找到對應的配置選項;在添加新驅動時,也可以參考它來決定代碼放在哪個目錄下。

表l6.5設備驅動程序配置子菜單分類/功能

“Device Drivers”子菜單 描述
Generic Driver Options 對應drivers/base目錄,這是設備驅動程序中一些基本和通用的配置選項
Connector-unified userspace <>kemelspace linker 對應drivers/connector目錄,一般不用理會
Memory Technology Device(MTD)support

對應drivers/mtd目錄,它用於支持各種新型的存儲設備,比如NOR Flash、NANDFlash等

Parallel port support 對應drivers/parport目錄,它用於支持各種並口設備,在一般嵌入式開發板中用不到
Plug and Play support 對應drivers/pnp目錄,支持各種“即插即用”的設備
Block devices 對應drivers/block目錄,包括迴環設備、RAMDISK等的驅動
AT/ATAPIUMFWRLL.supon 對應drivorsiae日錄,它用來支持ATA/ATAPV MFM/RLL接口的硬盤、軟盤、光盤等
SCSI device support 對應drivers/scsi目錄,支持各種SCSl接口的設備
Serial ATA(prod)and Parallel ATA(experimental)drivers 對應 drivers/ata目錄,支持SATA與PATA設備
Multi-device support(RAID and LVM) 對應drivers/md目錄,表示多設備支持(RAID和LVM)。RAID和LVM的功能是使多個物理設備組建成一個單獨的邏輯磁盤
Network device suppot 對應driversnet日錄,用來支持各種網絡設備,比如CS8900、DM9000等
ISDN subsytem 對應drivers/isdn目錄,用來提供綜合業務數字網(Integrated Service Digital Network)的驅動程序
Input device support 對應drivers/input目錄,支持各類輸入設備,比如鍵盤、Input device support鼠標等
Character devices

對應 drivers/char目錄,它包含各種字符設備的驅動程序。串口的配置選項也是從這個菜單調用的,但是口的代碼在drivers/serial目錄下

I2C support 對應drivers/I2C目錄,支持各類I2C設備
SPI support 對應drivers/spi目錄,支持各類SPI設備
Dallas's 1-wire bus 對應drivers/wl目錄,,支持一線總線。
Hardware Monitoring support

對應drivers/hwmon目錄。當前主板大多都有一個監控硬件健康的設備用於監視溫度/電壓/風扇轉速等,這些功能需要I2C的支持。在嵌入式開發板中一般用不到

Mise devices 對應drivers/misc目錄,用來支持一些不好分類的設備,稱爲雜項設備
Multifunction device drivers 對應drivers/mfd目錄,用來支持多功能的設備,比如 SM501,它既可用於顯示圖像,也可以用作串口等
LED devices 對應drivers/leds日錄,包含各種LED驅動程序
Mulimedia devices 對應drivers/media目錄,包含多媒體驅動,比如V4L(Video  for Linux“,它用於向上提供統一的圖像、聲音接口
Graphics support 對應drivers/video目錄,提供圖形設備/顯卡的支持對應sound/目錄(它不在drivers/日錄下),用來支持各Sound種聲卡
HID Devices

對應drivers/hid目錄,用來支持各種USB-HID設備,或者符合USB.IID規範的設備(比如藍牙設備),HID表示human interface device,比如各種USB接口的鼠標/鍵盤/遊戲杆/手寫板等輸入設備
 

USB support  對應driversusb日錄,包括各種USB Host 和USB Device設備
 
MMC/SD card support 對應drivers/mmc目錄,用來支持各種MMC/SD卡
Real Time Clock 對應drivers/nc日錄,用來支持各種實時時鐘設備。比如S3C24x0上就集成了RTC芯片
   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章