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.

Concerto IPC example locks up

Other Parts Discussed in Thread: CONTROLSUITE

I am trying to get the controlSUITE code example ctom_ipcdrivers_lite to run correctly.  I am using a recent version of controlSUITE (how do I see the version number? The file property version number is 1.2.0.0) and CCS version 5.1.0.09000.  I am using the controlCARD TMDXCNCDH52C1 with the XDS100v2 emulator. I am able to load, flash and run ctom_ipcdrivers_lite_28 and ctom_ipcdrivers_lite_m3. 

If I step through _m3 first, it hangs at

IPCMtoCBootControlSystem(CBROM_MTOC_BOOTMODE_BOOT_FROM_FLASH);

I tried removing that line of code, since I was running the C28 from the debugger.  When I tried that, the _m3 program would make it all the way to the infinite for(;;) at the end of Main().

If I tried stepping through the _c28 code first, it would hang at

while (!IPCMtoCFlagBusy(IPC_FLAG17)) ;

as expected.  If I ran _m3 past where it sets that flag, the _m28 would proceed to

while (IPCLiteCtoMGetResult(&usRWord16,IPC_LENGTH_16_BITS, IPC_FLAG32) != STATUS_PASS)

and hang there as expected.  What did not happen, as I would have expected, was that the _m3 code never hit the breakpoint that I placed at the beginning of

CtoMIPC1IntHandler(void)

Instead, the console would display the error "Device is locked up in Hard Fault or in NMI." etc.  Restarting CCS was necessary to clear this error.

I tried running the two programs in different order as per http://e2e.ti.com/support/microcontrollers/tms320c2000_32-bit_real-time_mcus/f/171/t/148597.aspx?PageIndex=2

but that did not help.  I tried the ctom_ipcdrivers (not lite) and had the same problems.

Can someone verify that this dual project works correctly using CCS 5.1 and debugging both cores?  I did not try running with the debugger disconnected because there would be no way of telling if it was working or not. Is it possible and useful to run the debugger on the ARM while the C2000 is running without the debugger?

Thanks in advance for any help.

 

 

  • Some more information for the problem above:

    SOMETIMES, not always, in the _c28, the IPCMtoCFlagBusy(IPC_FLAG17)) function ends up in the ILLEGAL_ISR() function.

    When it gets past the above function, IPCLiteCtoMDataWrite(...) returns STATUS_PASS.

    The ctom_ipcdrivers_lite example project works correctly.

     

  • Hi Don

    please refer to posts in page 3 and 4 of http://e2e.ti.com/support/microcontrollers/tms320c2000_32-bit_real-time_mcus/f/171/t/126824.aspx?PageIndex=1 

    the above link has some tips on how to debug dual core and how to make sure your device boots up in stand alone.

    one basic rule is - make sure the other core is running properly before sending an IPC and expecting answer from it.

    Please let us know if above doesn't help.

     

    Best Regards

    Santosh

  • I followed your steps in the above link but the ctom_ipcdrivers_lite_m3.c interrupt handler (CtoMIPC1IntHandler) is still not getting called.

    I removed the c28x Gel script. (step 5).

    I verified that _c28 was paused at an IDLE in the disassembly (step 8).

    I verified that _m3 hit a breakpoint at IPCMtoCBootControlSystem(CBROM_MTOC_BOOTMODE_BOOT_FROM_FLASH); (step 10).

    But, as stated before, I never hit the breakpoint in the interrupt handler that receives the message from the c28x.

    Could someone verify that the ctom_ipcdrivers_lite example project works on this TMDXCNCDH52C1 controlCARD?  I assume that this problem is unique to my system, but since I did little but import and attempt to run the projects, I don't know why it would fail.  Another example project, blinky_m28 failed on my system as well as on a TI employee's system, so I am not confident that these examples have been thoroughly tested on my specific configuration.

     

  • Don,

    For this example I also recommend you switch over to the RAM build config when you have the debugger connected (leave the GEL script enabled).  You will still need to comment out the IPCMtoCBootControlSubSystem functional call, but otherwise the example should work (run the C28 side first).  I just tested this here on my machine and had success.

    One thing to note the call to the boot command function should be gated with an #ifdef _FLASH.  This must have slipped through the cracks.  I will get this fixed in the next controlSUITE release.

    Trey