歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> 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/ 目錄下。

注意:

(1) 此處的文件組織規則並非絕對不變,例如: USB 設備也屬於字符設備,也可以存放在 drivers/usb/ 目錄下。
(2) 在 drivers/char/ 目錄下,在該目錄下同時存在大量的 C 源代碼文件和許多其他目錄。所有對於僅僅只有一兩個源文件的設備驅動程序,可以直接存放在該目錄下,但如果驅動程序包含許多源文件和其他輔助文件,那麼可以創建一個新子目錄。

Copyright © Linux教程網 All Rights Reserved