乙個完整的test字元裝置驅動程式,以下給出模組載入解除安裝方法以及簡單的測試程式。
首先編寫乙個test.h,定義各個介面函式以及包含的標頭檔案:
#define __no_version__
#include
#include
#include
#include
#include
#include
#include
#include
#include
static ssize_t read_test(struct file *file,char *buf,size_t count,loff_t *ppos);
static ssize_t write_test(struct file *file,const char *buf,size_t count,loff_t *ppos);
static int open_test(struct inode *inode,struct file *file);
static int release_test(struct inode *inode,struct file *file);
struct file_operations test_fops=;
char kernel_version=uts_release;
源**test.c如下:
#include "test.h"
unsigned int test_major = 0;
module_license("gpl");
static ssize_t read_test(struct file *file,char *buf,size_t count,loff_t *ppos)
return count;
}static ssize_t write_test(struct file *file,const char *buf,size_t count,loff_t *ppos)
static int open_test(struct inode *inode,struct file *file)
static int release_test(struct inode *inode,struct file *file)
int init_module(void)
if(test_major==0)
test_major=result;
return 0;
}void cleanup_module(void)
源**編譯載入方法如下:首先還是要確保linux核心源**放在/usr/src裡面,編譯源**:gcc -o2 -dmodule -d__kernel__ -i/usr/src/linux/include -c test.c
編譯結果為test.o,載入模組:in**od test.o,載入成功可以在/proc/drivers下面看到test模組,其中主裝置號動態分配為253,接下來建立節點:mknod /dev/test c 253 0,在/dev下建立test節點,c表示test模組為字元裝置,253為主裝置號,在/proc/driver裡面可以找到,0為從裝置號。建立節點成功後可以查詢一下test模組,在/dev 下面 find -name test。
編寫乙個簡單的測試程式:
#include
#include
#include
#include
main()
read(testdev,buf,10);
for(i=0;i<9;i++)
printf("%d/n",buf[9]);
close(testdev);
}解除安裝test模組:rmmod test,打完收工 :-)
Linux的裝置驅動程式應是乙個核心模組
為了增跟核心的靈活性和為了方便,設各驅動程式應被設計為乙個可動態安裝的核心模組。於是,乙個典型的linux設各驅動程式應包含如下幾部分 驅動程式模組的註冊與登出函式 設各的開啟 關閉 讀 寫及需要的其他操作函式 裝置的中斷服務程式。下面用偽 給出乙個從鍵盤上輸入乙個字元的例子,以使讀者對裝置驅動程式...
乙個簡單的字元裝置驅動程式的測試
uboot用於啟動核心 核心用於啟動應用程式 tar xjf linux 2.6.22.6.tar cd linux 2.6.22.6 patch p1 cp config.ok config make menuconfig make uimage 生成映象燒寫到開發板然後開始編寫驅動程式 incl...
第乙個驅動程式
原始出處 驅動程式的開發,向來是令人感到有所畏懼的,可能很多人像我一樣,看了很久卻還是一頭霧水,不得其門而入。我們今天就通過乙個簡單的程式來使讀者學會初步的驅動程式開發。在開發windows驅動程式之前,我們需要首先安裝ddk,win98及其以前的vxd我們就不要再考慮了 windows 2000 ...