终于跑通了一个ARM端视频采集,DSP端视频处理的程序。
我测试了DSP的处理能力。他的计算能力远远超过ARM端。在保证实时处理的前提下,ARM端能够对每帧图像处理10万条指令。而DSP端能够对每帧图像处理100百万条指令(也就是每秒大约处理2500百万指令),是ARM计算能力的1000倍。根据前人的研究结果,6446在流水线技术下可以达到4800MIPS(MIPS:百万条指令每秒)。听起来好像很强大,但其实细细一算,实际应用中并不是那么乐观,在实时要求下,一秒钟要处理25帧,每一帧720*576=414720个像素点。如果每一个像素点对应一个指令。那么就是25*720*576 约=10MPIS。根据我的测试2500百万指令计算,在一个for(i=0;i<720;i++)for(j=0;j<576;j++){ 指令。。 }这么个循环体内,指令数量应不超过250条,如果是4路视频处理的情况下,则不能超过60条指令。在不做算法优化情况下,应该把循环体内的代码数量控制在50条之内。
因为我们得到的数据未作分离,是放到DSP端去提取数据,一般的赋值语句和memcpy函数会占用非常大的dsp资源。所以,我想必须通过EDMA来做这个数据搬移和提取的事情,EDMA不占用dsp的cpu资源。