首 页       用户登录  |  用户注册
设为首页
加入收藏
联系我们
按字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
按声母检索 A B C D E F G H J K L M N O P Q R S T W X Y Z 数字 符号
您的位置: 5VAR论文频道论文中心理工论文电子通信
   C64x系列DSP/BIOS中设备驱动程序的设计      ★★★ 【字体: 】  
C64x系列DSP/BIOS中设备驱动程序的设计
收集整理:佚名    来源:本站整理  时间:2009-01-10 22:55:11   点击数:[]    

3.5 设备控制函数

微型驱动支持的控制操作因不同的外部设备而异。IOM定义了一些通用的控制代码供驱动程序调用。特定设备独有的控制代码必须自己编写,其特征值必须大于128(IOM_comTL_USER)。目前IOM支持的通用的控制代码有:

IOM_CHAN_RESET:将创建的通道实例重新恢复到初始状态。

IOM_CHAN TIMEDOUT:当应用程序或类驱动超时时,此控制代码将进行超时操作。例如,一个超时的IOM_Packet,如果没执行回调函数,可能会被返回类驱动。

IOM_DEVICE_RESE:外部设备重新恢复到初始状态,它将影响为这个外部设备创建的所有通道实例。

微型驱动支持的控制代码和控制操作必须告诉使用微型驱动的应用程序开发者,特别要注明该代码的针对对象(是针对通道实例还是针对设备实例)。例如:改变外设波特率的控制代码,必须注明是针对某个通道或者所有通道的,否则容易给应用程序带来错误。

4 类/微型驱动模型驱动应用实例——C64x系列DSP/BIOS中PCI设备的驱动

4.1 微型驱动的设计与编写

(1) 设计mdBindDev的部分程序代码:

static Int mdBindDev(Ptr *devp,Int devid,Ptr devParams)

{

……

QUE_new(&device.hiShPrioQue)/*户建立IOM包队列*/

QUE_new(&device.lOwPrioQue);

……

hwiAttrs.ccMask=IRQASK_NONE;

/*初始化PCI中断*/

hwiAttrs.arg=NULL;

IRQ_map(1RQ_EVIDSPINT,intrld);

HWI_dispatchPlug(intrId,(Fxn)isr,—1,&hwiAttrs);

}

(2)设计mdCreateChah的部分程序代码

static Int mdCreateChan(Ptr *chanp,Ptr devp,String name,

Int mode,Ptr chanParams,IOM_Tiom

Callback cbFxn,Ptr cbArg)

{

……

chan=MEM_alloc(0,sizeof(ChanObj),0);

chan—>queue=&device.hghPrioQue;

/*通道初始化*/

……

if(device.openCount==0){

PCI_intEnable(PCI_EVT_PCIMASTER);

/*PCI设备中断初始化。*/

……

IRQ_enable(IRQ_EVT_DSPINT);

}

*chanp=chan; /*返回创建通道*/

}

(3)设计mdSubmitChan的部分程序代码

static Int mdSubmitChan(Ptr chanp,IOM_Packet *pPacket)

{

ChanHandle chan=(ChanHandle)chanp;

/*挂载已创建通道*/

……

req=(C64XX_PCI_Request*)packet->addr;

/*I/O请求包地址*/

req->reserved=chan;

……

/*处理读写请求包*/

if(packet->cmd==IOM_READ‖packet->cmd==

IOM_WRITE){

imask=HWI_disable();

QUE_enqueue(chan->queue,packet)

……

}

……/*处理其它功能的请求包 */

removePackets(chan,packet->cmd);

/*移除已处理的请求包*/

}

中断服务函数(ISRs)和设备控制函数(mdControlChan)的结构与以上I/O请求发送函数(mdSubmitChan)的结构类似,本文不再作叙述。

4.2 在DSP/BIOS中注册微型驱动

打开DSP/BIOS配置工具,如图3所示。右键点击User-Defined Devices图标,选择插入选项,并重新命名为PCICHAN。右键点击PCICHAN,选择属性选项,进行注册,如图4所示。

4.3 编写类驱动

本例的类驱动使用通用输入输出模块,首先右键点击图3中的GIO Manager,选择启动GIO。在应用程序中,GIO_create函数使用微型驱动PCICHAN来创建通道实例,通过调用GIO_submit函数完成应用程序对PCI设备的读写操作等。源代码如下:

(1)创建通道

CIO—Handle pciChan;

C64Xx_PCI_Attrs pciChanParam;

C64XX_PCI_Request pciChanRequest;

C64XX_PCI_DevParams pciChanDevParam;

GIO_AppCallback pciChanCallBack;

pciChan=GIO_create(”/PCICHAN”,IOM_INOUT,&status,NULL,NULL);

(2)发送读请求包

pciChanRequest.srcAddr=(Ptr)BitsBuffer;

pciChanRequest.dstAddr=(Ptr)m_DspControl.CstartAddr;

pciChanRequest.bytecomt=length+20;

pciChanRequest.options=PCI_WRITE;

pciChanReqSize=sizeof(pciChanRequest);

status=GIO_submit(pciChan,IOM_WRITE,&pciChanRe—quest,&pciChanReqSize,NULL);

通过上述三个步骤,PCI设备的DSP/BIOS驱动设计就基本上完成了。应用程序可以通过使用类驱动来复用PCI设备,这样极大地提高了驱动的工作效率,对PCI外设的控制也大为简化了。



上一页  [1] [2] [3] 


Tags:


文章转载请注明来源于:5VAR论文频道 http://paper.5var.com。本站内容整理自互联网,如有问题或合作请Email至:support@5var.com
或联系QQ37750965
提供人:佚名
  • 上一篇文章:串行FLASHSSF1101在单片机

  • 下一篇文章:基于DSP的纸币号码识别系统
  • 返回上一页】【打 印】【关闭窗口
    中查找“C64x系列DSP/BIOS中设备驱动程序的设计”更多相关内容 5VAR论文频道
    中查找“C64x系列DSP/BIOS中设备驱动程序的设计”更多相关内容 5VAR论文频道
    最新热点 最新推荐 相关新闻
  • ››嵌入式系统的通信规约管理平台设计...
  • ››一种基于七号信令的局间话单采集系...
  • ››对于变频器的制动技术分析
  • ››电子文件管理元数据宏观结构多维分...
  • ››浅论卫星电视接收机的常见故障的检...
  • ››信息时代网络用户信息检索焦虑的心...
  • ››论GIS在高校房产管理中的实际应用
  • ››关于电力通信发展战略的思考 金李莎...
  • ››2G、3G切换精细化优化分析思路探讨...
  • ››光纤自动化生产的需求与时机
  • ››C64x系列DSP/BIOS中设备驱动程序的...
  •   文章-网友评论:(评论内容只代表网友观点,与本站立场无关!)
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站地图
    Copyright © 2006-2033 5Var.Com. All Rights Reserved .