DM642无线图像传输的TS流传输新技术
进入中断,如此则解放出CPU,以使算法占用它。
2 TS流传输实现
2.1 McBSP实现
McBSP由数据通道和控制通道组成,可以与外部设备连接,进行数据通信。数据的接收与发送分别工作于不同的引脚上,因此数据通信是全双工的。其他的4个引脚用于传输控制信号(时钟和同步信号)。
这里采用EDMA进行McBSP与存储器缓冲区之间的数据搬运。EDMA控制器读取从外部设备接收到并保存在DRR(数据接收寄存器)的数据,或者将需要向外部设备发送的数据写入DXR(数据发送寄存器)。被写入DXR的数据经过XSR被移出到DX脚上。同理,接收的数据先被移入RSR,然后被拷贝到RBR,最后再被拷贝到DRR,这时就允许被EDMA访问了。McBSP中内部数据的移出和外部数据的移入可以同时发生,即可以进行全双工的数据通信。
以EDMA接收数据的配置为例,配置参数RAM。EDMA通道接收数据源地址为McBSP0的DRR寄存器,地址计数模式为不变模式。设置EDMA通道接收数据目的地址为DSP片内存储区PingBuffer首地址,确保第一次传输数据是到PingBuffer,地址计数模式同样为递增模式。配置源地址计数索引值,由于源地址为McBSP0的DRR寄存器,固定不变;配置目的地址计数索引值,由于接收数据为32位,所以srcBidx=srcCidx=4,这是因为DSP内的最小计数单元为1个字节,8bits;配置剩余的参数RAM传输参数,包括设置ACNT=4,BCNT=2 048,CCNT=1,采用一维传输A-SYN C。
接下来是ping-pong传输的程序实现。替ping-pong各自分配1个通道,于是一共有3个通道,对应3个参数RAM。ping通道的参数RAM与主通道的参数RAM完全一致,pong通道的参数RAM与主通道相比,只需将pong通道接收数据目的地址改为PongBuffer首地址。随后调用EDMA_link三次,分别将主通道和ping通道连接,ping通道和pong通道相互连接。EDMA中断设置与GPIO输出任务一样。
2.2 GPIO实现
TS流输出任务采用1D到1D的传输模式。SUM=01,DUM=00,即源地址是188字节的Buffer,目的地址是GPIO[8:15]对应的寄存器,GP4的外部触发EDMA传输,传输188字节产生1次EDMA中断。队列优先级设置为紧急,来保证时序。以EXTINT5为EDMA触发事件:
pong的参数RAM设置类似,只要将源地址改为pong,并将重载的参数RAM地址改为edmacfg_pong即可。
DM642中,EDMA的64个通道只产生一种中断。当一个通道传输完成后,IPR(Interrupt Pending Register)寄存器里的相应位会被置1,EDMA中断处理器通过查询IPR寄存器,确定是哪个通道完成了传输,并调用相应的中断服务程序,即tccCb(回调函数,即通道传输完成后所调用的中断服务程序)。tccCb=edma_isr,该函数的作用是当一个接收Buffer被填满时,在通道传输完成后发送一个旗语信号给信号处理程序,通知其对收到的数据进行处理。参数RAMOPT中TCINTEN位置1,以使能EDMA中断。随后,利用DSP/BIOS将EDMA中断源和DSP的可屏蔽中断5连接起来。编写相应通道的EDMA中断程序,传输完一个TS包后,检查是否1帧图像的TS流传完,用以生成数据有效信号(Dvalid),通知接收方哪些是有用数据。由于选用了DM642的可屏蔽中断5,还需使能IER寄存器里的对应位。
TS流输入则只需要将SUM=00,DUM=01,目的地址和源地址交换,再将EDMA中断程序中目的地址变更到188字节后的地址。采用GP4作EDMA同步事件(即SPI时钟),GPIO[8:15]作数据输入,GP7作同步,采用GP6作外部中断,用作数据有效线。在外部中断中重载,在传输完成中断中改变目的地址。如此则可顺利接收到TS流。
采用Link的ping-pong方式,利用两个参数RAM反复转载得到TS流的数据:在此采用的双缓冲结构,即在DSP缓冲区内开辟两块缓冲用于并行处理FPGA通过McBSP传过来的数据。当EDMA往PingBuffer里传输数据时,CPU即可处理PongBuffer里的数据。当工作完成后,彼此交换缓冲区,EDMA往PongBuffer里写数据,CPU处理PingBuffer里的数据。为了实现双缓冲结构,采用了EDMA提供的Link功能,如图3所示,即将不同的EDMA传输参数RAM连接起来,组成一个传输链。在传输链中,一个传输的结束会导致自动从参数RAM中装载下一个传输需要的事件参数。在具体程序中,只需将ping通道的参数RAM连接到pong通道,同时将pong通道的参数RAM连接到ping通道即可。
2.3 ping-pong操作的改进
由于原来程序McBSP通过EDMA传输到ping或pong中,在EDMA传输完成中断的过程中还需要复制数据(memcpy)到公共缓冲区。复制数据是一个很费时的过程,但程序不宜停留在中断的时间过长,故而希望EDMA能直接传到公共缓冲区中。
如图4所示,在建立McBSP和EDMA通信时,将ping目的地址改变成公共缓
- 新一代移动通信系统及无线传输关键技术(06-19)
- UWB超宽带传输技术及其应用简析(03-18)
- TD-SCDMA光传输网络建网思路探讨(07-19)
- SDH微波传输中的同步时钟(01-06)
- ZigBee无线传输技术综述(09-13)
- 一种嵌入式射频光传输模块实现方案(03-12)