用户空间的驱动程序

来源:互联网 发布:女装淘宝店铺起名大全 编辑:程序博客网 时间:2024/05/17 04:55

大部分设备驱动程序倾向于工作在拥有特权的内核模式。但是有些无所谓的,如SCSI,USB,I2C等内核子系统在一定程序上支持用户模式驱动程序,可以不写就可以控制这些设备。

从用户空间驱动

1.访问IO区域

linux上用户访问IO端口受到两个函数控制

ioperm()

iopl()


2. 访问内存区域

对于一个文件进行内存映射(mmaping )将使它与用户空间的一段虚拟内存区域相关联。因为linux把设备当作文件。可以将设备内存映射到RAM,然后从用户空间直接操作它。

mmap()

1.图形用户接口,将视频内存做内存映射,并直接访问图形硬件。

2.madplay是MP3播放器,可运行在几个系统上。

3.MPEG解码器通过直接操作映射缓冲播放视频。

4.用户模式SCSI

有了SG接口可以从用户空间直接发送SCSI命令。sg驱动程序输出一个字符接口。可以用open(),close(),read(),write(),ioctl(),poll(),fcntl(),mmap()系统调用与底层设备通信。

5.用户USB模式

usbfs 虚拟文件系统从用户空间以原始的方式访问USB设备。usbfs挂载/proc/bus/usb/上。

6.用户I2C模式

如果需要支持大量低速I2C设备,从用户空间驱动有意义。i

i2c-dev模块有助于开发用户模式I2C/smbus设备驱动程序。用户空间代码能通过设备节点访问I2C主机适配器。

数据结构

sched_param /usr/include/bits/sched.h

usb_dev_handle libusb包中的头文件 从用户空间操作USB设备的结构体

用户空间函数

iopl()  控制所有IO端口的访问权限

usb open()

msync 写回对比映射的内存区域的改动

mmap() 将一个文件或一个设备地址区域或一块用户空间虚拟内存绑定。

0 0