1. 程式人生 > >驅動模組靜態編譯到 Linux 核心

驅動模組靜態編譯到 Linux 核心

一、準備好可以正常引導開發板的原始碼

二、在核心原始碼kernel資料夾的driver目錄下,建立led_arm資料夾
        mkdir drivers/led_arm
三、將“LED驅動實驗”的驅動程式拷貝到led_arm目錄下(詳情見上一次LED驅動部落格)

       將led.c拷貝在該資料夾下面

Kconfig就是對應著核心的配置選單。假如要想新增新的驅動到核心的原始碼中,可以通過修改Kconfig來增加對我們驅動的配置選單,這樣就有途徑選擇我們的驅動。

    每個config選單項都要有型別定義,bool:布林型別, tristate三態:內建、模組、移除, string:字串, hex:十六進位制, integer:整型

例如config HELLO_MODULE
bool "hello test module"

     bool型別的只能選中或不選中,tristate型別的選單項多了編譯成核心模組的選項,假如選擇編譯成核心模組,則會在.config中生成一個CONFIG_HELLO_MODULE=m的配置,假如選擇內建,就是直接編譯成核心影響,就會在.config中生成一個CONFIG_HELLO_MODULE=y的配置.


      ①新增一個Kconfig檔案

config MYLED
	tristate "MYLED"
	default n
	help
	this is a LED driver

      ②新增一個Makefile
obj-$(CONFIG_LEDTEST)+=led.o

四、將我們編寫的驅動支援選項增加進核心的配置選單中。
    修改drivers目錄中的Kconfig檔案

在最後一行新增語句

source "drivers/led_arm/Kconfig"

五、修改drivers/Makefile檔案
   增加以下語句
     obj-$(CONFIG_LEDTEST)      +=led_arm/
六、重新配置核心
  在原始碼根目錄輸入
    #make Menuconfig 
   可以在選單的最後,看到我們新加入的MYLED選項。