标签:section ase https 文件操作 信息 fun margin space before
Linux下的设备分类为:字符设备/块设备/网络设备
今天简单介绍下字符设备驱动开发的一般方法,分为两部分:
1,字符设备添加
2,字符设备操作
Linux下设备的表现形式是一个文件,比如串口的文件是“/dev/ttyS0”。按如下步骤创建设备文件:
1,创建sysfs classstruct class *cl = class_create(THIS_MODULE, "lm");
2,创建sysfs devicedevice_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操作,如何提供能供普通用户操作的设备节点呢?(请自我解答)
标签:section ase https 文件操作 信息 fun margin space before
原文地址:https://www.cnblogs.com/llc-blog/p/9537789.html