分类: 嵌入式
2013-06-15 00:38:12
驱动程序的开发和普通应用软件的开发在过程上都是一样的,大都会经历需求分析、概要设计、详细设计、编码、以及软件测试几个阶段。但是往往有多数人都会觉得驱动程序的开发是一件很困难的事情,为什么?
一般来说,对于普通应用软件的开发,客户都会提出很明确的需求如功能、用户界面、外部接口以及开发周期经费等等要求,这些要求一般都相对直观且容易理解。但是对于驱动程序的开发开说,开发周期以及经费这些需求往往都比较容易理解,可是对于功能、用户界面以及外部接口等需求就很难描述了,因为这需要对底层操作系统的理解,否则就无法提出适宜的需求来,而对底层操作系统的理解才是驱动程序开发之所以困难的主要原因。
因此本书的主要目的,就是对vxWorks各种不同类型的设备驱动进行分析,通过实例来说明vxWokrs操作系统中驱动程序实现的设计原理、程序结构等等内容,在理解了这些内容之后,只需要对实例中的硬件相关部分进行相应的修改,就可以写出自己需要的驱动程序了。
一般来说,驱动程序有两大基本特征:一是它实现了对硬件设备的访问这是驱动程序最根本的目的,二是它实现了一系列与硬件设备无关的的访问接口,通过这些接口上层软件在控制此类硬件设备时无需对硬件进行详细的了解就可以进行访问,此外,当硬件设备更换时,只需要修改设备驱动的硬件相关的部分,而上层软件无需做任何更改。这两个基本特征也正好决定了驱动程序的主体结构。如图1.1所示,图中的阴影部分为设备驱动程序。
图1.1 驱动程序的结构
不同设备在操作系统中完成的工作是不同的,但是就是工作流程来说,大致可以分为两个阶段。
第一个阶段是初始化阶段,在初始化阶段,驱动程序主要完成硬件以及设备驱动相关数据结构的初始化。
第二个阶段是硬件的访问阶段,根绝设备工作模式的不同,可以分为中断模式和轮询模式,无论何种模式都可以通过与硬件设备无关的通用接口进行硬件设备的访问。
后续章节的分析将主要围绕驱动程序的结构以及工作流程这两条主线展开。
在本书中,关于函数的之间的调用和执行先后顺序将以下图说是的方法来描述。如图1.2。表明函数A调用了函数B和C,在函数A中,B函数先于C函数执行。
图1.2 函数的调用与执行的先后顺序