OMAP5910实时图像系统中的DMA数据传输
引言
实时图像处理系统的显著特点是数据量大,有效地处理和传输图像数据是实现实时图像处理系统的关键,ti公司推出了高性能多媒体双核处理器omap5910,是将高性能、低功耗的tms320c55x
dsp与控制性能很强的arm925微处理器集成到同一芯片器件中如何有效地发挥双核的优势,合理利用omap5910的各种内存配置dma控制器实时、高效传输大规模的图像数据是本文研究的重点。
1 omap5910的内存管理
由于omap5910支持多种内存,因此在设计dma传输方案时,必须对omap5910的内存管理有一个详细的了解。
omap5910的mpu存储器片内集成了192kb的sram,dsp存储器片内集成了64kb的双向daram,96kb的单向saram,32kb的程序存储器pdrom,mpu和dsp子系统的存储器映射情况如图1所示[1]。通过emiff和emifs接口,omap5910可以访问片外存储器,但访问片外存储器的速度与访问片内存储器的速度差别很大。
omap5910的片内存储器主要由存储器管理单元tc管理。tc管理mpu、dsp、dma以及局部总线对omap5910系统存储资源(sram、sdram、flash、rom等)的访问,它的主要功能是确保处理器能够高效访外部存储区,避免产生瓶颈现象而降低片上处理速度,tc通过3种不同的接口-emifs、emiff或imif,支持处理器或dma单元对存储器的访问.其中emifs接口提供对flash、sram或rom的访问,emiff接口提供对sdram的访问,imif接口提供对omap5910片内192kb
sram的访问,3种接口是完全独立的[2],从任何一个处理器或dma单元都可以同时访问。
arm核访问dsp核的数据或内存空间,需要arm和dsp之间进行通信,主要有3种方式支持内部双核间的通信,第1种方式通过双核共享邮箱寄存器mailbox来实现,arm和dsp均可以通过mailbox触发对方中断,并同时传递两个16位的参数,以通知对方自己的状态或传递某种请求,第2种方式是mpui方式,arm通过主机接口获得对dsp存储空间和i/o空间的访问权,由arm完成数据在双核间的搬移,第3种方式是设置dsp的mmu,将dsp的外部存储空间映射到omap5910系统存储资源中,共享dsp的地址空间,由dsp完成双核间的数据搬移。

2 omap5910的dma控制器
omap5910的dma控制器对实时图像处理系统非常重要,它可以在没有cpu参与的情况下完成映射存储空间中数据搬移,灵活的使用dma控制器可以大大提高数据传输效率。
omap5910的dma控制器进行通用功能传输时的特点如下:
1)单通道分割操作,具有通用和专用信道,不同的硬件资源端口。所有的数据交换都通过请求(request)、准备就绪(ready)、中止(abort)信号进行握手。dma信道是时分复用的,其传输的基本流程如图2所示。

2)多帧传输。传输的每个数块可以有多个数据帧。传输的数据大小为8位、16位和32位。可按字节打包、拆包、并对传输的字节计数。可访问所有的存储器地址空间(物理地址映射和i/o空间)。
3)dma的读、写和帧操作都有中断触发,每个dma物理通道都可以产生一个中断,使处理器对本次传输的状态作出反应,所有的dma中断都是电平中断[4]。
4)后台传输、高吞吐率,dma可独立于cpu工作和以pcu时钟速度进行数据吞吐。
实时图像处理系统的图像数据很大,同时图像处理过程中也也会产生大量的中间数据,而omap5910的片内资源有限,不能容纳帧的图像数据和中间数据,所以大量的图像数据必须存储在片外存储器中,为了保证系统的实时性,由dma负责完成数据在不同存储空间的搬移,不必占用cpu的时钟周期,避免cpu大部分时间堵塞在对外存的访问上,同时dma对数据重排功能可以优化图像数据在内存中的存储,这不仅可以提高内部存储空间的利用效率,而且可以提高数据的传输速率。
3 omap5910内、外存储器数据交换分析
一个完整的实时图像处理不仅能对图像进行实时采集,还能对图像进行实时处理,该实时图像处理系统主要由图像传感器、a/d转换器,复杂可编程逻辑器件fpga、omap5910双核处理器,图像显示设备等构成。该系统的主要功能是fpga实时接收红外焦平面阵列传感器输出的14位视频信号,降频后由omap5910的dsp处理器执行图像处理算法,同时,omap5910的arm处理器执行复杂控制指令,再由fpga缓存,经d/a变换合成10位视频信号输出,另外,omap5910的arm处理器通过接口接收计算机的控制指令。
按照人眼的视觉要求,成像系统每秒钟至少要采集和处理25帧图像数据,才能避免图像实时显示时的视觉闪烁感,。对于320×240的点阵图像,a/d为14位,每帧采集数据为320×240×14位=1
mb,按实时性的要求,进行处理和显示数据的速度为320×240×14位×25帧/s=3.125mb/s,即需要在64μs内完成读1行(320像素)和写1行(346象素)的操作,只有这样图像才不失连续性。
为了保证图像处理和显示的实时性,应充分利用omap5910的各数据传输通道,omap5910的片内、外存储器的数据传输,如图3所示,图中给出了omap5910处理实时图像时的所有数据传输通道,他们的传输速率与存储器的类型有关。为了充分认识omap5910的数据传输通道的性能,笔者做了一系列的实验,设置系统时钟为150mhz,工作模式设为全同步模式,使能ca
che的前提下,详细测试了各传输通道传输1帧数据所用的时间,如表1所列。以此为依据来优化数据的传输。


