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.

Issues with System Analyser

Other Parts Discussed in Thread: SYSBIOS

Hello everyone,

On C6678 we have a working application using IPC on 2, 4 and 8 cores (one project for 2 cores, another one for 4 and another one for 8). They work fine.

Now we are trying to use the System Analyser to get a better idea of the execution of the program (time spent doing IPC communication vs time spent processing data for example).

We now use CCS 5.3 (we started with 5.1 and just upgraded) and System Analyser works ok with 2 cores and 4 cores (execution graph + UIABenchmark with log_write ).

With 8 cores it doesn't work : the program execution fails, an exception is thrown and the registers values are dumped in the console.

If we remove the LoggingSetup part of the cfg, the program works again.

Any idea to solve this behaviour ?

---
The application uses Notify, 1 task and 1 function, no HWI no SWI, 1 Task_sleep.
Same image for each core
System Analyser 1.1.0.11
Sysbios 6.35
IPC 1.25
CCS 5.3

Here's the cfg :
/* ******* Modules *********/
var MultiProc                       = xdc.useModule('ti.sdo.utils.MultiProc');
var LoggingSetup               = xdc.useModule('ti.uia.sysbios.LoggingSetup');
var Log                                 = xdc.useModule('xdc.runtime.Log');
var System                          = xdc.useModule('xdc.runtime.System');
var SysStd                           = xdc.useModule('xdc.runtime.SysStd');
var Notify                              = xdc.useModule('ti.sdo.ipc.Notify');
var Ipc                                   = xdc.useModule('ti.sdo.ipc.Ipc');
var BIOS                               = xdc.useModule('ti.sysbios.BIOS');
var Task                               = xdc.useModule('ti.sysbios.knl.Task');
var SharedRegion             = xdc.useModule('ti.sdo.ipc.SharedRegion');
var ti_sysbios_knl_Clock = xdc.useModule('ti.sysbios.knl.Clock');
var UIABenchmark             = xdc.useModule('ti.uia.events.UIABenchmark');

/* ********** Modules configuration *********** */
ti_sysbios_knl_Clock.tickPeriod = 1; //1us.

LoggingSetup.eventUploadMode = LoggingSetup.UploadMode_JTAGRUNMODE;
LoggingSetup.sysbiosLoggerSize = 32768;
LoggingSetup.sysbiosSwiLogging = false;
LoggingSetup.sysbiosHwiLogging = false;

System.SupportProxy = SysStd;
System.extendedFormats = '%$L%$S%$F%f';

var nameList = ["CORE0", "CORE1","CORE2", "CORE3","CORE4", "CORE5","CORE6", "CORE7"];
MultiProc.numProcessors = 8;

MultiProc.setConfig(null, nameList);

BIOS.heapSize   = 0x8000;

var tsk0 = Task.create('&tsk0_func');
tsk0.instance.name = "tsk0";

/* ********** IPC modules configuration *********** */
(not shown here)

  • Hi Clement,

       Could you try increasing the amount of stack space available for use by tasks and for the program and see if that helps?  

    e.g. add the following to your .cfg

    /* System stack size (used by ISRs and Swis) */
    Program.stack = 8192;

    Task.defaultStackSize = 4096;

    Regards,

      Brian

  • Hello Brian,

    Thank you for the suggestion, we'll try that as soon as possible (as we're going on vacation for 2 weeks+).

    We found a work-around which is to have 2 code images (one .out for the Master code on core 0, one .out for the Slaves code on cores 1 to 7).
    We don't understand why it works in this configuration.

    I hope your suggestion will work in the single code image case.

    Regards,
    CM

  • Hi Clement,

       Good to hear you are making progress.  One more thing you should be aware of is that there are some additional configuration steps required in order to get a time-correlated view of events across multiple cores while using JTAG as a transport.   This is covered in UIA Tutorial 4.

    (Have a great vacation!)

    Regards,

      Brian

  • Hi Brian,

    Back from vacation. I tried your suggestion about increasing the stack size but it didn't change the behaviour.

    I think we're going to move on to the time-correlation view with the two .out solution.

    Thanks,

    Clément

    PS : do you have any idea when Tutorial 4D will be ready ?

  • Hi Clement,

       I should be able to complete a first cut at Tutorial 4D early next week - I'll post here again when it's online.

    Regards,

      Brian

  • Brian,

    I can see some new things from May 23rd on the System Analyser tutorial 4D. (http://processors.wiki.ti.com/index.php?title=System_Analyzer_Tutorial_4D)
    I guess they are from you.


    I hope you'll finish it soon. Keep it up.

    Clement

  • Hi Clement,

      I've finally finished the first cut at Tutorial 4D - please let me know if you have any questions or suggestions for additional topics you'd like to see covered in this.

    Thanks for your patience!

    Regards,

      Brian

  • Hi Brian,

    Thank you for the tutorial 4D. It really helped understanding the necessity of log sync and I learned a few other things too (synced groups, effective way to know the frequency, ...).

    I started a new thread dedicated to feedback on the tutorial 4D.

    Let's continue the discussion about it there : http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/267677.aspx

    Here ("Issues with SA" thread)  I'll continue to keep you informed on my attempt to use the system analyser in a 8 core application with event correlation (as of today I have a good execution graph for each core but it's not synced yet) and IPC.

    Regards,

    Clément

  • Hey Brian,

    Today with another colleague, we tested adding

    var LogSync = xdc.useModule('ti.uia.runtime.LogSync');
    LogSync.enableEventCorrelationForJTAG = true;
    var Idle = xdc.useModule('ti.sysbios.knl.Idle');
    Idle.addFunc('&ti_uia_runtime_LogSync_idleHook');

    in the cfg of a 2 cores application using Notify.

    Without it : No multicore synchronisation on the execution graph
    With it : it worked, synchronisation on the graph.

    On this workstation we use CCS 5.4

    I had failed using it on a 4-cores application. The synchronisation didn't work.
    It was on CCS 5.3

    I'll try again for the 4-cores application.

    I'm glad it worked for the 2 cores one, it's a good start !