Other Parts Discussed in Thread: SYSBIOS
Hi,
Platform:EVM6472
XDCtools version: 3.20.04.68
IPC: 1.21.02.23
BIOS: 6.30.03.46
XDAIS: 6.25.01.08
CCS Version: 4.2.0.10018
Based on the MessageQ example(C:\Program Files\Texas Instruments\ipc_1_21_02_23\packages\ti\sdo\ipc\examples\multicore\c6472), I create a large heap(size = 0x8000000) because I want to allocate a large buffer buf(1024*1024) using Memory_alloc in core0 in the future. Now I just modified .cfg file as follows.
/* Create a Heap. */
var heapMemParams = new HeapMem.Params();
heapMemParams.size = 0x8000000;
heapMemParams.sectionName = "systemHeapMaster";
Program.global.heap0 = HeapMem.create(heapMemParams);
Memory.defaultHeapInstance = Program.global.heap0;
Program.heap = 0x1000;
Memory.defaultHeapSize = 0x8000000;
Program.sectMap["sysmemHeapMaster"] = "DDR2";
/* Shared Memory base address and length */
var SHAREDMEM = 0x200000;
var SHAREDMEMSIZE = 0xC0000;
var SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
SharedRegion.setEntryMeta(0,
{ base: SHAREDMEM,
len: SHAREDMEMSIZE,
ownerProcId: 0,
isValid: true,
cacheLineSize: 64, /* SL2 memory has a cache line size of 64 */
name: "SL2_RAM",
});
But six cores can't send and receive messages. I add System_printf sentence after HeapBufMP_open and find the problem.
do {
status = HeapBufMP_open(HEAP_NAME, &heapHandle);
System_printf("status=%d\n",status);
} while (status < 0);
Core1,core4 and core5 get status = 0. But core2 and core3 loops at HeapBufMP_open function and print nothing.
The heap I created just reflect buf created through Memory_alloc. Why doesn't HeapBufMP_open work? Who can tell me the reason?