返回首页
当前位置: 主页>USB开发应用>

USB 接口芯片 PDIUSBD12 DMA 模式应用说明

时间:2017-09-08 20:16来源:USB开发群 作者:USB开发频道 点击:

  

  DMA的英文拼写是“Direct Memory Access”,汉语的意思就是直接内存访问,是一种不经过CPU而直接从内存了存取数据的数据交换模式,直接存储器存取(DMA)控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能够通过一组专用总线将内部和外部存储器与每个具有DMA能力的外设连接起来的控制器。通常只有数据流量较大(kBps或者更高)的外设才需要支持DMA能力。 织梦好,好织梦

  一般而言,DMA控制器将包括一条地址总线、一条数据总线和控制寄存器。高效率的DMA控制器将具有访问其所需要的任意资源的能力,而无须处理器本身的介入,它必须能产生中断。最后,它必须能在控制器内部计算出地址。   织梦内容管理系统

  因为你通常会在代码初始化过程中对DMA控制器进行配置,内核就只需要在数据传输完成后对中断做出响应即可。你可以对DMA控制进行编程,让其与内核并行地移动数据,而同时让内核执行其基本的处理任务—那些应该让它专注完成的工作。 织梦好,好织梦

USB 接口芯片 PDIUSBD12 的 DMA 模式应用说明 织梦内容管理系统

  PDIUSBD12 的主端点(端点2)支持DMA传输,使用DMA控制器,PDIUSBD12 的主端点和本地共享存储器间的数据传输可自主进行而不需要本地CPU的干预。在基于协议的 DMA 操作中,主机应用程序询问器件的固件以通过由控制端点发送的厂商请求建立DMA传输,然后在主端点上执行实际的批量数据传输,在 DMA控制器建立之后主机可向器件传输最多为64k字节的数据而不需要任何固件的干预。

copyright dedecms

  要处理任何DMA传输,本地CPU从主机接收必要的SETUP信息并对DMA控制器进行相应的编程,典型的,对DMA控制器的传输模式,字节计数寄存器和地址计数器进行正确的编程,在该模式下 PDIUSBD12发出请求时开始传输,当字节计数器减少为零时终止,在DMA控制器编程之后,本地 CPU 在初始化传输时将 PDIUSBD12 中的 DMA使能位置位。

本文来自织梦

  一个完整的 DMA传输要求以下两个步骤 :

dedecms.com

1)通过主管道发送一个请求,并允许器件用 DMA 传输方向,起始地址和传输规格对 DMAC 进行编程 。 织梦好,好织梦

2)在主端点上发送或接收数据包。

copyright dedecms

PDIUSBD12器件DMA 状态

dedecms.com

  建立DMA请求通过控制管道作为厂商请求从主机发出,器件的响应和动作依赖于DMA 操作的状态 。

织梦内容管理系统

PDIUSBD12 器件DMA状态机 织梦内容管理系统


  织梦好,好织梦

  上图所示为器件中 DMA 的 3 种状态,IDLE RUNNING 和 PENDING 如果没有运行或推迟 DMA 操作,器件处于 IDLE 状态,那么建立 DMA 请求由 ACK 进行响应。如果器件在 DMA 传输的过程中就是RUNNING状态,建立 DMA 请求由 NAK 进行响应并导致器件进入PENDING状态,这表示有一个推迟的建立 DMA请求,如果器件在 PENDING状态中接收到另一个建立 DMA请求,新的请求将覆盖旧的请求。

内容来自dedecms

 

织梦内容管理系统

下图为固件处理建立 DMA请求和 EOT的程序流程图 织梦好,好织梦

 

dedecms.com

固件处理建立 DMA请求和 EOT的程序流程图(pdiusbd12) 内容来自dedecms


 
copyright dedecms

DMA 配置寄存器

dedecms.com

  D12 的 DMA操作由其 DMA配置寄存器进行控制,该寄存器由设置 DMA 命令设置,寄存器中不是所有的位都和DMA操作有关。位4(中断脚模式)和位7( 时钟分频系数)控制 D12 的中断源 。 织梦内容管理系统

下表所示为推荐的寄存器编程汇总: copyright dedecms

USB 接口芯片 PDIUSBD12 DMA 模式应用说明 织梦好,好织梦


  织梦好,好织梦

  默认情况下,D12 和 DMAC 都不处于自动重装模式,不想让器件的 DMA 自动重新启动,是因为这是一个协议层的操作,也就是说在主机的控制之下,在 EOT D12 和 DMA 控制器的 DMA 都被禁止,固件需要重新使能以使它们在接收到主机的建立,DMA请求时重新启动 DMA传输。 

