動態加載利用內核模塊特性,當驅動程序須要運行的時候就被加載執行,不須要的時候就卸載它,這個過程不須要重啓操做系統。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測試程序,
可以讀取文件裏的內容
靜態加載是直接將驅動程序編寫進內核,系統啓動的時候就直接調用。
靜態加載步驟:
首先,複製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號。
這節課經過一個簡單的字符設備驅動程序,讓咱們走進了驅動代碼的大門,但這只是最初級的瞭解階段,要想加深仍是得多看多學才能作的更好。