vxWorks设备驱动开发指南.doc

  1. 1、本文档共105页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
vxWorks设备驱动开发指南

vxWroks 6.8设备驱动开发指南 ——写具体类设备驱动 3 DMA驱动 3.1 简介 本章描述了DMA驱动。 3.2 概要 有些硬件设计包括一个通用DMA引擎,处理来自DMA的访问,或到外部设备,或从内存到内存。这些DMA引擎通常集成在片上CPU系统中。DMA驱动类为系统中其它设备提供DMA引擎服务的一套标准方法。 提供的vxbDmaLib库提供用于DMA引擎。这个DMA库提供的函数是vxbDmaChanAlloc( )和vxbDmaChanFree( )。 3.3 VxBus驱动方法 由vxbDmaLib库提供的函数充分使用三个VxBus驱动方法: ■ {vxbDmaResourceGet}( ) ■ {vxbDmaResourceRelease}( ) ■ {vxbDmaResDedicatedGet}( ) DMA驱动通过这些方法的关联函数提供对它们服务的访问。 3.3.1 {vxbDmaResourceGet}( ) {vxbDmaResourceGet}( )方法用于DMA库来分配一个DMA驱动管理的设备上的DMA通道。原型如下: STATUS {vxbDmaResourceGet} ( VXB_DEVICE_ID pInst, VXB_DEVICE_ID pReqDev, VXB_DMA_REQUEST * pReq ) 这个原型,pInst指DAM设备本身,pReqDev指请求一个DMA通道的设备,和pReq是一个指针,指向一个结构,描述DMA通道的期望的属性。 VXB_DMA_REQUEST结构定义在: installDir/vxworks-6.x/target/src/hwif/h/util/vxbDmaDriverLib.h 结构定义如下: typedef struct vxbDmaRequest { VXB_DEVICE_ID instance; /* DMA requestor device id */ UINT32 minQueueDepth; /* minimum queue depth requested */ UINT32 flags; /* flags used during DMA allocation */ VXB_DMA_RESOURCE_ID pChan; /* DMA channel id */ void * pDedicatedChanInfo; /* dedicated channel information */ } VXB_DMA_REQUEST; 这个结构很大程度上对应传递给vxbDmaChanAlloc( )的参数。DMA设备驱动正常选择一个基于minQueueDepth和flags DMA通道,并返回指向通道的指针pChan。设备驱动调用DMA驱动的通道分配代码——无论通过和函数——可以有选择的传递一个执行一个结构的指针,这个指针包括具体于期望DMA通道的信息,专有于请求者。DMA驱动可以充分使用这个信息来设置一个专有的DMA通道。 3.3.2 {vxbDmaResourceRelease}( ) {vxbDmaResourceRelease}( )方法用于DMA库来释放DMA驱动管理的设备上的DMA通道。原型如下: STATUS {vxbDmaResourceRelease} ( VXB_DEVICE_ID pInst, VXB_DMA_RESOURCE_ID pChan ) 大多数情况下,驱动的仅有要求是释放具体的分配给设备的DMA通道,由pChan标识,pInst指向DMA设备的VxBus设备ID。 3.3.3 {vxbDmaResDedicatedGet}( ) DMA库使用{vxbDmaResDedicatedGet}( )方法来分配一个DMA方法专属于调用方法的具体设备。这个方法的功能和{vxbDmaResourceGet}( )类似。然而,制约于硬件限制或其他限制,你可能想使用这个设备来保证具体设备分配给具体通道。如这通过检查设备名关联的设备实例,由pReqDev标识,来完成,或检查使用的成员传递pReq的pDedicatedChanInfo信息。原型如下: STATUS {vxbDmaResDedicatedGet} ( VXB_DEVICE_ID pReqDev, VXB_DMA_REQUEST * pReq ) 3.4 头文件 DMA驱动必须包含如下头文件: #include hwif/util/vxbDmaLib.h #include ../h/util/vxbDmaDriverLib.h 其他驱动想使用vxbDmaLib可能需要包含如下: #include hwif/util/vxbDmaLi

文档评论(0)

jiulama + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档