保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

C64x系列DSP/BIOS中设备驱动程序的设计


比较复杂。相比之下,DIO模块可以简化SIO模块和IOM之间的连接,使得通信和同步变得更简单。

DIO模块必须实现下列基本功能函数:

(1)回调函数 在外设的通道实例创建结束时,如果微型驱动已经完成内存分配,那么适配模块将通过回调函数通知微型驱动待调用函数的地址,同时回调函数也将通知适配模块缓存已经建立,并最终通知上

层应用程序。

(2)传输函数 传输函数将调用微型驱动中的md-SubmitChan函数。微型驱动中的mdSubmitChan函数将从适配模块获得一块缓存,并将缓存中的新信息通过通道实例通知给中断服务程序(ISR)。DIO模块通过传输函数实现应用程序与微型驱动之间的通信。

2.2 PlP模块和PlO模块

DSP/BIOS中PIP模块提供管理异步I/O的数据管道。每个管道对象都拥有一块同样大小的缓存,这些缓存分别为同样数量的等长小块。小块的数量和长度在DSP/BIOS中设置。虽然小块的长度是固定的,但应用程序可以把小于这个长度的数据放入缓存小块中。一个管道有两个结束状态:写完缓存和读完缓存。通常,无论哪个结束状态都会激活I/O设备。数据通知函数用来执行读写同步任务和通知PIP缓存填满或清空。写数据时,PIP_alloc函数用来获得缓存,PIP_put函数用于将数据写入缓存。写完后,读数据通知函数notifyReader将被调用。读数据时,PIP_get函数用来接收缓存中的数据,刃PIP_free函数在数据不再被使用时将缓存清空。清空完后,写数据通知函数notifyWriter将被调用。

    PIO模块通过PIP模块从应用程序中获得缓存,并将获得的缓存提供给微型驱动使用。当微型驱动使用完缓存时,PIO模块还可以将缓存交还给应用程序。

PIO模块必须实现下列基本功能函数:

(1)主函数 当应用程序给设备分配缓存时,PIP的缓存管理调用rxPrime和txPrime函数。这两个函数调用DSP/BIOS的API函数获得缓存并提供给微型驱动使用。主函数负责给适配模块和应用程序的缓存分配发送起始信号。

(2)回调函数 当微型驱动已完成内存分配时,适配模块通过回调函数rxCallback或txCallback通知微型驱动待调用函数的地址,同时回调函数也通知适配模块缓存已经建立,并最终通知给上层应用程序。

(3)传输函数:传输函数将调用微型驱动中的md—SubmitChan函数。mdSubmitChan函数将从适配模块中获得一块缓存,并将缓存的新信息通过通道实例通知给中断服务程序(ISR)。PIO模块通过传输函数实现应用程序与微型驱动之间的通信。

2.3 GIO模块

GIO模块在提供必要的同步读/写API函数及其扩展函数的同时,将代码和使用数据缓存的大小尽量简化。如图2所示,应用程序可以调用GIO的API函数直接与微型驱动的IOM交换数据,这些API函数使得GIO成为了第三种类驱动。

当调用GIO_create创建一个外部设备的通道实例时,GIO在通道实例中增加了状态和I/O请求状态结构、IOM数据包(IOM_Packets)及一个GIO数据对象。GIO创建的通道实例的数据结构如下:

typedef stmct GIO_Obj{

IOM_Fxns *fxns; /* 函数表指针*/

Uns mode; /* 创建模式 */

Uns timeout; /* 超时时间 */

IOM_Packet syncPacket;/* 同步时使用的IOM_Packet */

QUE_Obj freeList; /* 异步I/O队列 */

《C64x系列DSP/BIOS中设备驱动程序的设计(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/157107.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。