第12課 設備驅動

12.1 動態加載

動態加載利用內核模塊特性,當驅動程序須要運行的時候就被加載執行,不須要的時候就卸載它,這個過程不須要重啓操做系統。linux

加載的時候用insmod函數

卸載的時候用rmmod測試

首先,準備一個測試程序,該程序位於Lesson 12目錄下的testgpio.c,按照第二課的方式,把他放在一個scu文件夾裏,並修改Makefile文件。spa

動態加載步驟:操作系統

首先建立目錄/work/uClinux-dist/linux-2.4.x/drivers/char/mvgpio,而後將驅動程序Lesson 12\dynamic\char\gpio.c拷貝到建立的目錄下。而且在該目錄下建立一個Makefile文件,代碼以下圖所示:3d

 

修改文件/work/uClinux-dist/linux-2.4.x/drivers/char/Config.in,在「tristate 'Standard/generic (8250/16550 and compatible UARTs) serial support' CONFIG_SERIAL」以前增長「tristate 'MVGPIO serial device support' CONFIG_MYDRIVER_MVGPIO」,以下圖所示:blog

 

第三,修改/work/uClinux-dist/linux-2.4.x/drivers/char/Makefile文件,在「mod-subdirs:= joystick ftape drm drm-4.0 pcmcia」以後添加「mvgpio」,以下圖:ci

 

同時在「obj-$(CONFIG_TS_AU1000_ADS7846) += au1000_ts.o」以後添加「subdir-$(CONFIG_MYDRIVER_MVGPIO) += mvgpio」,以下圖:開發

 

第四,在/work/uClinux-dist目錄下,執行sudo make config,進入內核配置,選擇Character devices選項,將「MVGPIO serial device support」選擇爲「m」,以下圖,若是沒有選擇,是不會產生mvgpio.o文件的。it

 

保存退出,而後執行命令:sudo make modules,

到目錄/work/uClinux-dist/linux-2.4.x/drivers/char/mvgpio下,將mvgpio.o文件複製到目錄/work/uClinux-dist/romfs/lib/modules裏。

 

最後在/work/uClinux-dist/目錄下執行命令:sudo make image。

 

還有一步就是須要修改vendors/Marvell/Firefox/Makefile文件

 

這樣在測試的時候纔會在dev目錄下產生mvgpio。

而後在/work/uClinux-dist/目錄下執行sudo make,執行完之後,下載進開發板。

進入目錄/lib/modules/下,使用insmod命令將驅動程序安裝。

 

此時使用cat命令能夠在/proc/modules目錄下看到

 

使用cat能夠查看設備號

 

運行testgpio測試程序,

 

可以讀取文件裏的內容

12.2 靜態加載

靜態加載是直接將驅動程序編寫進內核,系統啓動的時候就直接調用。

靜態加載步驟:

首先,複製Lesson 12\static\char\mvgpio.c 到/work/uClinux-dist/linux-

2.4.x/drivers/char目錄下,

修改/work/uClinux-dist/linux-2.4.x/drivers/char/Config.in文件,在「bool ‘LED Manager support’ CONFIG_LEDMAN」以前添加「bool ‘MV_GPIO support’ CONFIG_MVGPIO」,以下圖:

 

修改/work/uClinux-dist/linux-2.4.x/drivers/char/Makefile,在「obj-$(CONFIG_SERIAL) += $(SERIAL)」以後添加「obj-$(CONFIG_MVGPIO) += mvgpio.o」,以下圖:

 

修改/work/uClinux-dist/linux-2.4.x/drivers/char/mem.c文件,在開頭添加(以下圖):

 

在chr_dev_init()函數裏面,「return 0」前面添加:

 

修改vendors/Marvell/Firefox/Makefile文件

 

 

在目錄/work/uClinux-dist下,執行:sudo make xconfig,配置內核,以下圖,選擇「Character devices->MV_GPIO support」

 

 

配置完成後,分別執行下面兩條命令:

 

下載到開發板,能夠看到打印出來的信息,下圖紅框的內容,說明程序在系統啓動的時候開始加載。

 

使用cat命令查看,能夠看到是在字符設備第254號。

 

12.3 總結

這節課經過一個簡單的字符設備驅動程序,讓咱們走進了驅動代碼的大門,但這只是最初級的瞭解階段,要想加深仍是得多看多學才能作的更好。

相關文章
相關標籤/搜索