Hi experts,
Got into a new one recently.
Here is my setup:
DM8168 z3
ARM DSP
Queue Queue
HeapInstance HeapInstance
------------Shared heap-----------------
EZSDK: ezsdk-5_05_01_04
When the ARM knows the DSP queue has been created it opens it, same the other way.
Then ARM & DSP apps do the following,
ARM: MessageQ_alloc : ok
ARM: MessageQ_put : ok
DSP: MessageQ_get: ok
DSP: MessageQ_free: error
This it the error I am getting
N:DSP P:0 #:00004 M:ti.sdo.ipc.heaps.HeapBufMP S:ERROR: line 672: assertion failure: A_invBlockFreed: Invalid block being freed
MessageQ_alloc
The assertion failure details are here, HeapBufMP.c Line 672:
Void ti_sdo_ipc_heaps_HeapBufMP_free(ti_sdo_ipc_heaps_HeapBufMP_Object *obj,
Ptr block, SizeT size)
...
Assert_isTrue(((UInt32)block >= (UInt32)obj->buf) &&
((UInt32)block < ((UInt32)obj->buf + obj->blockSize * obj->numBlocks)),
ti_sdo_ipc_heaps_HeapBufMP_A_invBlockFreed);
Creating both heap instances, when they are registered in the queue objects of each processor I use the same blocksize and numblocks, the only difference in the heap setup is the heap (instance) Id and name.
Can anyone give me directions on this? I made this system work, but the original setup uses a shared heap instance for both queues, now for control/optimization issues we are trying to split the model. Maybe I am still missing something.
Many thanks !
Regards
- Jose Lopez