本文主要从设备驱动的概述,设备驱动的作用,设备驱动的分类三个维度对Linux设备驱动基本概念做下简要的阐述。对于刚入门或刚接触linux设备驱动的开发人员,对Linux设备驱动中的一些基本概念不太了解,因此,本着和大家一起学习的态度,对Linux 设备驱动的基本概念做以下简单介绍,方便大家对Linux设备驱动基本概念有更进一步的了解,希望对大家的工作和学习能有所帮助。
1、设备驱动概述
设备驱动程序(Device Driver),简称驱动(Driver),它是一个计算机软件和硬件交互的程序。这种程序建立了硬件与硬件或者软件与硬件沟通的界面。依据不同的计算机架构和操作系统不同的平台,驱动程序可以是8位,16位,32位,64位。不同平台的操作系统需要不同的驱动程序。
2、设备驱动的作用
驱动程序相当于硬件和操作系统的之间的桥梁,它是一种可以是计算机与设备进行通信的特殊长须,相当于向操作系统提供了硬件的接口,并且协调硬件和操作系统二者之间的关系。
3、设备驱动分类
驱动程序的对象一般是存储器和外部设备,Linux将这些设备分为字符设备,块设备和网络设备。
字符设备:字符设备是指那些能一个字节一个字节读取数据的设备,例如LED,键盘和鼠标等。字符设备一般需要在驱动层实现open()、close()、read()、write()、ioctl等函数。内核为字符设备对应一个文件,如字符设备文件/dev/console。对字符设备的操作可以通过字符设备文件/dev/comsole来进行。字符设备一般不支持寻址(不能对硬件中一块寄存器进行随机访问,只能顺序读取),特殊情况下,某些字符设备支持寻址。
块设备:块设备与字符设备类似,一般是像磁盘一样的设备。在块设备中可以容纳文件系统,并存储大量信息,如U盘,SD卡。在Linux内核中,与字符驱动程序相比,其数据结构更为复杂,块设备驱动程序具有完全不同的API接口。
网络设备:网络设备主要负责主机之间的数据交换,面向数据包的接收额发送而设计,网络设备有特殊的一种套接字接口,任何网络数据传输都可以通过套接字来完成。
以上就是对Linux设备驱动基本的概念的一个简单总结,希望对大家有所帮助,如有不足之处,还望大家多多指出。