VxWorks串行设备驱动模式详解与i8250实现

3星 · 超过75%的资源 需积分: 0 7 下载量 127 浏览量 更新于2024-12-23 收藏 140KB PDF 举报
本文详细探讨了VxWorks操作系统中串行设备驱动的模式及其实现方法。作者史小斌、孙献璞和张艳玲以西安电子科技大学通信工程学院的研究背景,着重介绍了VxWorks环境下编写串行设备驱动程序的基本流程和策略。 首先,设备驱动程序通常在系统启动时通过调用特定的初始化函数,如`xxDrv()`,来安装驱动表。然后,会通过`xxDevCreate()`函数将设备描述符`xx_DEV`添加到设备表中,这样应用层就可以通过设备文件描述符(fd)找到对应的驱动函数,建立起清晰的应用层、I/O系统和驱动程序之间的层次关系。 然而,对于串行设备,由于其特有的异步通信特性,驱动模式与传统的设备驱动有所不同。本文提出了一种适用于VxWorks的串行设备驱动的一般化模式,强调了同步处理、中断服务程序(ISR)和设备驱动的协同工作。在这个模式下,串行设备驱动通常包括三个层次:底层硬件抽象层,负责设备的基本控制;中间的通信库如tyLib,提供了通用的串行通信接口;上层则是根据不同硬件平台特性的xxDrv1c,包含了针对特定设备的操作,如数据读写和设置。 例如,i8250是一种常见的串行通信芯片,其驱动实现会涉及到对中断的管理,确保数据传输的同步性和正确性。中断服务程序(ISR)会在硬件检测到事件时被触发,驱动程序在此处进行数据接收或发送,然后更新状态机并可能返回到用户空间以通知应用程序。 图1展示了VxWorks串行设备驱动的分层结构,展示了各层之间的交互关系。底层硬件驱动与系统级的串行设备配置和初始化模块紧密相连,而上层应用则通过统一的接口与底层驱动进行交互,使得编程更加简洁且易于维护。 总结来说,本文的核心内容围绕VxWorks串行设备驱动模式的建立,重点在于阐述了如何设计和实现一个能够适应异步通信需求、具有高效中断管理和同步控制能力的驱动程序。这对于理解和开发嵌入式系统的串行通信功能具有重要的参考价值。