码迷,mamicode.com
首页 > 系统相关 > 详细

Linux字符设备驱动开发的一般方法

时间:2018-08-26 18:38:13      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:section   ase   https   文件操作   信息   fun   margin   space   before   

Linux下的设备分类为:字符设备/块设备/网络设备

今天简单介绍下字符设备驱动开发的一般方法,分为两部分:
1,字符设备添加
2,字符设备操作

字符设备添加

Linux下设备的表现形式是一个文件,比如串口的文件是“/dev/ttyS0”。按如下步骤创建设备文件:
1,创建sysfs class
struct class *cl = class_create(THIS_MODULE, "lm");
2,创建sysfs device
device_create(cl, NULL, first, NULL, "char_lm", ...);
3,用户态udev进程根据sysfs device信息自动生成/dev/目录设备文件

字符设备操作:

设备文件支持像普通文件一样open/read/write,同时也支持设备文件独有的ioctl。实现这些操作需要设备驱动实现对应的文件操作接口并与字符设备绑定。

file_operation结构体:

static struct file_operations lm_fops =
{

  .owner = THIS_MODULE,
  .open = my_open,
  .release = my_close,
  .read = my_read,
  .write = my_write,
  .unlocked_ioctl = my_ioctl,
};

将file_operation与cdev结构绑定:

void cdev_init(struct cdev *cdev, const struct file_operations *fops);

将cdev与创建的字符设备文件绑定:

int cdev_add(struct cdev *p, dev_t dev, unsigned count);

完整代码:
https://pan.baidu.com/s/1TWMMJjYQz81GSj19qqBsIA

问题:
驱动模块加载后设备节点只允许root操作,如何提供能供普通用户操作的设备节点呢?(请自我解答)

 

Linux字符设备驱动开发的一般方法

标签:section   ase   https   文件操作   信息   fun   margin   space   before   

原文地址:https://www.cnblogs.com/llc-blog/p/9537789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!