C64x系列DSP/BIOS中设备驱动程序的设计
……/*处理其它功能的请求包 */
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.byteCnt=length+20;
pciChanRequest.options=PCI_WRITE;
pciChanReqSize=sizeof(pciChanRequest);
status=GIO_submit(pciChan,IOM_WRITE,&pciChanRe—quest,&pciChanReqSize,NULL);
通过上述三个步骤,PCI设备的DSP/BIOS驱动设计就基本上完成了。应用程序可以通过使用类驱动来复用PCI设备,这样极大地提高了驱动的工作效率,对PCI外设的控制也大为简化了。
《C64x系列DSP/BIOS中设备驱动程序的设计(第6页)》