想请教下几个问题,
1.核间通信采用IPC模块和Navigator机制分别优缺点是怎么样的,能否给些建议?
2. IPC模块的提供的messageQ的通信方式,底层的机制是否调用的multicore navigator? 还是说和QMSS无关,走的另一套机制?
3. 关于IPC模块通信,比如messageQ的通信方式,对于arm和dsp来说,如果采用不同的大小端模式,这个传输的数据会主动做匹配吗?
谢谢!
Andy Yin1:
IPC module可以理解为一个类似于NDK的核间通信协议栈,底层可以支持shared memory,Navigator及SRIO等多种硬件方式,可以由用户在cfg中进行配置选择,可以参考IPC user guide。
IPC module由于做了封装,其效率不如直接使用navigator,但是由于IPC module封装之后对应用的API都是一致,底层可以根据需要配置使用的通信方式。
核间通信只是做数据传输,应用给什么数据就是什么,不会做格式转换。
xiaoling zhou:
回复 Andy Yin1:
如果使用了IPC,是否还可以直接调用Navigator进行其他的通信数据传输?
换句话说,假设场景:DSP-ARM之间的通信使用IPC机制进行通信,而DSP内部直接调用Navigator进行数据的传输,这样可行吗?
这个IPC封装了Navigator,上述的混合使用情况会导致底层的资源出现冲突的情况吗? 比如Navigator的queue,memoryRegion的资源等等。如果采用这种混合模式,是否必须了解IPC对Navigator的资源使用情况?
Andy Yin1:
回复 xiaoling zhou:
可以同时使用。在IPC使用navigator进行核间通信时上层可以指定所用的queue等资源,非IPC module在使用navigator时避开这些资源即可,否则会产生资源冲突导致出错。
xiaoling zhou:
回复 Andy Yin1:
IPC上层通信指定queueId,是否存在其他的QMSS资源没有被指定?是否要修改ipc底层的封装的QMSS LLD才能避开资源冲突?
2. 看到IPC除了messageQ还有其他的ListMP的方式,ListMP是否只是通过共享内存的方式来做数据传输,共享,而 messageQ是否一定是封装了QMSS LLD? 看wiki介绍,好像没有说明是QMSS的方式,有没有可能messagQ是通过非QMSS的方式进行通信?