默れ

BF533—DMA

0
阅读(2629)

在BF533应用过程中,后台需要大量的数据传输,这包括大量的原始图像数据、图像处理中产生的中间数据,这就需要对外部空间适当的外部存储空间来暂时存放这些数据。DMA的存在就很好的解决了这个问题,处理数据时,可以将数据在不同存储空间的转移任务交给DMA来完成,从而使CPU只专注于数据的计算。同时DMA对数据的重排功能可以优化图像数据在内存中的存储,虽然图像数据的传输也可由软件实现,但会消耗大量的CPU时钟周期,从而使DSP的高速性能难以发挥。而由DMA来进行同样的工作却不占用CPU的时钟周期。这是DMA的最重要的优点。

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

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

(2)内层循环计数寄存器(DMAx X COUNT/MDMAyy 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/MDMAyy Y COUNT):该寄存器仅在二维DMA中使用,任务是保存外层循环的数目(或称位列数)。

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