。,或到外部设备,或从内存到内存。这些DMA引擎通常集成在片上CPU系统中。DMA驱动类为系统中其它设备提供DMA引擎服务的一套标准方法。提供的vxbDmaLib库提供用于DMA引擎。这个DMA库提供的函数是vxbDmaChanAlloc()和vxbDmaChanFree()。:・{vxbDmaResourceGet}()・{vxbDmaResourceRe!ease}()・{vxbDmaResDedicatedGet}()DMA驱动通过这些方法的关联函数提供对它们服务的访问。{vxbDmaResourceGet}(){vxbDmaResourceGet}()方法用于DMA库來分配一个DMA驱动管理的设备上的DMA通道。原型如下:STATUS{vxbDmaResourceGet}(VXB_DEVICE_IDplnstrVXB_DEVICE_IDpReqDevrVXB_DMA_REQUEST*pReq)这个原型,plnst指DAM设备木身,pReqDev指请求一个DMA通道的设备,和pReq是一个指针,指向一个结构,描述DMA通道的期望的屈性。VXB_DMA_REQUEST结构定义在:zw5/a//D///vxworks-6jc/target/src/hwif7h/util/:typedefstructvxbDmaRequestVXB_DEVICE_IDinstance;/*DMArequestordeviceid*/UTNT32minQueueDepth;/•minimumqueuedepthrequested♦/UINT32flags;/•flagsusedduringDMAallocation♦/VXB_DMA_RESOURCE_IDpChan;/・DMAchannelid*/void•pDedicatedChanlnfo;/•dedicatedchannelinformation•/)VXB_DMA_REQUEST;这个结构很大程度上对应传递给vxbDmaChanAlloc()的参数。DMA设备驱动正常选择一个基于minQueueDepth和flagsDMA通道,并返回指向通道的指针pChan。设备驱动调用DMA驱动的通道分配代码一无论通过和函数一可以有选择的传递一个执行一个结构的指针,这个指针包括具体于期望DMA通道的信息,专有于请求者。DMA驱动可以充分使用这个信息來设置一个专有的DMA通道。{vxbDmaResourceRelease}(){vxbDmaResourceRelease}()方法用于DMA库來释放DMA驱动管理的设备上的DMA通道。原型如下:STATUS{vxbDmaResourceRelease)(VXB_DEVICE_IDplnstrVXB_DMA_RESOURCE_IDpChan)大参数情况下,驱动的仅有要求是禅放具体的分配给设备的DMA通道,由pChan标识,plnst指向DMA设备的VxBus设备ID。{vxbDmaResDedicatedGet}()DMA库使用{vxbDmaResDedicatedGet}()方法來分配一个DMA方法专属于调用方法的具体设备。这个方法的功能和(vxbDmaRewurceGetK)类似。然而,制约于硬件限制或其他限制,你可能想使用这个设备來保证具体设备分配给具体通道。如这通过检査设备名关联的设备实例,由pReqDev标识,來完成,或检査使用的成员传递pReq的pDedicatedChanlnfo{m息。原型如F:STATUS(vxbDmaResDedicatedGet)(VXB_DEVICE_IDpReqDev,VXB_DMA_REQUEST*:♦include<hwif/util/>♦include"・・/h/util/"其他驱动想使用vxbDmaLib可能需要包含如下:♦include<hwif/util/aLib・h>这些驱动也可能需要包含具体DMA驱动的头文件,为了使用专用的通道功能。BSP配置DMA驱动通常BSP不缶要什么配迓信息。参考KrJForfcsDeviceDriverDeveloper'sGuide():。
vxWorks设备驱动开发指南 来自淘豆网m.daumloan.com转载请标明出处.