新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于DSP/BIoS设备驱动模型的视频驱动程序开发

基于DSP/BIoS设备驱动模型的视频驱动程序开发

作者:时间:2009-05-06来源:网络收藏

通过给外部设备编写程序是一种有效的控制外设的方法。随着的应用越来越广泛,实时系统的日趋复杂及新技术的出现,处理器所连接的外部设备也是种类繁多,各不相同,而每一个外设都需要一个特定的程序来支持外设的正常工作,这就要为每一个外设编写程序,这是一项十分繁杂的工作。如何能够使系统开发人员从这些编写繁杂的驱动程序工作中解脱出来,进而能够专心投入到应用程序的开发中呢?TI公司提出了DSP/BIOS的,该分为两层:类驱动即与硬件不相关的层和微型驱动即与硬件相关的层。使用这种结构,应用程序只需调用类驱动的API函数,通过类驱动使用微型驱动,用微型驱动来控制外设。这种结构,将驱动程序合理分层,使得驱动程序模块化,可移植性、复用性大大增强,缩短了驱动程序的开发时间。

本文引用地址:http://www.eepw.com.cn/article/152508.htm

1 DSP/BIOS

1.1 类/微型驱动模型

DSP/BIOS是TI公司所设计开发的一个尺寸可裁剪的实时多任务操作系统内核,通过使用DSP/BIOS提供的丰富的内核服务,开发者能快速地创建满足实时性能要求的精细复杂的多任务应用程序。为了使开发更加简单方便,提出了DSP/BIOS DeviceDriver Kit,定义了标准的,一种将设备驱动分为与硬件无关和与硬件相关的双层结构,这样就使开发驱动程序不像以前那样复杂了,为开发者提供了便利。这两层结构称为“类/微型驱动模型,它们每一层都有各自通用的接口,所以相似设备驱动程序的主要部分可以复用,驱动代码的移植成为可能,使开发驱动的过程大大简化。

与硬件无关的层称为类驱动(Class Driver),它处在应用程序与微型驱动之间,提供对多线程I/O请求的串行化和同步,并且维护设备数据缓冲区,向上提供API接口供应用程序调用,向下通过适配层与微型驱动相连,实现API接口函数到微型驱动层的映射。

与硬件相关的层称为微型驱动(Mini-driver),它处在类驱动与芯片支持库(Chip Support Library)之间,对于类驱动的接口是统一的,即每一个微型驱动都为类驱动和DSP/BIOS设备驱动管理提供了标准接口。微型驱动采用芯片支持库(CSL)管理外围设备的寄存器、内存和中断资源。但由于硬件是千差万别的,所以微型驱动对底层硬件的操作是根据硬件的不同而不同的。对于完成同样功能的不同外设,只需稍加修改微型驱动,而不需重新编写驱动程序,就可以实现驱动程序的移植与复用,使驱动程序的开发过程大大简化。类/微型驱动模型结构如图1所示。

1.2 类驱动
通过将应用软件,驱动程序分层之后,可以看到,位于顶层的应用程序并不直接与微型驱动产生联系,而是通过类驱动与微型驱动连接。每一种类驱动向上层应用程序提供一个API接口,并且与微型驱动接口进行通信。
DSP/BIOS定义了三种类驱动:流输入输出模块(SIO),管道管理模块(PIP),通用输入输出模块(GIO)。其中,SIO和PIP分别需要使用适配器DIO和PIO来与微型驱动进行通信。SIO/DIO是流的I/O模型,使用异步方式来操作I/O,对于数据的读写、处理可以同时进行。PIP/PIO是管道的I/O模型,每个管道维护着一个被划分为多个大小相同的帧的缓冲区。GIO类驱动采用基于流的同步I/O数据传输模式,适合大流量数据的传输,更适合文件系统。与SIO/DIO和PIP/PIO不同,GIO包含内置的IOM(I/OManager输入输出管理)适配层,可以直接与微型驱动进行通信。
GIO模块与其他两个模块相比,有一个很重要的特性,就是可以扩展API函数支持新的应用领域,这样就实现了对GIO类驱动的扩展。这种可扩展API的特性正好可以用在驱动开发方面。例如这种扩展可以满足设备存储区的需要。另外,在提供了驱动和应用程序之间的视频数据同步机制之后,这种扩展也能够允许使用一个单独的调用来“交换”视频缓冲区。这种交换缓冲区的机制对于实时视频信号的采集与显示是十分重要的。所以,在视频驱动中,我们采用通用输入输出模块GIO。应用程序可以直接地调用GIO API函数和IOM微型驱动程序进行交互,这些GIO API就可以看作是类驱动。GIO类驱动接口如图2所示。
GIO_create会为一个特定的IOM通道实例创建一个GIO对象,这是类驱动使用微型驱动的第一步,首先创建对象及IOM通道,然后在此通道上进行数据传输工作。其结构体类型为GIO_Obj:
1.3 微型驱动
上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