2013年11月30日 星期六

Linux kernel 開發基礎 (一)- Driver 基本概念

開發Linux kernel driver時

經常使用make menuconfig來進行kernel的設定

簡單來說,

這個指令會掃描每個目錄中的Kconfig,

收集其中的訊息與相關設定並將其秀在視窗上供開發者方便設定kernel,

開發者設定完畢後儲存會將這些設定統一存在Linux kernel 根目錄底下

一個隱藏檔: .config

定義的資料有可能長這樣:

config Hello
bool "Hello title"
depends Module
help
Hello detail message




一般而言,

如果沒有設定driver載入的預設值,

系統會出現Y/N/M 三種選項讓你選擇每個driver的載入方式.

在Android的Linux kernel中

通常會把預設值放在kernel/arch/arm/configs目錄裡面

在每個目錄裡面除了Kconfig之外還有一個檔案Makefile,

定義有哪些source code需要complier.

舉例來說

obj-y += hello.o

意思是目錄中有一個hello.c需要complier

綜合以上所說,

簡單來說一個最精簡的Linux kernel driver需要三個檔案

driver本身.c ,Kconfig , makefile

沒有留言: