当前位置:首页 > 单片机 > 单片机
[导读]介绍了Blackfin533中DMA的类型及特点,描述了DMA在实时图像处理领域数据传输中的重要应用,给出了两个具体的应用实例,最后指出了使用Blackfin533的DMA时应注意的事项。

   摘要:介绍了Blackfin533中DMA的类型及特点,描述了DMA在实时图像处理领域数据传输中的重要应用,给出了两个具体的应用实例,最后指出了使用Blackfin533的DMA时应注意的事项。

    关键词:Blackfin533;DMA;实时图像处理;数据传输

直接存储器存取(Direct Memory Access,简称DMA?对计算机系统是非常重要的。它可以使CPU在运行指令的同时从外部存储器或设备中存取数据,也可以在CPU不参与的情况下,由专用的DMA控制器存取数据。 

1 Blackfin533中的DMA

Blackfin系列DSP产品包括ADSP-BF535和ADSP-BF533/2/1两类,都是AD公司最新的基于微信号体系结构的DSP,这些器件含有两个MAC,并集成了大量的外围设备和存储器接口,每秒运算速度最高可达1200MMAC,因而比较适用于各种视频、音频、通信领域。

BF533处理器有多个独立的DMA控制器,它能以最小的处理器内核消耗支持数据的自动传输。DMA传输可以发生在BF533处理器的内存与支持DMA的任一外设之间。此外,DMA还可以完成有DMA功能的外设与连接在外部存储器接口上的外部设备(包括SDRAM控制器和异步存储控制器)之间数据传输。BF533处理器可利用DMA在存储器空间内部,以及在一个存储器空间和外围设备之间传输数据,并可以指定传输操作,以便完全集成化的DMA控制器独立于处理器完成数据传输时返回到正常的处理。

BF533处理器的DMA控制器同时支持1D和2D DMA传输,其DMA传输初始化可以通过寄存器状态描述符块中的一组参数来实现。2D DMA行和列最大可支持64k×64k个元素任意数。而且列的步长可小于行的步长,并可执行交叉存取的数据流。这一个特点在某些视频应用场合特别有用。

    Blackfin533有12个通道DMA控制器。有DMA功能的外设包括SPORTs、SPI、UART和PPI。每个支持DMA的外设至少有一个专用的DMA通道。DMA控制器可以完成的几种数据传输类型如下:

(1)存储器和存储器之间(MDMA);

(2)存储器和串行外设接口(SPI)之间;

(3)存储器和串行接口 (SPORT)之间;

(4)存储器和通用异步收发器UART接口之间;

(5)存储器和并行外设接口(PPI)之间;

BF533处理器上的DMA传输可以基于描述符,也可以基于寄存器。基于描述符的DMA传输需要用存放在存储器内的一组参数来初始化一个DMA序列。这种传输允许多个DMA序列链接在一起。在基于描述符的DMA操作中,一个DMA通道可以通过编程自动建立起来,并可在当前序列完成后开始另一个DMA传输。基于寄存器的DMA允许处理器直接对控制寄存器编程来启动一个DMA传输。传输完成后,为了连续传输数据,也可以用它们原来设置的值自动更新控制寄存器。

2 DMA在数字图像处理中的应用

DMA是数字信号处理器(DSP)中用于快速数据交换的重要技术,它具有独立于CPU的后台批量数据传输能力,能够满足实时图像处理中的高速数据传输要求。由于图像处理的原始数据量很大,同时图像处理中也会产生等量的中间数据,对于片内存储资源有限的高速DSP芯片来说,一般需要借用外部存储空间。为了提高系统的实时处理能力,可以将数据在不同存储空间的转移任务交给DMA来完成,从而使CPU只专注于数据的计算。同时DMA对数据的重排功能可以优化图像数据在内存中的存储,这不仅可以提高内部存储空间的利用效率,也可以提高数据的传输效率。虽然图像数据的传输也可由软件实现,但会消耗大量的CPU时钟周期,从而使DSP的高速性能难以发挥。而由DMA来进行同样的工作却不占用CPU的时钟周期。

BF533内部专门为适应视频数据处理而增加的二维DMA及相关寄存器有以下几种:

(1)配置寄存器(DMAx CONFIG/MDMA yy CONFIG)主要用来设置二维DMA方式使能和中断产生方式,其中中断可以在一行结束时产生,也可以在整个DMA结束时产生。

(2)内层循环计数寄存器(DMAx X COUNT/MDMA yy X COUNT)用于在二维DMA时保存内层循环的数目(或称行数),该数目必须大于等于2。

(3)内层循环地址增量寄存器(DMAx X MODI-FY/MDMA yy X MODIFY)用于在二维DMA时保存每一次内层循环计数器加1之后(也就是在内层每传输完一个元素,但不包括每个内层的最后一个元素),DMA操作(读或写)地址在内存中的增量,此增量应该是二维DMA操作的数据单元长度的整数倍,如二维DMA进行16位读写时,此增量必须是2N?N≠0?倍。

(4)外层循环计数寄存器(DMAx Y COUNT/MDMA yy Y COUNT):该寄存器仅在二维DMA中使用,任务是保存外层循环的数目(或称位列数)。

(5)外层循环地址增量寄存器(DMAx Y MODI-FY/MDMA yy Y MODIFY):该寄存器也仅在二维DMA中使用,任务是保存每次外层循环计数器加1后,DMA操作地址在内存中的增量,该值可以为负,且应为二维DMA操作数据单元长度的整数倍。3 应用举例

存储器的有效利用对系统设计者来说是需要着重考虑的问题。外部存储器比较昂贵,而且其存取时具有较长的延迟。为了克服上述问题,Blackfin处理器片上集成有SDRAM控制器,可支持片外存储器。因为视频数据率要求非常苛刻,帧缓冲区必须设立在外部存储器上。这样,当处理器操作一个缓存时,另一个缓存便可以存储通过PPI并用DMA传输的数据,见图1。

下例可将BF533的PPI接口上从图像采集芯片ADV7183传送过来的视频流中的一场视频图像(720×288像素)存储到外部存储器SDRAM中。

具体程序代码如下:

Init_DMA() ?

{

*pDMA0 START ADDR = 0x0; //把图像存放在SDRAM中的起始地址//0x00000000处;

*pDMA0 X COUNT = 720; //图像的行数;

*pDMA0 X MODIFY = 0x4; //在内层每次传完一个元素后地址的增量,因为每次传输32位,所以是0x4?

*pDMA0 Y COUNT =72; //外层循环的数目,因为总的缓存为720×288字节,所以288/4=72?

*pDMA0 Y MODIFY = 0x4; //传完一行数据后DMA的地址增量,因为是存储空间是连续的,所以是0x4?

*pDMA0 PERIPHERAL MAP = 0x0?

//外设PPI的DMA开启;

*pDMA0 CONFIG = DMAEN |DI EN|WNR|WDSIZE 32|RESTART|DMA2D|DI EN;

//使能DMA,整个DMA结束产生中断,存储器写。32位传输,重新开始前丢失FIFO中的数据。

}

当一个完整的图像帧存放在SDRAM后,数据将传输到内部L1数据存储器中,这样,处理器内核用一个时钟周期的延迟就可以访问到数据。为此,DMA控制器可以用二维传输获得像素块。图2所示是一个16×16“宏块”的传输示意图。

图2

    为了有效地从原图像中传输一个图像块,一般需要控制四个参数:X Count、Y Count、X Modify和Y Modify。其中X Count和Y Count分别表示水平和垂直方向上读入/读出的元素数。在此应用中“水平”和“垂直”是抽象的概念,因为图像数据在外存中实际上是线性存储的。另外两个参数X Modify和Y Modify是在传输了必需的X Count和Y Count后跨越的数据量。从性能上看,任何时候最多四个唯一的SDRAM内部子组(bank)都是活动的。这意味着在视频结构中,PPI填充一个子组(bank)时,2D到1D DMA只是把数据从一个子组(bank)拖进来,而没有额外的子组(bank)激活延迟。下面是一个2D到1D的DMA传输代码:

2Dto1D_DMA()

{

unsigned char *p;

p=0x0;

*pMDMA_D0_START_ADDR=p+L1buffer;

//L1buffer是L1缓冲区的地址

*pMDMA_D0_X_COUNT=64;

//16×16/4=64;

*pMDMA_D0_X_MODIFY=4;

pMDMA_S0_START_ADDR =p+Sourcebuffer; //Sourcebuffer是16×16图像块在SDRAM中的地址

*pMDMA_S0_X_COUNT=4;

*pMDMA_S0_X_MODIFY=4;

*pMDMA_S0_Y_COUNT=16;

*pMDMA_S0_Y_MODIFY=708;

// 720-16+4=708

*pMDMA_S0_CONFIG=WDSIZE32|DMAEN|DMA2D;

*pMDMA_D0_CONFIG=DI EN|WDSIZE32|WNR|DMAEN;

*pMDMA_D0_IRQ STATUS=0x1;

//消除中断;

4 BF533中DMA的使用注意事项

下面两种情况会导致DMA总线错误:

(1)数据没有对齐

当要传送的数据与当前地址不相符时,可能发生数据没有对齐的错误。数据不对齐包括有情况:第一是当DMA CONFIG 寄存器的WDSIZE为1(16bit)时,地址的最低位不等于0;第二是当WD-SIZE为2(32bit)时,最低两位地址不等于00。如果出现上述错误,IRQ寄存器中的位2应被置位。

(2)非法存储器访问

发生非法存储器访问时(如访问MMR空间),处理器将得到一个错误响应并导致以下结果:第一是DMA通道会结束当前的单个或突发式传送;第二是DMA信道的使能位(配置字的bit0)将被清零;第三是产生一个总线错误中断并使IRQ 状态寄存器中的位2被置位。

还有一点就是要保证对MDMA中MDMA_S0_CONFIG(MDMA S1 CONFIG?位的写入一定要在写入MDMA_D0_CONFIG(MDMA_D1_CONFIG)之前。

5 总结

一般情况下,图像处理系统的最大特点是运算数据量大,数据量往往大于片内存储器容量,所以必须借助DMA在片内高速存储区与片外低速存储区之间进行数据交换,以提高数据处理速度。多数情形下,数据传输所花的时间往往超过数据处理的时间。因此,合理使用DMA来提高数据传输率,可起到很好的作用。

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

贝克曼库尔特目前已成为MeMed Key免疫分析平台和MeMed BV检测技术的授权经销商 在原有合作的基础上,继续开发适用于贝克曼库尔特免疫分析仪的MeMed BV检测 加州布瑞亚和以色列海法2024年5月16日...

关键字: BSP IO 检测技术 免疫分析仪

英国英泰力能的燃料电池是可产业化的产品解决方案 英国首个专为乘用车市场开发的燃料电池系统 在 157kW 功率下,此燃料电池比乘用车的其他发动机更为强大 &...

关键字: ENERGY INTELLIGENT 氢燃料电池 BSP

深爱人才,共赴"芯"程 深圳2024年5月15日 /美通社/ -- 5月11日,深圳国资国企"博士人才荟"半导体与集成电路产业专场活动在深圳市重投天科半导体有限公司(简...

关键字: 半导体 集成电路产业 BSP 人工智能

武汉2024年5月15日 /美通社/ -- 北京时间4月26日-5月4日,2024 VEX 机器人世界锦标赛于美国得克萨斯州达拉斯市举办。本届 VEX 世锦赛为期九天,设有 VIQRC 小学组/初中组、V5RC 初中组/...

关键字: 机器人 BSP RC POWERED

上海2024年5月15日 /美通社/ -- 由生成式人工智能(AI)驱动的临床阶段生物医药科技公司英矽智能宣布,与复星医药(600196.SH;02196.HK)合作开发的潜在"全球首创"候选药物IS...

关键字: ISM BSP PC 人工智能

上海2024年5月13日 /美通社/ -- 5月8日,浦东新区国资委组织陆家嘴集团等9家区属企业与立邦中国召开合作交流会,旨在贯彻落实浦东新区区委、区政府工作要求,进一步放大进博会溢出带动效应,持续扩大区属企业与进博会重...

关键字: BSP 数字化 自动化立体仓库 智慧园区

上海2024年5月13日 /美通社/ -- 在数字化时代,高效的税务管理和ERP系统成为企业发展的关键。为了满足这一需求商应信息科技与Exact Software 易科软件就金四全电票税系统与ERP系统集成及商务合作建立...

关键字: AC 软件 BSP 数字化

北京2024年5月13日 /美通社/ -- 5月11日,鲲鹏昇腾开发者大会2024期间,华为举办"昇思AI框架及大模型技术论坛",软通动力数字基础设施与集成事业部总经理谢睿受邀出席、软通动力...

关键字: AI 模型 BSP 精度

2023/24 财年收入降至 15.50 亿欧元(上一年同期:17.91 亿欧元) 调整后息税折旧摊销前利润率为 24.8% 居林和莱奥本的半导体封装载板生产将于 2024/25 财年末开始 2024/...

关键字: BSP 半导体封装 印制电路板 汽车

上海2024年5月14日 /美通社/ -- 固特异 SightLine 智能轮胎技术解决方案荣获中国电子行业主流媒体《中国电子报》颁发的 2024 汽车芯片优秀产品奖。本次获奖是对固特异研发成果的高度认可。固特异致力于引...

关键字: 汽车芯片 轮胎 BSP SI
关闭
关闭