字元裝置驅動

2021-07-04 19:06:25 字數 1307 閱讀 5597

//標頭檔案包含

#include

//變數定義

#define gpgconaddr 0x56000060

//硬體中斷號定義

#define key1_irq irq_eint5

#define key2_irq irq_eint3

//裝置名定義

#define devname "mykey"

//主裝置號、cdev定義 -需全域性使用

int major = 0;

struct cdev *key_dev;

volatile unsigned int *gpfcon;

//file_operations 方法編寫

static int ***_ioctl( struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) ;

//file_operations 結構體定義

static const struct file_operations ***_ops =  ;

//中斷頂半部處理函式

static irqreturn_t key_handler(int irq,void *dev_id)

return irq_retval(irq_handled);

}//初始化中斷

static int init_key_irq(void)

ret = request_irq(key2_irq,key_handler,irqf_disabled,"key2",null);

if(ret)

return 0;

}//釋放中斷

static void free_key_irq(void)

//裝置驅動模組載入函式

static int key_init(void)

else

if(ret)

//新增字元裝置

key_dev = cdev_alloc();

key_dev->owner = this_module;

key_dev->ops = &***_ops;

ret = cdev_add(key_dev,devno,1);

if(ret)

return 0;

}//裝置驅動模組解除安裝函式

static void key_exit(void)

module_init(key_init);

module_exit(key_exit);

module_license("dual bsd/gpl");

裝置驅動例項 字元裝置驅動

在整個linux裝置驅動學習中,字元裝置驅動較為基礎。通過對它的學習,對裝置驅動進一步加深了解 cdev 結構體struct cdev 講下比較重要的成員變數 dev t dev 定義了32位的裝置號,其中12位是主裝置號,20位是從裝置號。獲取主裝置號 major dev t dev 獲取從裝置號...

字元裝置驅動

字元裝置驅動 概述 塊裝置 字元裝置以及網路裝置中塊裝置和網路裝置一般都會硬體配置完備,對於程式設計師而言,能夠更多操作的就是字元裝置。設定字元裝置的一般步驟 1.初始化硬體 2.定義fops file operations 3.申請cdev,掛載fops 3.加入cdev 函式cdev add 主...

字元裝置驅動

問題 兩個註冊裝置驅動的函式有什麼區別?乙個是 register chrdev 另外乙個是 cdev add 例一 載入模組 static int init init void register chrdev 111,my led my dev fops 註冊裝置 解除安裝模組 static int...