引子:前面的文章實現了可載入的核心模組,通過這個核心模組實現對PWM定時器的控制和中斷處理常式的註冊。這裡討論一下將核心模組直接編譯進核心的過程,首先聲明來源於國嵌的視頻教學。
其實很簡單,第一步把冰箱門開啟...(此處略去200字)
正經的第一步:將源檔案代碼 mytimer.c(不知道這麼說規範不,反正就是 .c 檔案)拷到Linux原始碼目錄下的 drivers 下的某個目錄下 如:drivers/char
第二步:修改drivers/char 中的 Kconfig,Kconfig檔案維護著核心模組配置的菜單(Linux原始碼根目錄下 make menuconfig 出來的東西)
開啟Kconfig,看到:
menu "Charecter devices" (drivers/char 中的Kconfig維護著菜單中字元驅動的選項)
(依照其他驅動的格式添加)
config MY_TIMER
(Tab)bool "my_timer" (在make menuconfig 開啟的菜單中,my_timer 將出現在Charecter devices
的下一層)
(儲存關閉)
如果在make menuconfig 中選擇了my_timer,配置結果將體現在Linux原始碼根目錄下 .config 檔案中,在該檔案中將會自動添加 CONFIG_MY_TIMER=y 的配置項。
第三步:開啟drivers/char 中的 Makefile
(依照其他驅動的格式添加)
obj-$(CONFIG_MY_TIMER) +=
mytimer.o
(儲存關閉)
編譯就可以了
同顏色的部分是相關聯的,即肝膽相照,榮辱與共,同生共死,互為因果
注意:
編譯可載入的核心模組的代碼 mytimer.c 同拷到直接編譯到核心所使用的
mytimer.c 稍有不同,載入的核心模組的代碼 mytimer.c 中開始部分需要有
#ifndef MODULE
#define MODULE
#endif
在直接編譯到核心時應當去掉
否則會報錯(該部分源自網民阿南的《ARMLinux入門與實踐》)