我用6678处理数据,中间需要同步,从核发message给主核,当主核收到全部从核的message,再各个发回。但是这太慢了,
if (MessageQ_put(reply_queue_id, (MessageQ_Msg)p_msg) < 0) {
printf("%s: MessageQ_put had a failure error\n", receive_queue_name);
goto close_n_exit;
}
一个以上语句就需要大约50ms,伤不起啊。请问有没有其他的同步方式能快一些啊?
另外,edma3 只能申请三个channel ,edma3init函数里面会对此判断,
if ((edma3Id >= numEdma3Instances) || (errorCode == NULL))
return hEdma;
我将numEdma3Instances改为9也不行,是不是需要重建函数库啊?求专家详解!小弟在此谢过了!
Thomas Yang1:
Keystone 多核同步的方式有很多,比如:
1)采用share memory 方式
2)采用Navigator 的IPC功能
3)采用核间中断的方式
Keystone中EDMA3支持3个CC,CSL库函数中的设置是和硬件的资源相关的,你需要按照芯片对应的CSL库接口去调用
Ryan KU:
回复 Thomas Yang1:
Thomas Yang您好:
关于多核同步我有两个问题想向您请教:
1. share memory是各个内核共享的资源,那具体可以通过什么方式实现多核的同步呢?
2.如果通过IPC核间通信实现内核同步是否必须使用SYS/BIOS的方式呢?
谢谢!
yang cao1:
回复 Thomas Yang1:
谢谢Thomas Yang1,请问share memory 方式是如何实现同步的?mesage是ipc中得一项,只是太慢了。您说的这三种方式那种最快呢?
haotian chang:
回复 Thomas Yang1:
share memory 的方式有参考例程吗