全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/szzh _ 515/blog/static/29076175200941811218667 /TI公司发布了DSP/BIOS设备驱动程序包(DDK ),以开发DSP的外围驱动程序,定义了标准设备驱动程序的型号,并提供了一系列API接口。外围设备驱动程序分为两层:类驱动程序(class driver )。 类驱动程序用于为应用程序提供接口。 该程序的一些部分与该设备无关,主要功能保留该设备的数据缓冲区,提供API接口以调用该应用层程序,以及调节应用外围设备的操作同步和块,其继而与小驱动层连接类驱动程序与硬件无关,只要选择了外围设备驱动程序型号,类驱动程序就已经确定,不需要进行太多更改。微型驱动器(mini driver )。 小型驱动程序与设备相关,因此设计小型驱动程序是外围设备驱动程序开发的重点。 虽然小驱动程序和类驱动程序层的接口格式是统一的,但对基本硬件的操作因硬件平台而异。 微型驱动器接收类驱动器层发出的IOM_Packet命令包,并确定对底层硬件执行的操作。外围设备的驱动程序型号可分为三种类型:PIP/PIO型。 在基于数据管道的I/O模型中,每个管道都有自己的缓冲区。 将数据写入缓冲区或从缓冲区中检索数据时,notifyReader ()和notifyWriter ()函数将启动并同步数据。SIO/DIO型号。 基于流的I/O模型单个流是单向的、输入或输出,并且可以使用SIO/DIO模型或异步方案来操作I/O,从而同时执行数据读取和写入处理。 GIO模型。 通用I/O模型灵活,无适应层,直接操作小驱动器,主要设计新的设备驱动模型。比较PIO、SIO和GIOPIO支持更基本的通信,适用于相对简单的外围设备驱动程序设计。 例如在TI公司的6X11DSK板上实现的音频采集和播放一般基于PIO模型。 SIO模型具有良好的缓冲分配回收机制,适合描述FVID驱动模型TI公司最初设计的GIO模型的缺陷主要在于数据缓冲区管理问题,应用程序无法在获取设备驱动程序缓冲区进行数据处理后将缓冲区返回设备驱动程序。 因此,TI公司在推出DM642这种主要用于视频处理的DSP芯片的同时,改进了GIO模型,提出了专门用于视频设备的FVID模型。FVID模型建立在GIO模型上,用FVID_alloc ()、FVID_exchange ()和FVID_free ()函数封装GIO模型的GIO_submit ()函数,解决了GIO模型驱动程序无法收集缓冲区的问题。另外,FVID模型特别设计了FVID_frame结构。 该结构包括经常使用的影像信号的信息,例如行数、列数、YUV结构、场频率等,适于描述影像数据的帧,影像的情况下设计的FVID模型主要为DM64X系统设计。微驱动函数的具体实现如下: mdBindDev ()函数。 当应用程序建立设备接口(如FVID_create ()函数)时,将调用该接口,固定设备并完成外部设备的初始化。 相应的是mdUBindDev ()函数,mdUBindDev ()函数会禁用设备并禁用设备。 mdCreateChan ()函数。 使用此函数为应用程序和驱动程序建立通信通道,并请求每个通道缓冲区。 TI公司发表的FVID模型中,每个通道分配3个缓冲器,按顺序与外部设备交换数据,每个缓冲器对应1帧的视频数据。 mdCreateChan ()对应于md_DeleteChan ()函数,删除设备通道并释放缓冲资源。 mdSubmitChan ()函数。 负责管理缓冲区,分别接受来自应用程序的FVID_ALLOC ()、FVID_EXCHANGE ()和FVID_FREE ()这三个命令并进行处理。 FVID_ALLOC命令用于获取驱动程序缓冲区,应用程序从三个缓冲区中提取最新的视频数据,处理其中的数据,仅剩下的缓冲区用于接收从外部设备输入的数据。 FVID_EXCHANGE ()用驱动程序的最新数据缓存替换已使用的缓存,应用程序处理一帧的数据,将该一帧的数据返回驱动程序,读取新的一帧的数据并进行处理。 FVID_FREE ()将已使用的高速缓存返回驱动程序,应用程序将已处理的数据帧返回驱动程序,并且不再向驱动程序请求新的数据帧。 mdControlChan ()函数。 用于操作外部视频设备,完成视频数据的收集和输出。 应用程序通过FVID_Control ()函数将命令传递给GIO_Control (),将GIO_Control ()函数传递给mdControlChan ()函数,并将命令分发到最后指定的设备。FVID函数:1.FVID_create ()的角色是指配和初始化FVID通道对象语法: fvidchan=fvid _ create (名称,模式,*状态,optArgs,*attrs )参数定义:字符串名称/* handletoaninstanceofthedevice * /int模式/* pointertobufferallocatedbydriver * /int * status/* pointertosizeofbufferpointedtoby * /Ptr optArgs /* */FVID_Attrs *attrs /* */其中:name是设备实例的句柄,字符串mode是选定模式,只有:IOM_INPUT的值设置为检索模式,IOM_OUTPUT的值设置为显示模式。status是从底层mini驱动程序返回的状态值。attrs是指向FVID_Attrs结构的指针:FVID_Attrs的定义为:typedef struct FVID_Attrs Uns timeout; FVID_Attrs;timeout成员用于指定旗语同步。 值为:SYS_FOREVER:不可靠地等待FVID_alloc、fvid_free和fvid_exchange调用,直到该调用完成.数字的timeout值阻止APIs在指定的时间(系统时钟)。 0的值可以防止APIs阻止并立即返回。 在这种情况下,应用程序会检查返回的status值,以确保调用成功完成备注:FVID_alloc、FVID_free和FVID_exchange的调用仅为DSP/BIOS任务(tsk )。FVID_create的返回值:如果通道成功打开,则FVID_create返回通道的句柄。 后面的模块可以使用此句柄调用通道实际列:/* Initialize the attributes */FVID_ATTRS dispAttrs=FVID_ATTRS;/* createaninstancetoavideodisplaydevice */chan -Handle=FVID_create(“display0”,IOM_INPUT,NULL,NULL,dispAttrs );2.FVID_control ()用以将控制命令发送至较低层的mini_driver语法: status=fvid _ control (fvidchan,cmd,args )参数定义:fvid _ handlefvidchan/* handletoaninstanceofthedevice * /int cmd/*控制命令* /ptr args/* pointertocontrolcommandarguments * /return value int status/* return siom _ completeifsuccessful * /参数说明:fvidChan是由FVID_create ()创建的通道的句柄。cmd有两个值:IOM_ABORT-。IOM_FLUSH-功能因收集口的动作被废弃,所以I/O的动作正常进行。Args是指向要传递的命令(参数或结构)的指针。如果返回值:调用成功,则FVID_control返回IOM_COMPLETED。 如果发生错误,调用将返回负值。实例:/* abortspendingvideodriveri/ob作业* /FVID_control(fvidChan,IOM_ABORT,NULL )3.FVID-alloc ()角色:申请获取驱动程序高速缓存单元。语法: status=FVID_alloc (fvidChan,bufp )参数定义:fvid _ handlefvidchan/* handletoaninstanceofthedevice * /ptrb ufp/* pointertobufferallocatedbydriver * /return value int status/* return siom _ completeifsuccessful * /参数说明:fvidChan是由FVID_create ()创建的通道的句柄。bufp是输出参数,是指向所申请驱动器缓存空间的指针。返回值: FVID_alloc ()在调用成功时返回IOM_COMPLETED,在出现错误时返回负值。注意:只有在加载和初始化外围设备后,才能调用此函数。 此处的句柄必须由FVID_create ()函数指定。实例:/* allocateabufferfromthedevice * /status=FVID_alloc(chanHandle,dispBuf )4.FVID_exchange ()角色:交换应用程序和驱动程序高速缓存区域,并且相当于FVID_free ()和FVID_alloc ()函数的组合。语法: status=FVID_exchange (fvidChan,bufp )参数定义:fvid _ handlefvidchan/* handletoaninstanceofthedevice * /ptrb ufp/* pointertobufferexchangbydriver * /LG uns * psize/* pointertosizeofbufferpointedtobybufp * /参数说明:fvidChan是由FVID_create ()创建的通道的句柄。bufp是输入输出参数,指的是最初应用程序需要交换的高速缓存区域,交换后指的是驱动程序和高速缓存区域交换后的存储区域。pSize是指向bufp内存大小的指针。返回值: FVID_exchange ()在调用成功时返回IOM_COMPLETED,在出现错误时返回负值。注意:只有在加载和初始化外围设备后,才能调用此函数。 此处的句柄必须由FVID_create ()函数指定。实例:/* allocateabufferfromthedevice * /status=fvid _ exchange (chan handle,dispBuf )4.FVID_free ()角色:将应用程序请求返回的缓存释放给驱动程序语法: status=FVID_free (fvidChan,bufp )参数定义:fvid _ handlefvidchan/* handletoaninstanceofthedevice * /ptrb ufp/* pointertobuffertoberelinqistedtodriver * /LG uns * psize/* pointertosizeofbufferpointedtobybufp * /参数说明:fvidChan是由FVID_create ()创建的通道的句柄。bufp是一个输入参数,表示应用程序必须释放其返回的缓存空间。pSize是指向bufp内存大小的指针。返回值: FVID_free ()在调用成功时返回IOM_COMPLETED,如果出现错误,则返回负值。注意:只有在加载和初始化外围设备后,才能调用此函数。 此处的句柄必须由FVID_create ()函数指定。实例:example/* freeabufferbacktothedevice * /status=FVID_free(chanHandle,dispBuf )5.FVID_delete ()角色:申请关闭FVID channel对象。语法: status=FVID_delete (fvidChan )参数定义:fvid _ han
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业联合贷款协议书
- 分公司贷款合同范本
- 校园超市合同协议书
- 山东文物科保护中心暨山东文物工程公司2025年下半年招考易考易错模拟试题(共500题)试卷后附参考答案
- 宜昌市住房和城乡建设委员会招考事业单位专业技术人员(研究生)易考易错模拟试题(共500题)试卷后附参考答案
- 中外合资出资协议书
- 核酸采检员合同范本
- 桁架安全保护协议书
- 框架协议否保证合同
- 柴油包销协议书范本
- 2026年江西电力职业技术学院单招综合素质考试必刷测试卷必考题
- 2025中国出版集团有限公司拟接收毕业生情况(北京)笔试历年备考题库附带答案详解2套试卷
- 2025宁夏交通建设投资集团有限公司校园招聘和社会招聘230人(1号)考试笔试参考题库附答案解析
- 2.4 函数的周期性和对称性(3大考点+12大题型)(讲义+精练)(解析版)-2026年新高考数学大一轮复习
- 术后恶心呕吐诊疗指南(2025版)
- 全国大学生职业规划大赛《农村金融》专业生涯发展展示【高职(专科)】
- 2025全国交管12123学法减分考试题库带参考答案
- 2025年四川省拟任县处级领导干部任职资格试题及参考答案
- 二元一次方程组的应用(1)课件北师大版八年级数学上册
- 第一讲 决胜“十四五”奋发向前行
- 生产现场5S管理实施方案详解
评论
0/150
提交评论