Part Number:AM2732
工程师,你好
我想要在函数DPC_ObjectDetection_execute中处理完1D FFT后使用IPC 进行R5F和C66X的同步,达到在R5F实现回灌压缩1D FFT数据的目的;我在DPC_ObjectDetection_execute中函数DPU_RangeProcHWA_process后使用函数RPMessage_send函数向R5F0_0发送IPC信号,使用的header.id为10,同时修改DPM_MessageId_MAX的值为11,并在gDPMMessageFxnTable中增加了一个处理header.id=10的函数,在该函数中将由R5F0_0向C66X发送一个IPC信号,进行同步;测试发现,R5F在每个雷达信号帧处理时都能接收到C66X发送的header.id=10的IPC信号,但是使用对应的处理函数向C66X发送IPC信号时出现了问题,am273x的C66X在上电后运行2帧就无法正常运行了,在第3帧中,R5F0_0不能收到C66X的同步信号;由于我在C66X上创建了一个task用于接收IPC信号,而不是在DPM_execute的context下,所以我在函数DPM_pipeSend中进行了判断,当header.id=11时将不会释放信号量,SemaphoreP_post(&ptr->semaphoreHandle);C66X在第2帧以后的运行状态不正常;请问是什么原因导致的?还有没有别的方法实现R5F和C66X的同步?
谢谢
Cherry Zhou:
您好,您的问题我们需要升级到英文论坛寻求帮助,如有答复将尽快回复您。
,
ZhiQiang Lin:
Hi,Cherry
我尝试了一下分别在C66X和R5F0_0上建立单独的TASK和SDK中初始化的DPM无关的情况下,可以正常进行IPC通信;后面通过检查发现,在我原来的C66X的task中,获取到来自R5F的IPC信号后,有个标志位没有被清除,导致第二帧运行过程中,在没有将我自己定义的IPC信号从Queue中Dequeue时标志位就已经为Set状态了,给第三帧及以后的DPM_execute带来了影响,导致C66X无法正常运行;在我清除掉该标志位后,现在可以正常实现IPC通信了;
谢谢