DM642外设驱动模型

DM642外设驱动模型

ID:43515723

大小:33.00 KB

页数:3页

时间:2019-10-09

DM642外设驱动模型_第1页
DM642外设驱动模型_第2页
DM642外设驱动模型_第3页
资源描述:

《DM642外设驱动模型》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、1、基于DSP/BIOS的外设驱动开发模型  TI公司为开发DsP的外设驱动程序,推出了DSP/BIOSDeviceDriverkit,定义了标准的设备驱动模型,并提供了一系列的API接口。如图1所示,外设驱动程序分为两层:  ①类驱动(classdriver)。类驱动程序用来为应用程序提供接口。这部分程序与设备无关,主要功能包括维护设备数据缓冲区,向上提供API接口供应用层程序调用,并协调应用程序对外设操作的同步和阻塞;向下提供适配层与迷你驱动层相连,实现API接口函数到迷你驱动层程序的映射。类驱动程序与硬件无关,只要外设驱动模型选

2、定了,类驱动程序就定下来了,不需要做多少修改。  ②迷你驱动(minidriver)。迷你驱动程序与设备相关,所以设计迷你驱动程序是外设驱动开发中的重点。迷你驱动程序与类驱动层的接口格式是统一的,但迷你驱动程序对底层硬件的操作是根据硬件平台的不同而变化的。迷你驱动接收类驱动层发出的IOM_Packet命令包,决定对底层硬件进行什么样的操作。  外设驱动程序模型又可以分为以下3类:  ①PIP/PI0模型。基于数据管道的I/O模型,每个管道都在维护自己的一个缓冲区。当数据写入缓冲区,或从缓冲区取出数据时,便会激发notifyReader

3、和notifyWriter函数实现数据的同步。  ②SIO/DIO模型。基于数据流的I/O模型,一个数据流是单向的,要么是输入,要么是输出,而且SIO/DIO模璎使用异步方式来操作I/0,对于数据的读写、处理可以同时进行。  ③GI0模型。通用的I/O模型,灵活性很强,且没有适配层,直接操作迷你驱动程序,主要用来设计新型的设备驱动模型。3.1设备驱动程序模型的选择  如上文介绍,常用的驱动程序模型包括3类:PIO、SIO和GIO。比较这3种模型可以知道:PIO支持更底层的通信,适合设计比较简单的外设驱动程序。例如在TI公司的6X11D

4、SK板上实现的音频采集和回放,一般都是基于PIO模型的。而SIO模型具有很好的缓冲器分配回收机制,比较适合描述视频设备,但是SIO的很多功能在本系统中使用不到,而且GIO模型设计的目的就是针对特殊硬件的新型设备,所以最终考虑使用GIO设备驱动模型。  TI公司最初设计的GIO模型其实是有缺陷的,主要在数据缓冲区管理的问题上,应用程序在取得缓冲区进行数据处理之后,却无法将缓冲区返回设备驱动程序。于是TI公司在推出DM6北这一款主要用于视频处理的DSP芯片的同时,对GIO模型进行了改进,提出了专门针对视频设备的FVID模型。FVID模型是

5、建立在GIO模型之上的,以FVID_alloc、FVID_exchangc、FVID_free函数对GIO模型中的GIO_submit函数进行封装,解决了GIO模型中驱动程序不能回收缓冲区的问题。  此外FVID模型还专门设计了FVID_frame结构。此结构中包含了常用的视频信号的信息,如行数、列数、YUV结构、场频等,很适合描述视频数据帧。但FVID主要是针对DM64X系统设计的,DM64X的很多功能在F2812DSP上都不具备。所以本设计针对F2812DSP视频处理系统,对FVID模型进行了一定的简化,保留类驱动程序,而重写了迷

6、你驱动层程序。3.2视频处理程序运行流程  在设计完成的视频驱动程序基础上,开发一个典型的视频处理应用程序,其运行流程如图3所示。首先使用FVID_create函数建立GIO_capture和GIO_play两个视频通道.再以GIO_capture通道的FVID_control函数发出cmd_start,采集到1帧视频数据。应用程序以GIO_capture通道的FVID_alloc函数向驱动程序申请采集到的数据帧,进行处理后再以FVID_exchange函数将修改后的数据帧返回驱动程序,最后再调用GI0_play通道的FVID_con

7、trol函数发出cmd_display命令将数据帧输出。由图3可以看到,应用程序调用的这些FVID_XXX接口函数会自动由类驱动程序层层向下映射,到达迷你驱动层程序;而迷你层程序可以直接操纵底层硬件设备,来完成整个视频的采集、处理和显示的过程。3.3迷你驱动程序的设计  迷你层驱动程序足整个设计的重点所在,下面详细介绍其实现方法。迷你层驱动程序主要由表1所列的几个函数组成。对各个函数的具体实现如下:  ①mdBindDev函数。在应用程序建立设备接口(如FVID_create函数)时被调用,完成对外部设备的初始化。而与其对应的是md_

8、UBindDev函数,使用nadUBindDev函数会使设备处于无效状态,不能再使用。  ②mdCreateChan函数。使用此函数为应用程序和驱动程序建立通信通道,同时为每个通道申请缓冲区。在TI公司发布的FVID模型

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。