工程师,你好:
我使用的是DSP是6678,在TI提供的例子基础上自己修改了NDK和IPC都没有问题,把两个合起来老出问题,基本上都是Heap的问题,HeapMP和Heap我分别都例化了一个。IPC使用的HeapMP和单核时的Heap是不是不能同时使用?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工程师,你好:
我使用的是DSP是6678,在TI提供的例子基础上自己修改了NDK和IPC都没有问题,把两个合起来老出问题,基本上都是Heap的问题,HeapMP和Heap我分别都例化了一个。IPC使用的HeapMP和单核时的Heap是不是不能同时使用?
感谢Andy的回答,经过最近的测试,情况如下:使用的IPC工程的模板是RTSC的基于MessageQ的多核工程,要实现的功能是0核与其他7个核的通信,起初没有问题,后来加了部分代码后出现问题,具体为:0核动态create了HeapBufMP,其他核通过HeapBufMP_open函数访问,有时会运行到HeapBufMP_open函数当中无法出来,却在一直停留在Idle Thread中。可能会是什么引起了以上问题?
另外,是不是IPC当中的Notify使用的是不是核间中断的机制?MessageQ使用的是什么原理呢?MessageQ与QMSS有没有关系?
HeapBufMP_create是成功的,HeapBufMP_open函数被阻塞,得不到返回值。单步调试时发现的是在HeapBufMP_open中的NameServer_getUInt32函数进入了Idle中。由于使用的是TI的库函数,IPC文件夹下的源码与库版本不同,看不到库函数源码,无法准确的跟踪错误。
两个heap name是一样的,如果改成不一样应该是返回找不到的值,但现在也是被阻塞。之前是好的,稍微加些代码就不行了,很奇怪。源码的版本和库函数的版本不同,有些函数不太一样,只能看个大概,还不能单步调试。