1. 程式人生 > >詳解將驅動程式編譯進linux核心

詳解將驅動程式編譯進linux核心

1、進入目錄linux-kernel-samsung-dev\drivers\char

2、新建目標目錄01.led,將驅動相關檔案複製到此目錄
   注:需確保複製的驅動檔案是能正常執行的驅動

3、在目錄01.led裡編寫Kconfig檔案
menu "xxx"

config XXX_LED
        tristate "xxx_ggg210_led"
        default n
        help
          The led water made by xxx which was used by platform!

endmenu

4、在目錄01.led裡編寫Makefile檔案
obj-$(CONFIG_XXX_LED) += led_dev.o led_drv.o

5、修改01.led上級目錄char裡的Makefile檔案
增加:obj-$(CONFIG_XXX_LED) += 01.led/

6、修改01.led上級目錄char裡的Kconfig檔案

增加:source "drivers/char/01.led/Kconfig"

7、正確配置好之後,執行make menuconfig命令彈出選單,然後按照下面步驟一一進入
     Location:
       -> Device Drivers
         -> Character devices
           -> xxx
                < > xxx_ggg210_led (NEW)

8、使用“空格”鍵選擇“*”號:
                <*> xxx_ggg210_led (NEW) 表示將該模組編譯進核心中

9、執行命令:make -j 2 uImage
  (“-j 2”表示開啟2個執行緒以加快編譯速度)
                
10、將生成的uImage檔案燒錄到開發板

11、開發板核心啟動完成後,使用“ls /dev”命令檢視是否有裝置節點,以確認是否新增成功

12、刪除驅動模組。
    首先刪除drivers目錄下的01.led資料夾,然後再刪除之前在相應Makefile和Kconfig中新增的語句。

########################################################################################
裝置驅動程式存放在核心原始碼樹根目錄 drivers/ 的子目錄下,在其內部,裝置驅動檔案進一步按照類別,型別等有序地組織起來。
a. 字元裝置存在於 drivers/char/ 目錄下
b. 塊裝置存放在 drivers/block/ 目錄下
c. USB 裝置則存放在 drivers/usb/ 目錄下。