-
?Vxworks设备驱动开发详解》的第四章探讨了设备驱动相关主题
资源介绍
作者:华清远见嵌入式学院。简单地说,驱动程序就是设置某个硬件完成其固有功能的程序,如网卡设备驱动程序就是设置网卡相关寄存器,使其能够正常收发网络数据包的程序。驱动程序直接与硬件设备交互,其大多数的工作就是操作硬件相关寄存器。首先,寄存器也是一种 RAM,在系统下电后,寄存器中的内容都会丢失,系统上电复位过程中,硬件寄存器一般都复位到一个默认值,默认状态下,硬件是不能正常工作的,如中断使能被屏蔽,工作使能位也被屏蔽,还有一些决定硬件工作情况的关键控制寄存器也需要被重新配置。而这些工作都有赖于设备驱动的完成。驱动一般都作为操作系统内核组成的一部分,即便现在很多系统支持驱动的动态加载,但是驱动代码在执行时,依然是以内核代码模式进行执行的。换句话说,驱动代码具有系统特权级,除了其自身资源对应的硬件设备资源,其还对操作系统资源具有完全的访问权。所以,一个驱动程序如果存在BUG,将直接会导致整个操作系统的崩溃。故调试驱动是一项十分关键的工作,必须对驱动进行仔细检查,并需要经受长时间的运行考验。应用层程序员往往对属于内核编程的外设驱动心存敬畏,认为驱动编程是一项非常复杂的工作。实际上,底层驱动编程往往比应用层编程具有更大的灵活性,就如没有调试不出来的硬件,也没有调试不出来的底层驱动,但是应用层 BUG 有时就是无法调试出来。底层驱动的调试过程是同时对硬件和驱动进行验证的过程。底层驱动很多时候用来定位硬件设计错误或者硬件芯片本身可能的问题,故底层驱动程序员必须对所要驱动的硬件设备有一个比较充分的了解,以及对与硬件交互的其他硬件或外界环境也需要有一个比较清楚的理解。
- 上一篇: vxworks5.5 for x86
- 下一篇: Tornado和VxWorks学习笔记