TI中文支持网
TI专业的中文技术问题搜集分享网站

OMAPL138的uPP乒乓缓存下的数据如何交给DSP处理

前几天用下面的程序段实现了数据的乒乓缓存:

while(1){
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_test[pingpong_buffer_num];
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(upp_buffer_ping[0]);
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(upp_buffer_ping[0]);

while((upp_reg_hdl->UPIS2 & CSL_UPP_UPIS2_PEND_MASK) == 2){};

pingpong_buffer_num = pingpong_buffer_num + 1;
upp_reg_hdl->UPID0 = (Uint32)upp_buffer_test[pingpong_buffer_num];
upp_reg_hdl->UPID1 = ((Uint32)upp_line_count << 16) | (Uint32)upp_line_size*sizeof(upp_buffer_pong[0]);
upp_reg_hdl->UPID2 = (Uint32)upp_line_offset*sizeof(upp_buffer_pong[0]);

while((upp_reg_hdl->UPIS2 & CSL_UPP_UPIS2_PEND_MASK) == 2){};

pingpong_buffer_num = pingpong_buffer_num + 1;
}

其实我是想利用乒乓缓存,在前一个buffer收满后,将接收到的数据交给DSP处理的同时进行下一个buffer接收。

于是我先实现了这样的一个乒乓缓存(每进行一个DMA都会进入一次中断处理函数)可以连续接收数据了,然后想想办法将数据交给DSP处理,可是这样的程序段该添加在什么位置才不会影响数据的连续接收呢?

Tony Tang:

现在的程序是在ARM端吗?如果是,你可以通过ARM给DSP发中断,通知DSP处理,反正数据都是在内存上,不需要再做搬运,互相约定好数据在什么位置就好了。

你得评估一下处理一帧数据算法要用多长时间,看能否做到实时处理,不然中间有些数据会丢掉的。

赞(0)
未经允许不得转载:TI中文支持网 » OMAPL138的uPP乒乓缓存下的数据如何交给DSP处理
分享到: 更多 (0)