您好,我在使用6455时遇到如下问题:在定时周期的数据采集处理流程中,200ms一个周期。周期的处理工作是采集100k*32个数据,处理,然后网络发送出去。6455的emif外接fpga,fpga里实现了一个fifo,adc采集的数据一旦到达一定数量4k*32,会中断dsp,在中断响应函数里,会发一个信号量给readfifo线程。readfifo线程实现就是等待信号量,信号量来了启动edma3搬运fifo的数据到ddr2,搬运完100k后,会发信号量给process线程。readfigfo在ddr内存里面开了两个缓冲区,buf1和buf2,采用乒乓的方式写数据。线程优先级是8。
process线程优先级6,没有readfifo高。process线程使用edma3把数据从ddr搬运到l2,然后处理。
zhiheng wei:
因为200ms周期内,readfifo会8ms执行一次,所以process线程会和readfifo并行执行。例如readfifo往buf2写数据,此时process要处理buf1的数据。当前的现象就是process的数据偶尔会出错,原因定在edma执行。
两个线程的edma使用相同的通道。
Shine:
回复 zhiheng wei:
请问偶尔出错具体是指什么?数据丢失?不使用相同的通道呢?