设备驱动程序简介:
设备驱动程序在linux内核中扮演着特殊角色,它们是一个个独立的“黑盒子”, “黑盒子”完全隐藏了设备的工作细节,对外提供api 来控制硬件设备运行,用户不需要知道设备具体是怎么运行的,只需知道api怎么来控制设备即可
ex:
驱动一个led 灯亮:
void setled1on()
{
//control gpio 来点亮led 1 亮
}
对用户层来讲我们只需知道 setled1on() 可以让led1 亮即可
对于驱动层来讲我们需要知道设备led 的工作方式,才能实现如何控制led 设备】
简单理解:
驱动是与底层硬件打交道,按照硬件设备的工作方式,控制硬件设备运行,提供相应的api 供上层调用
设备驱动程序的作用:
设备驱动程序的作用在于提供机制,而不是提供策略
怎样去理解机制和策略:
机制:需要提供什么功能
策略:如何使用这些功能
ex:
我们按照特定的方式(全亮,全暗,or 流水灯方式)去控制4个led 灯
控制led 灯的亮or暗,是直接操作硬件设备,给用户提供控制led 亮暗 api
按照特定的方式(全亮,全暗,or 流水灯方式等) 属于策略。而不用知道任何与硬件相关的信息
通常不同的环境需要不同的方式来使用硬件,我们应当尽可能做到让驱动不带策略
另外如果换一个角度来看驱动程序,它也可以看作是应用程序与实际设备之间的一个软件层