1、先要了解裝置函資料結構
2、然後將驅動註冊到核心中
#define chrdevbase_major 200 /* 主裝置號 */
#define chrdevbase_name "chrdevbase" /* 裝置名 */
static char readbuf[100]; /* 讀緩衝區 */
static char writebuf[100]; /* 寫緩衝區 */
static char kerneldata = ;
/** 裝置操作函式結構體
*/static struct file_operations chrdevbase_fops= ;
/** @description : 開啟裝置
* @param - inode : 傳遞給驅動的inode
* @param - filp : 裝置檔案,file結構體有個叫做private_data的成員變數
* 一般在open的時候將private_data指向裝置結構體。
* @return : 0 成功;其他 失敗
*/static int chrdevbase_open(struct inode *inode, struct file *filp)
/** @description : 從裝置讀取資料
* @param - filp : 要開啟的裝置檔案(檔案描述符)
* @param - buf : 返回給使用者空間的資料緩衝區
* @param - cnt : 要讀取的資料長度
* @param - offt : 相對於檔案首位址的偏移
* @return : 讀取的位元組數,如果為負值,表示讀取失敗
*/static ssize_t chrdevbase_read(struct file *filp, char __user *buf, size_t cnt, loff_t *offt)
else
//printk("chrdevbase read!\r\n");
return 0;}/*
* @description : 向裝置寫資料
* @param - filp : 裝置檔案,表示開啟的檔案描述符
* @param - buf : 要寫給裝置寫入的資料
* @param - cnt : 要寫入的資料長度
* @param - offt : 相對於檔案首位址的偏移
* @return : 寫入的位元組數,如果為負值,表示寫入失敗
*/static ssize_t chrdevbase_write(struct file *filp, const char __user *buf, size_t cnt, loff_t *offt)
else
//printk("chrdevbase write!\r\n");
return 0;}/*
* @description : 關閉/釋放裝置
* @param - filp : 要關閉的裝置檔案(檔案描述符)
* @return : 0 成功;其他 失敗
*/static int chrdevbase_release(struct inode *inode, struct file *filp)
/** @description : 驅動入口函式
* @param : 無
* @return : 0 成功;其他 失敗
*/static int __initchrdevbase_init(void)
printk("chrdevbase init!\r\n");
return 0;}/*
* @description : 驅動出口函式
* @param : 無
* @return : 無
*/static void __exitchrdevbase_exit(void)
/* * 將上面兩個函式指定為驅動的入口和出口函式
*/module_init(chrdevbase_init);
module_exit(chrdevbase_exit);
/* * license和作者資訊
*/module_license("gpl");
module_author("lhf");
ARM Linux驅動開發環境
目的 梳理arm linux驅動開發所需的環境和流程,記錄遇到的問題。環境介紹 pc機 編寫驅動程式和測試 伺服器 編譯驅動程式生成.ko檔案,編譯測試 生成執行程式 單板 jz2440 準備工作 linux核心 linux 2.6.22.6以及對應的補丁檔案 工具鏈 gcc version 3.4...
arm linux驅動開發學習2
驅動測試階段 wifi模組始終無法載入成功,usb wifi插上之後,始終無法顯示wifi網路資訊 lib modules 4.1.15 ifconfig a eth0 link encap ethernet hwaddr00 04 9f 04 d2 35 inet addr 192.168 1.5...
arm linux驅動開發學習5
串列埠通訊 只要是使用串列埠通訊,不論是ttl還是232 485,其驅動程式都是一樣的,通過外接rs485晶元即可將串列埠轉換為rs485訊號。本節用的是串列埠3,串列埠驅動框架為 1 uart driver 註冊與登出 每個串列埠驅動都需要定義乙個 uart driver,載入驅動的時候通過 ua...