DSP 6670的CORE0和CORE1同时加载同一工程,CORE0创建一个堆为HeapMPBuf,CORE1打不开这个堆。出错信息为ti.sdo.ipc.MessageQ: line 135:Assertion failure: A_heapInvalid:heapId is invalid xdc.runtime.Error.raise:terminating excution
Andy Yin1:
您好,
每个核度应该有独立的堆栈,不能共享堆栈。
lihaiyong:
核间通信需要使用共享内存,一个核创建堆,另外一个打开堆,采用的消息机制是MessageQ
lihaiyong:
回复 Andy Yin1:
核间通信需要使用共享内存,一个核创建堆,另外一个打开堆,采用的消息机制是MessageQ
Jarry Kranz:
回复 Andy Yin1:
你好,
“每个核度应该有独立的堆栈,不能共享堆栈。”,这句话的意思是指在使用MessageQ时,每个核心必需要自己分配/注册一个消息堆,然后只能从自己的消息堆上分配消息,再发给其他核心由其他核心释放吗?
但我在linux-c6x上的开发包中看到的MessageQ例程只是由Core0创建并通知其余Cores,其余Cores只是做了注册的动作。
我的MessageQ程序也是这样写的,但却出现了数据负载完全丢失的现象。
能否详细说明下linux+sys/bios时,MessageQ的具体使用方法?