首先通過第乙個程式簡單了解下驅動的框架
首先:開發環境:fedora 17
核心版本:3.9.10
檢視核心版本命令:uname -r
更新核心命令:yum update 需重啟之後檢視核心才行
另外需要安裝編譯好的核心的標頭檔案和庫:yum install kernel-devel
arm開發板型號:tq2440
開發板核心版本:2.6.39 核心版本不同,程式設計**會有區別
1.firstdrv.c驅動檔案
#include #include #include #include #include #include #include #include static int first_drv_open(struct inode *inode, struct file *file)
static ssize_t first_drv_write(struct file *file, const char __user *buf, size_t count, loff_t * ppos)
static struct file_operations first_drv_fops = ;
static int first_drv_init(void)
static void first_drv_exit(void)
module_init(first_drv_init);
module_exit(first_drv_exit);
module_license("gpl");
2.makefile檔案:
1.在電腦上執行:
ifneq ($(kernelrelease),)
obj-m := first_drv.o
else
pwd:=$(shell pwd) #檢視當前目錄的命令
kver?=$(shell uname -r) #檢視核心版本的命令
kerneldir:= /usr/src/kernels/$(kver) #若沒有linux核心資料夾,需安裝與核心同一版本的標頭檔案和庫檔案kernel-devel
#可以採用上面所述的命令,更新系統核心,同時安裝kernel-devel
#此時兩者均為最新的版本,即同一版本
all:
make -c $(kerneldir) m=$(pwd) modules
endif
clean:
rm -f *.ko *.mod.c *.mod.o *.o
2.在開發板上執行:
kern_dir = /home/stevenking/workspace/code/linux-2.6.39
all:
make -c $(kern_dir) m=`pwd` modules
clean:
make -c $(kern_dir) m=`pwd` modules clean
rm -rf modules.order
obj-m += first_drv.o
3.測試程式
#include #include #include #include int main(int argc, char **argv)
4.測試
首先編譯測試程式:
gcc -o test firstdrvtest firstdrvtest.c 電腦
orarm-linux-gcc -o firstdrvtest firstdrvtest.c 開發板
幾個測試和檢視的命令:
1.模組的新增、檢視和刪除:
insmod lsmod rmmod
2.新增節點:
mknod /dev/*** c 111 0//命令 位置 字元型裝置主裝置號次裝置號
3.檢視裝置
cat /proc/devices (有s麼 忘了)
4.printk在電腦上的控制台不顯示(開發板是串列埠,會顯示)
dmesg | tail -8
檢視最後8行
測試控制台的**就不貼了
ko檔案,開發板的話,放在lib資料夾下,測試程式放在sbin下
insmod firstdrv.ko
cat /proc/devices
firstdrvtest
dmesg | tail -8
linux驅動入門之AD轉換驅動
需要用ad轉換,網上找來找去也沒找到合適的,自己寫了個,查詢方式的,後續更新中斷方式的。1.tq2440 adc sk.c include include include include include include 包含class create,device create,這些程式 includ...
linux驅動入門之觸控螢幕驅動
廢話不多說,直接上檔案 1.tq2440 ts sk.c include include include include include include include include include include include include include include include i...
Linux驅動入門
核心版本 2.4.22 閱讀此文的目的 學會編寫linux裝置驅動。閱讀此文的方法 閱讀以下2個檔案 hello.c,asdf.c。此文假設讀者 已經能用c語言編寫linux應用程式,理解 字元裝置檔案,塊裝置檔案,主裝置號,次裝置號 會寫簡單的shell指令碼和makefile。1.hello.c...