为新的硬件设计一个驱动程序可能是一个挑战,驱动程序工程师遵循一个与普通软件工程师不同的设计方法论。以下的提示对设计一个驱动程序是有帮助的。 学习硬件 在开始一个新的驱动程序之前,学习尽可能多的这个硬件设备的知识,大部分需要的信息都在硬件提供的文件中。至少要确定以下信息: 1. 总线的结构。 2. 控制寄存器。 3. 错误和状态汇报。 4. 中断行为。 5. 数据传输机制。 6. 设备存储器。 总线结构 总线的结构对设计驱动程序有巨大的影响,自动识别和自动配置的信息必须清楚。WIN2000希望新的设备分享即插即用机制。 控制寄存器 必须知道设备寄存器的尺寸和地址规划,每个控制,状态,数据寄存器的目的,内容必须被完整的描写。特殊的行为也必须描述出来,如: 1. 一些寄存器可能只读或者只写。 2. 一个单一的寄存器在读的时候和写的时候执行的功能不同。 3. 在发出一个命令,再间隔一定时间之后,这个数据或者状态寄存器的数据才有效。 4. 寄存器的访问需要特殊的顺序。 错误和状态汇报 确定设备使用的汇报硬件错误和设备状态的任何协议。 中断行为 正确的找出硬件在什幺情况下产生中断,以及是否设备使用多于一个的中断向量。如果它是一个多设备的控制器,中断可能来自控制器它自己,这时必须有一个机制标识出那个真正产生中断的设备。 数据传输机制 过程控制I/O与DMA的设备是完全不同的。一些设备可以执行这两种I/O,在设计使用DMA传输数据的设备时,确定DMA机制是使用DMAC主还是副,是否有缓冲区地址范围的限制。 设备存储器 如果设备使用专用的存储器,确定怎样去访问它。它可能被映 射到固定的主存储器地址,或者它是一个必须被初始化的寄存器,请纪录下来它的映 射地址。 使用硬件智能 一些外设包含有自己处理器,它们执行诊断和控制的功能。这些处理器可能在设备固件(ROM)的程序下运行,或者在初始化的时候下载的过程控制之下。 我们可以充分利用设备的智能,利用硬件的功能可以提高驱动程序的执行和诊断能力。 测试硬件 硬件应该在早期进形测试,除了有机会发现硬件错误之外,也提供一个发现设备动作的过程。 1. 基本测试: 确定所有的联机都已经正确连接后打开开关,装入执行程序,确定所有的资源不冲突。 2. 分别测试: 如果可能的话,为所有的硬件和固件编写单独的测试程序,这些常常是一些没有在操作系统帮助下运行的程序。幸运的话,硬件设备的制造商会提供一些测试程序。 最后,记得去测试设备的侦测和汇报错误的能力。
设计驱动程序方法
最新推荐文章于 2024-08-23 14:42:33 发布