linux 字符设备与总线设备模型

字符设备驱动框架,与设备模型没有任何直接关系,互相独立。

但是,通常有间接关系:字符设备驱动可能会主动搭配平台设备模型使用。

1. 字符设备驱动

字符设备驱动,有一套自己独有的数据结构,比如设备号、 struct cdev,不复杂都是基于  kobject 的微弱派生出来的体系。另外它与其他子系统互联互动,比如 VFS 进程 ,实现一套独立、精简、朴素的、灵活的、实用的驱动框架。

字符设备驱动的使用过程:

1.1 注册过程:

1. 准备 file_operations 结构体内必要的驱动函数;

2. 向字符设备框架申请设备号资源;

3. 初始化 cdev 结构体 cdev_init(dev, &fops);

4. 注册进 cdev core : cdev_add(dev, dev_num, MINOR_COUNT);

以上是必不可少的环节,下面是可选的,通常会有的:

5. 创建设备类:dev_class = class_create(THIS_MODULE, CLASS_NAME);

6. 创建设备节点:dev_device = device_create(dev_class, NULL, dev_num, NULL, DEVICE_NAME);

1.2 动态描述:

1. cdev core 和 VFS、进程协同工作;

2. 应用层调 open/read/write/lseek ,会陷入到系统调用对应的 sys_xxxs,最终会调用到内核里字符设备驱动注册过的 file_operations 的 open/read/write/llseek 驱动函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值