织梦内容管理系统

  需要注意的是,在 DMA模式中来自端点 4 和5 的中断被禁止,这些端点上的中断服务是不必要的,而且使 DMA传输中有潜在的缺陷,DMA可以看作是最高级的中断 可以在任意两条 CPU指令之间执行,甚至在 ISR 中,由于在传输当中 DMA 的状态任何时候都有可能改变,因此任何想要用来检测 DMA 状态的程序都是不可靠的  。 本文来自织梦

  以下是一个 IN  标志 DMA传输编程示例,dma_dir 和 dma_transfer_size已通过建立 DMA请求设置 。

内容来自dedecms

dma_start(dma_dir, MainDmaBuf, dma_transfer_size, 3);    dedecms.com

dma.bits.dma_burst = 3;   

dedecms.com

dma.bits.dma_enable = 1;   

copyright dedecms

dma.bits.dma_direction = dma_dir;   

织梦内容管理系统

dma.bits.auto_reload = 0;   

本文来自织梦

dma.bits.normal_plus_sof = 0;   

本文来自织梦

dma.bits.endp_4_interrupt_enable = 0;   

dedecms.com

dma.bits.endp_5_interrupt_enable = 0;   

织梦内容管理系统

D12_SetDMA(dma);   织梦好,好织梦

织梦内容管理系统

建立 DMA 请求

本文来自织梦

  建立 DMA 请求是一个通过控制管道发送的厂商请求 在 PDIUSBD12 采样固件和小应用程序中,这
些是由 IOCTL_WRITE_REGISTER(由微软 Windows 98 DDK 中的静态图像USB 接口定义)完成的。 内容来自dedecms

器件请求描述如下:

织梦内容管理系统

pdiusbd12 DMA 模式请求

织梦内容管理系统


 

copyright dedecms

   在器件请求之后,DMA 操作的具体请求在数据阶段发送,采样固件和小应用程序使用专有的定义如下所示 :

织梦内容管理系统

PDIUSBD12 DMA 专有定义 织梦好,好织梦


  本文来自织梦

主机端编程注意事项

织梦内容管理系统

  USB 器件不是决定传输速率的唯一标准,主机端的应用程序在整个系统的性能占有更重要的地位,因为主机一直在控制 USB 的处理。 dedecms.com






秦华 『上海买保险』上海地区人寿保险资深寿险顾问 上海外籍人士买保险-高端人士医疗办理
服务项目:儿童医疗/子女教育金/养老保险/重大疾病/意外伤害/员工团险/公众责任
免费热线『上海』:13761630213, QQ:107242375, Email:victor.qin@qq.com
选择保险事业 为了爱,为了一份坚定的承诺!MSN:
上海地区请直接拨打本人电话,应约免费上门提供免费保险方案。
Baoxian.ws>>           旅行签证保险、上门办理>>        重大疾病网>>     上海重大疾病一览    
友情链接: 走在上海人寿保险的前端    和讯保险博客    上海投保在线    Shanghai Insurance    秦华的个人简历


顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
图文并茂 我的链接
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
上海高端医疗/住院医疗保险信息
上海保险规划师信息
上海子女教育理财保险信息
上海保险规划师信息
上海女性高端生育保险方案-等待期
上海保险规划师信息
上海三口之家家庭保障方案
上海保险规划师信息
上海女性特色重大疾病保险方案
上海保险规划师信息
上海女性白领理财保险方案
上海保险规划师信息
上海养老理财规划保险方案
上海保险规划师信息
通过网络取得初步咨询
  •    
上海办理-免费咨询送计划书
上海买保险
上海办理-申根签证 出国旅行保险
上海买保险
上海买保险,海外基金,买保险,友邦保险,中国人民健康保险,养老保险,儿童保险,儿童医疗,子女教育金,太平洋保险,医疗保险,工伤保险条例,中国人寿保险,保险公司,中国平安保险,医疗险,进口药,自费药,外籍人士医疗,泰康人寿,英国保诚集团,上海综合保险,国际医疗保险,上海医疗保险,上海社会保险,上海养老保险,上海市综合保险,上海平安保险,上海太平洋保险,和睦家医院,上海综合保险卡,买保险,高端医疗,重大疾病,意外伤害,定期寿险,家庭理财,友邦保险,金茂大厦,少儿互助基金,上海社保,太平洋集团,港安医院