linux字元裝置驅動程式框架

2021-06-22 00:24:21 字數 2209 閱讀 3633

#include #include #include #include #include #include #include #include #include #include #include #include #define***_device_count1

/****字元裝置結構體*/

struct ***_dev

;struct ***_dev ****_dev;

/*自動建立裝置節點類*/

static struct class ****_dev_class;

static struct class_device ****_dev_class_dev;

/**/

static int ***_dev_open(struct inode *inode, struct file *filp)

static int ***_dev_close(struct inode *inode, struct file *filp)

static int ***_dev_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)

static int ***_dev_read(struct file *file, const char __user *buf, size_t count, loff_t ppos)

static int ***_dev_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg)

/****裝置操作函式結構體

*/struct file_operations ***_fops = ;

/****裝置驅動模組的註冊和解除安裝

*/dev_t ***_devno = 0;

int ***_major = 0;

int ***_minor = 0;

static int __init initialization_***_dev(void)

else

if (ret < 0)

printk("after register *** major = %d\n", ***_major);

/* 申請裝置結構體內存 */

***_dev = kmalloc(sizeof(struct ***_dev), gfp_kernel);

if (null == ***_dev)

/* 字元裝置註冊 */

cdev_init(&***_dev->cdev, &***_fops);

***_dev->cdev.owner = this_module;

***_dev->cdev.ops = &***_fops;

ret = cdev_add(&***_dev->cdev, ***_devno, ***_device_count);

if (ret < 0)

/* 自動生成裝置節點 */

***_dev_class = class_create(this_module, "***_dev");

***_dev_class_dev = class_device_create(***_dev_class, null, ***_devno, null, "***%d", ***_minor);// "/dev/***0"

/* 模組初始化成功必須返回0 */

printk("module register ok.\n");

return 0;

}static void __exit cleanup_***_dev(void)

/*模組註冊與解除安裝

*/module_init(initialization_***_dev);

module_exit(cleanup_***_dev);

/*模組傳參:insmod char_driver_frame.ko ***_major=*** ***_minor=0

*/module_param(***_major, int, s_irugo);

module_param(***_minor, int, s_irugo);

/*模組的相關宣告

*/module_author("lhbo");

module_description("gpio driver for ***");

module_license("gpl");

linux裝置驅動程式 字元裝置驅動程式

先留個 有一起學習驅動程式的加qq295699450 字元裝置驅動 這篇比較惱火。載入成功,但是讀不出來資料,有知道怎麼回事的,留個言,一起討論下 資料結構 struct scull mem struct scull dev dev 整個驅動程式 如下 include include include...

Linux裝置驅動程式 字元裝置驅動程式

1.檢視主裝置號,次裝置號 進入 dev目錄執行ls l,第四,五列分別為主次裝置號,10,180,1,5,這些是主裝置號,而60,63這些就是次裝置號 130 shell android dev ls l crw rw r system radio 10,60 1969 12 31 21 00 a...

字元裝置驅動程式框架

1,裝置號的內部表示形式 型別 dev t 32 12 主裝置號 20 次裝置號 相關巨集 major dev t dev minor dev t dev mkdev int major,int minor 2.分配和釋放裝置號 靜態分配裝置號 int register chrdev region ...