4 dma方式数据传输优化方案
在详细分析各数据传导的数据传输速率性能的基础,本文提出了一种dma方式的数据传输优化方案,把整帧划分成多个块,omap5910待处理的图像数据完全放在omap5910的片内数据存储器中进行处理,既减少了与外存的大量交互,又充分利用了片内的高速存储资源,在内外存之间的数据传输使用dma在后台进行操作,大大提高omap5910的工作效率。
4.1 数据流程
a/d采样的数据首先存放在外部缓冲中,当采集到一定的数据量后,由复杂可编程逻辑器件触发arm dma读取数据,依次输入两帧图像保存在sdram中,从外挂flash中取得进行图像处理所需的参数a、b值保存在sdram中,与输出帧存以8行为块单位,触发dsp
dma将块数据从omap5910的外部缓存区sdram搬运到dsp核的双向内部缓存区daram,以供dsp核进行计算。有关dma方式传输的特点,dsp核进行计算的同时,dsp
dma搬运上一块的图像数据(8行)到sdram,arm核接收到输出行数据后,触发arm dma把数据搬移到fpga控制外部存储区,数据流程如图4所示。

由于omap5910内部和外部都采用双缓冲机制,因此arm核和dsp核处理的dma传输上一帧数据的同时,不影响dma进行当前帧数据的传输。这样整个系统中a/d数据的采集,dma数据的传输及cpu数据的计算达到了高度的并行性。
4.2 操作时序
从数据传输的操作时序上,可以看出该优化方案另一个优势,将原来的几个输入过程(每个输入过程指的是输入1行像素)合并为1个输入过程(1次输入几行像素),并且将原来集中完成的输出过程分散到输入过程中间完成,进一步提高的性能。
具体配置操作为:omap5910中arm dma读过程1次输入12行数据,用20次将1帧图像输入到sdram中。arm dma的写过程在读过程中间启动。即1帧中的第1次dma读过程结束的中断中启动行号和帧号的添加以及
dma的写过程,这一次只写2行,在1帧中的第2次到第20次dma读过程结束的中断中启动写过程,每次写15行,其操作时序图5所示。

具体的时间计算是:读12行数据为17.07μs×12=204.84μs,写15行数据为27.68μs×15=415.2μs,1次读写及中断的处理所需时间为204.84μs+415.2μs≈700μs,1次读写及中断的处理允许时间为68μs×12=816μs。经计算700μ<816μs,能够保证实时图像处理系统的实时性。
5 优化方案中的代码设计与实现
5.1 arm端的主程序
arm核主要实现omap5910系统的配置,与fpga接口的数据输入/输出,与sdram的数据保存、帧模式的控制与转换等优化方案的功能[5]。
5.2 dsp端的主程序
dsp核主要实现dsp dma在i sram和daram之间数据的输入/输出,红外图像的两点校正算法和疵点剔除等算法,以及红外图像的亮度和对比度参数的计算等功能[6]。
5.3 调试与配置dma通道的经验总结
1)测试dma通道的数据传输是否正确,可编写sdram到sdram的内部dma数据搬移测试程序来初步测试dma通道的初始设置和数据传输是否正确。
2)测试dma与fpga接口数据的传输速率,示波器读取读信号或写信号的效率时,应注意查看读信号和写信号的个数是否是传输数据的个数。
3)测试dma的外部中断,外部中断的引脚是复用引脚,应提前设置此引脚。
4)测试dma操作的读操作和写操作的相互配合,查看输出的传输是否正确。
5)使用指定内存不同的数据测试视频图像的输出是否正确。
6)dma中断的触发事件是上升沿有效。
7)为保证dma传输数据的完整性,要对dma的优先级进行设置。
结语
实时图像处理系统实现了此数据传输的优化方案,实时显示图像的速度为25帧/s,图像的视觉效果比较理想,通过灵活地控制dma,不仅能够提高图像数据的传输效率,而且能够充分发挥omap5910的高速性能。
评论