嵌入式Linux驅動開發案例流程 LED驅動

2021-07-03 19:29:12 字數 1009 閱讀 4747

本文主要是以乙個最簡單的led驅動開發流程,來窺探一下linux驅動開發為何物。

基本流程:

1.編寫驅動檔案***x.c

這個檔案的主要作用是對裝置硬體初始化,主要是***_init(),其中也包括裝置的註冊。

對file_operations結構體進行初始化,這個初始化是核心,其實是對open.write.read等函式找對映函式。

各種對映函式的編寫,例如***_open(),***x_write(),***_read()等。

2.驅動檔案編寫完成後,將該檔案放入到"核心"中,路徑為linux-2.6.***/driver/char(根據裝置型別不同,選擇字元型或塊型)。本例中顯然是字元型裝置。

3.在/drivers/char/makefile中增加一行:

obj-m  += ***x.o    (***x就是流程1中的驅動檔名)

4.在核心目錄下執行「make modules」命令,就可以在/drivers/char 下生成***.ko

6.執行「modprobe ***」,就可以將該驅動模組裝載到開發板的linux核心中。如果想要解除安裝該驅動模組,可以執行命令「rmmod ***」即可。

7.使用命令mknod在開發板中建立裝置檔案,這一點尤為重要,這個相當於為驅動檔案建立了乙個「控制代碼」或者「路徑」,這樣應用程式想要使用該驅動時,需要用open開啟對應的裝置,open中的路徑就是該「控制代碼」。

命令:mknod   name      major  minor ,其中name為裝置名稱,b或c為裝置型別,major為主裝置號,minor為次裝置號。例如:mknod  /dev/leds   c   231   0

8.至此,驅動已經開發完成,如果想要使用驅動,則需要開發應用程式,比如test.c,在test中主要是要開啟對應的裝置,然後使用對應的裝置。

命令:open(constchar*pathname,intflags); 從名稱就可以看出pathname為裝置路徑,intflags為開啟型別。接著流程7,進行舉例為:open("/dev/leds",0);

嵌入式Linux驅動開發 簡要備忘

一 搭建編譯環境 1.從天嵌盤拷出 linux 2.6.30.4 20100531.tar.bz2 到 opt下,並解壓到當前目錄 2.shell到目錄 embedsky linux 2.6.30.4 3.cp config embedsky w43 config 4.make menuconfig...

嵌入式Linux裝置驅動開發 1

使用者程序是通過裝置檔案來與實際的硬體打交道。每個裝置檔案都有其檔案屬性 c b 如表示是字元裝置還是塊裝置。另外每個檔案都有兩個裝置號,第乙個是主裝置號,用於標識驅動程式 第二個是從裝置號,用於標識使用同一裝置驅動的不同的硬體裝置。裝置檔案的主裝置號必須與裝置驅動程式在登記時申請的主裝置號一致,否...

嵌入式Linux驅動開發之helloword心得

自從選擇了物聯網這個專業,智慧型xx的字樣牽動著每乙個學習這個專業的孩子。大家興致勃勃的來到了學校,結果一切想象和自己的設想並不一樣。想象中的各種智慧型般夢幻的場景變成了真實的高數 電路 模電等等諸如此類!不知道這個世界什麼時候變得如此的浮躁,當大家的一段時間的努力看不到結果的時候就往往會不太感興趣...