一.pc機上ubuntu9.10系統下
1. 驅動程式原始碼及makefile如下:
#------源程式------#
#include
#include
static int __init hello_init() //「__init」使hello_init()函式放到初始化**段裡
static int __exit hello_exit()
module_init(hello_init);
module_exit(hello_exit);
#------makefile------#
kvers = $(shell uname -r)
# kernel modules
obj-m += hello.o
# specify flags for the module compilation.
#extra_cflags=-g -o0
build: kernel_modules
kernel_modules:
make -c /lib/modules/$(kvers)/build m=$(curdir) modules
clean:
make -c /lib/modules/$(kvers)/build m=$(curdir) clean
2.驅動程式編譯、安裝及結果顯示:
a.在第乙個終端裡 root@book-desktop:~# make
//生成hello.ko
b.在第二個終端裡 root@book-desktop:~# tail -f /var/log/messages
//檢視日誌檔案內容,-f選項使之不斷重新整理顯示
c.在第乙個終端裡 root@book-desktop:~# insmod ./hello.ko
//安裝驅動
在第二個終端裡自動輸出:
apr 7 19:26:06 book-desktop kernel: [ 9345.546564] hello, driver!
d.在第乙個終端裡 root@book-desktop:~# rmmod hello
//解除安裝驅動
在第二個終端裡自動輸出:
二、nano2440開發板下(注:為保持簡潔性,終端中前端都以 root@book-desktop:~# 表示)
1.把源程式拷貝到核心相應目錄中
root@book-desktop:~# cp hello.c /work/qq2440/linux/jason_linux/kernel-2.6.13/drivers/char/
2.開啟核心目錄
root@book-desktop:~# cd /work/qq2440/linux/jason_linux/kernel-2.6.13
3.開啟字元裝置驅動所在目錄下的kconfig (kconfig用於配置選單)
root@book-desktop:~# vim drivers/char/kconfig
4.修改kconfig。新增如下**。
5. 配置驅動
root@book-desktop:~# make menuconfig
在出現的主選單中,選擇:load an alternate configuration file
輸入:config_n35 //選擇需要的配置檔案
回到主選單,如下選:
device drivers --->
character devices --->
[ ] hello_driver (new)
按「y」鍵,選擇該驅動,如下圖所示
儲存配置,退出。
6.檢視配置結果
root@book-desktop:~# vim .config
在vim中輸入:「/hello_driver」,找到配置項,如下圖。
8.修改驅動程式所在目錄的makefile
root@book-desktop:~# vim drivers/char/makefile
在makefile裡新增如下**:
儲存退出。
9.編譯核心
root@book-desktop:~# make zimage
10.arch/arm/boot 目錄下生成linux 核心映象檔案:zimage。
root@book-desktop:~# cp arch/arm/boot/zimage /mnt/hgfs/ubuntu_xp_share/
11.開啟windows下超級終端,在選單欄裡選「傳送」,下拉列表裡選「捕獲文字」。
復位開發板,系統啟動後,在捕獲文字裡,「停止」。
用source insight開啟存在記事本裡的開機資訊。
ctrl + h。
輸入「hello, driver!」也就是在hello_init()函式裡的輸出字串。
如圖所示,可以看到初始化函式裡的輸出。
三、參考資料
1.《qq2440v3使用者手冊》;
Linux驅動程式開發學習步驟
出處 1.學會寫簡單的makefile 2.編一應用程式,可以用makefile跑起來 3.學會寫驅動的makefile 4.寫一簡單char驅動,makefile編譯通過,可以insmod,lsmod,rmmod.在驅動的init函式裡列印hello world,insmod後應該能夠通過dmes...
linux 驅動程式 高階字元驅動程式
ioctl方法 驅動程式的原型實現 int ioctl struct inode inode,struct file filp,unsigned int cmd,unsigned long arg ioctl 命令選擇 位段結構 number direction ioc read ioc write...
驅動程式的學習步驟
了解linux驅動程式技巧學習的要領很主要,學習linux作業系統時,你可能會遇到關於驅動方面的疑問,這裡將介紹學習linux驅動程式的要領,在這裡拿出來和大家分享一下。1.學會寫基本的makefile 2.編一使用程式,可以用makefile跑起來 3.學會寫linux驅動程式的makefile ...