当前位置:首页 > 电源 > 功率器件
[导读]DMA(英文全称:Direct Memory Access,中文:直接内存访问)是一种不经过CPU而直接从内存存取数据的数据交换模式。在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来

DMA(英文全称:Direct Memory Access,中文:直接内存访问)是一种不经过CPU而直接从内存存取数据的数据交换模式。在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率,可以大大节省系统资源。

DMA的传输模型结构见下图:

 

 

Figure 1 DMA传输模型

从上图可知,使用DMA从源地址传输数据到目的地址,数据都必须通过DMA控制器内部的寄存器或FIFO作缓存,而不是在源和目的地之间直接传输,这是因为源和目的所在设备的传输速度不一样,接口也不一样,要适应这些情况,数据在DMA控制器内的缓存是必不可少的,这样可使在低速设备传输数据时,高速设备可被释放并可被重新利用,这可看作是一种解耦,使低速设备和高速都能高效工作而不相互影响。

笔者在工作过程中,曾遇到一个有关DMA的issue,具体如下:在某个应用使用DMA进行大数据量传输过程中,经常出现数据传输异常,检查系统的调试打印信息,发现DMA在阶段性传输结束(会产生相应的中断)后,重新启动新阶段的DMA传输(使用相同的通道)时,有时会出现申请的DMA通道还在活动状态的情况,导致后面的数据传输无法正常启动。按照一般的思路,驱动程序设置好参数,启动DMA后,就可以去做其他工作,中断的到来就意味着该次的DMA传输结束了,但矛盾的是有时发现传输结束的DMA通道却不在空闲状态,要说明的是,所有的DMA通道资源都是预先分配好的,不同驱动程序使用各自不同的通道,不会互相干扰。开始认为是驱动程序没有设计好,出现竞争导致函数重入,但阅读整个驱动源码后,没有发现这方面的问题。

重新分析整个DMA传输过程:数据从源设备到目标设备,中间是要经过DMA controller Data transfer register或FIFO这个中转站暂存,而中断产生的条件是只要源或目的地址更新到与通知地址相同,这样当中断发生时,最后的数据可能还在中转站内,传输还在进行当中,由于最后的数据传输什么时候能真正结束,取决于目标器件以及当时的总线仲裁等情况,时间比较随机,此时中断服务函数重新启动新阶段传输前检查该通道时就有可能查询到DMA通道还处于忙状态,这样就会导致重新启动DMA通道失败而无法继续进行数据传输。

初步认为issue的产生是由于真正的数据传输结束滞后于DMA中断的产生(这个应该是硬件设计的一个bug),因此解决的方法就是加入等待,这可以通过多次重复查询来实现。按照这个思路,修改驱动程序,重新进行测试,问题没有复现,数据传输正常,这说明以上的分析推断是正确的。

通过上面的例子可以看到,充分理解DMA设计的一些硬件基本机理,对我们在工作当中解决一些实际问题还是很有帮助的。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