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.

Syslink heap creation failure

I am having some difficulty with Syslink on the C6A816x EVM, using code that is largely cut-and-pasted from the Syslink MessageQ sample, the heap creatiion fails:

DSP message Queue = TaskParamMSGQ_03
ARM message queue = TaskParamMSGQ_30
Heap name = HeapMemMP30
Heap align = 128
Heap Size = 128
Heap Id = 0

Registered remote event number 10 with Notify module for processor 0
Registered remote event number 11 with Notify module for processor 0
Registered remote event number 12 with Notify module for processor 0
Registered remote event number 13 with Notify module for processor 0
Registering heapId 0 with MessageQ for procId: 0
Assertion at Line no: 1087 in /home/lholeva/ti-ezsdk_c6a816x-evm_5_00_00_56/sysl
ink_02_00_00_56/ti/syslink/ipc/hlos/usr/MessageQ.c: (cmdArgs.args.registerHeap.h
eap) : failed
Creating the Host's message queue
Error in MessageQ_create -1 : procId 0
Opening the DSP's message queue

The relevent bit of code (on the ARM side):

  /* Create Heap and register it with MessageQ */
  HeapMemMP_Params_init (&heapMemParams);
  heapMemParams.sharedAddr = NULL;
  heapSize = (  HeapMemMP_sharedMemReq (&heapMemParams)
                    + (theInfo->heapNumMsg * theInfo->heapMsgSize));
  srHeap = SharedRegion_getHeap (0);
  if (srHeap == NULL) {

    status = MessageQ_E_FAIL;
    Osal_printf ("SharedRegion_getHeap failed for %d processor."
                         " srHeap: %d\n",
                         procId,
                         srHeap);
  }
  else {

    ptr = Memory_alloc (srHeap,
                        heapSize,
                        0,
                        NULL);
    if (ptr == NULL) {

      status = MessageQ_E_FAIL;
      Osal_printf ("Memory_alloc failed for %d processor."
                             " ptr: [0x%x]\n",
                             procId,
                             ptr);
    }
  }
  if (status >= 0) {

    /* Register this heap */
    Osal_printf ("Registering heapId %d with MessageQ for procId: %d\n",
                     theInfo->heapId,
                     procId);
    MessageQ_registerHeap (HeapMH, theInfo->heapId);
  }

  /* Construct the local MessageQ for receiving messages from the DSP */
  Osal_printf("Creating the Host's message queue\n");
  MessageQ_Params_init(&mesQP);
  *mesQH = MessageQ_create (theInfo->lMsgqName, &mesQP);
  if (*mesQH == NULL) {
      status = MessageQ_E_FAIL;
      Osal_printf ("Error in MessageQ_create %d : procId %d\n",
                         status,
                         procId);
  }
 

The first block of statements comes from Ipc_readConfig(), so I know that the DSP code is running.  Any idea what may be wrong?

Lee Holeva