linux驱动文件目录

设备驱动模型通过sysfs文件系统向用户层提供设备驱动视图,如下。

1.设备是具体的一个个设备,在/sys/devices/是创建了实际的文件节点。而其他目录,如设备类和总线以下的子目录中出现的设备都是用符号链接指向/sys/devices/目录下的文件。

2.设备类是对/sys/devices/下的各种设备进行归类,以体现一类设备的公共属性,如鼠标和触摸屏都是属于input设备类。

3.总线目录是总线、设备、驱动模型的核心目录。因为设备和驱动都是依附在某种总线上的,如USB、PCI和平台总线等。设备和驱动正是依靠总线的管理功能才能找到对方,如设备注册到总线时去寻找驱动,而驱动注册的时候去寻找其能够支持的设备。

 

Linux设备驱动都有两个层次,一个是偏底层硬件的SOC寄存器编程,一个是偏上层应用的Linux子系统软件接口,前者负责和硬件的交互,后者负责跟上层应用交互。Linux为了给用户提供统一的编程接口,在所有的设备驱动之上再架设一层公共接口层,如所有驱动都可以通过open、read、write来进行操作,其是Linux设备驱动框架的组成部分。因此,一般地,Linux设备驱动都有三个层次。

 

 VFS,open、read等接口通过syscall系统调用层最终会调用到vfs_open、vfs_read等接口。Open所带参数为输入设备文件名,如/dev/input/event1,vfs_open通过lookup在dentry链表中找到该设备文件对应的inode,进而分析出该文件是一个字符设备文件,交由字符设备驱动框架的chardev_open进行处理,最终获得输入子系统(主设备号都是13)对应的input-core层定义的file_operations,并封装到所在进程的file结构中,最后向应用层返回file对应的句柄fd,而read则是通过该file_operations进行读转发和访问操作。

字符设备驱动框架层。chardev_open通过设备文件对应的inode读出对应的主设备号是13,并在字符设备驱动全局链表cdev_map中找到主设备号13对应的file_operations, 即输入子系统初始化时向系统注册的input_fops。如下图:

如何访问不同的输入设备,如触摸屏和按键等等,是由input_fops的open来负责。input_fops即为input-core的组成部分。

 

Linux /proc目录详解

Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值