1. 程式人生 > >在linux核心檔案中新增自己的驅動,新增自己的linux驅動,編譯自己的linux驅動程式方法和例子圖文

在linux核心檔案中新增自己的驅動,新增自己的linux驅動,編譯自己的linux驅動程式方法和例子圖文

此文章為done原創,轉載請寫明出處,尊重原創。

寫這個文章,我參考了網上的一些部落格:

http://bbs.chinaunix.net/thread-3634524-1-1.html

http://www.bkjia.com/gjrj/800182.html

也參考了參考了 《linux驅動開發詳解》3.4章節,實現建立自己驅動目錄。

文章中的驅動範例是:linux裝置驅動開發詳解第二版 的 global mem tow,宋寶華主編的書本光碟原始碼

在我們學習了linux的驅動之後,我們都想編寫一個linux驅動驗證一下自己是否寫的對,那麼我們如何在Linux核心中編譯自己的驅動呢?如何加自己的linux驅動?下面我們來試試:
目標核心  linux-kernel 2.6.28
1.進入你的核心原始碼文件,建立一個DoneLin_Driver資料夾來存放你的驅動,於是資料夾路徑:drivers/DoneLin_Driver/:
2.複製你的範例驅動到剛剛建立的DoneLin_Driver資料夾中,我的範例名字叫global_mem_two.c:
3.在DoneLin_Driver資料夾中建立兩個新文字檔案:Kconfig 和 Makefile
4.修改DoneLin_Driver資料夾下的Kconfig檔案,輸入以下內容:
menu "DoneLin-driver "
comment "global_mem_two-driver "


config GLOBAL_MEM_TWO
tristate "global_mem_two DriTst"
help
this is global mem 2 test programming
endmenu
5.接著修改DoneLin_Driver的另一個檔案Makefile,輸入以下內容:

obj-$(CONFIG_GLOBAL_MEM_TWO)+= global_mem_two.o
6.修改上一層目錄(Driver目錄)中的Kconfig檔案,宣告自己的原始碼:
在"menu "Device drivers""下面加入如下內容:
source "drivers/DoneLin_Driver/Kconfig"##...add my tst driver module
7.修改arch/arm/Kconfig

同樣,跟在driver/Kconfig一樣,在"menu device drivers"下面加入同樣的語句:
source "drivers/DoneLin_Driver/Kconfig"
就是說:在arch/arm/Kconfig menu "Device Drivers" endmenu之間新增source "drivers/DoneLin_Driver/Kconfig"
在drivers/Kconfig menu "Device Drivers" endmenu之間新增source "drivers/hello/Kconfig"
(不知為什麼arch/arm/Kconfig中竟然含有Drivers裡Kconfig內容的一個複本,實驗證明只對drivers/Kconfig中修改內容無效。)
8.修改Drivers目錄下的Makefile,在如圖位置,加入:

obj-$(CONFIG_GLOBAL_MEM_TWO)+= DoneLin_Driver/#ADD FOR TEST add_for_test add for test測試的驅動
8.都修改好,儲存好之後,回到linux核心根目錄,make menuconfig,奇蹟出現了,我自己的linux驅動程式出現在核心的device drivers選項裡面了:

選擇global_mem_tow_DriTst為m,表示編譯成模組,編譯成ko檔案
然後,儲存退出,make,  make zImage,  make modules即可生成新的核心和新的modules,
完成了,停筆,自己寫的核心驅動通過了,是不是很爽?
global_mem_two.c是宋寶華的書 linux裝置驅動開發詳解 中的光碟原始碼,我的另外一個部落格裡面有,地址是:
http://blog.csdn.net/mynameislinduan/article/details/42495619
編譯通過,直接複製可用