简单地说,驱动程序就是设置某个硬件完成其固有功能的程序,如网卡设备驱动程序就是设置网卡相关
寄存器,使其能够正常收发网络数据包的程序。驱动程序直接与硬件设备交互,其大多数的工作就是操作
硬件相关寄存器。
首先,寄存器也是一种 RAM,在系统下电后,寄存器中的内容都会丢失,系统上电复位过程中,硬件
寄存器一般都复位到一个默认值,默认状态下,硬件是不能正常工作的,如中断使能被屏蔽,工作使能位
也被屏蔽,还有一些决定硬件工作情况的关键控制寄存器也需要被重新配置。而这些工作都有赖于设备驱
动的完成。驱动一般都作为操作系统内核组成的一部分,即便现在很多系统支持驱动的动态加载,但是驱
动代码在执行时,依然是以内核代码模式进行执行的。换句话说,驱动代码具有系统特权级,除了其自身
资源对应的硬件设备资源,其还对操作系统资源具有完全的访问权。所以,一个驱动程序如果存在 BUG,
将直接会导致整个操作系统的崩溃。故调试驱动是一项十分关键的工作,必须对驱动进行仔细检查,并需
要经受长时间的运行考验。应用层程序员往往对属于内核编程的外设驱动心存敬畏,认为驱动编程是一项
非常复杂的工作。实际上,底层驱动编程往往比应用层编程具有更大的灵活性,就如没有调试不出来的硬
件,也没有调试不出来的底层驱动,但是应用层 BUG 有时就是无法调试出来。底层驱动的调试过程是同
时对硬件和驱动进行验证的过程。底层驱动很多时候用来定位硬件设计错误或者硬件芯片本身可能的问
题,故底层驱动程序员必须对所要驱动的硬件设备有一个比较充分的了解,以及对与硬件交互的其他硬件
或外界环境也需要有一个比较清楚的理
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !