Linux驅動程式安裝步驟

2021-06-16 05:47:36 字數 2765 閱讀 7250

一.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 ...