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.

No Capture Data?

Guru 15580 points

Other Parts Discussed in Thread: OMAP-L138

I have succesfully compiled and debugged a sample program using DSP/BIOS 5.41.07.24 on the OMAP L-138 eXperimenter kit. I am trying to take a look at some of the real time statistics but there does not appear to be any data captured. Is there switch somewhere that I need to turn on to begin capturing data? Section 3.8 of the DSP/BIOS User Guide states that " The instrumentation needed to allow the DSP/BIOS Analysis Tools to display the raw logs, system statistics, and CPU load are built automatically into DSP/BIOS program to provide implicit instrumentation.". It also shows a picture of the RTA control panel with a row of check boxes:

However, my RTA control panel does not have these check boxes:

Can someone give me guidance as to what is wrong?

thx

MikeH

  • Are you asking about gathering these statistics at run-time using RTDX?  If so, it will not work using the integrated XDS100 emulation since XDS100 does not support RTDX.  However, it should work using "stop mode" RTA.  More info related to RTA troubleshooting can be found here:

    http://processors.wiki.ti.com/index.php?title=DSP/BIOS_Real-time_Analysis_%28RTA%29_troubleshooting

  • "Are you asking about gathering these statistics at run-time using RTDX?"

    Simply at run-time using RTA.

    I have read the entire DSP/BIOS User Guide and cannot find this config window. Where is it? I am using CCS4.

  • OK. I found this important, but well hidden config window. And I *do* have all three boxes checked as show above. Any ideas what may be causing the lack of captured data?

  • I think Brad's answer is what you're looking for. Run-time RTA data is delivered to the host over RTDX, and it sounds like RTDX is not supported by the emulator you're using.

    If you have BIOS 5.41.04 and CCSv4.1 or later, you should at least see the RTA graphs update when you halt the target ("stop mode" RTA).

    Chris

  • Let me make a brief distinction for you Mike.  RTA is what logs a bunch of data into buffers on the target at run-time.  In other words, it is constantly gathering statistics but only the target has access to them.  RTDX is the transport mechanism which would give you visibility into those buffers at run-time.  However, XDS100 does not support RTDX so although you can gather the data at run-time, the only time you can view it is when you halt.

    That said, can you see the data when you halt?  If not, there's still an issue here!

  • Brad's answer was not the answer I need. I do understand the RTA is delviered via RTDX for real-time viewing. However, as you point out, I am looking for simple RTA graphs and statistics since my emilator does not support RTDX. However, I am not getting graph data nor statistics data.

    Please take a look at the attached project. Let me know if you see a problem. There is no data for my sample STS capture.

    7536.test_audio3.zip

  • Unfortunately, statistics and CPU load cannot be gathered by stop mode. The STS objects need to be serviced at a periodic rate for the data to be valid, so this is only supported by run mode.

    Are you at least seeing printf logs come up? This is terrible, but, you might be able to write some target code to periodically read the STS objects and do a LOG_print of the results.

  • Chris,

    Can you point me to a matrix of emulator vs DSP/BIOS module support? I was not aware that my emulator does not support STS since it was working briefly at one time.

    MikeH

     

  • I can't point you to a matrix, but it is documented that XDS100 does not support RTDX:

    http://processors.wiki.ti.com/index.php/Xds100v2#Features_NOT_supported.C2.A0

     

  • Brad,

    It is very clear that XDS100 does not support RTDX. So, are there any DSP/BIOS functions that I *can* montor with XDS100? If so, what are they?

    MikeH

  • You can see the output of LOG when you halt the processor.  That's what Chris was getting at before when he mentioned using a LOG_printf to output some of the STS values.

  • You should be able to see any LOG_print statements when you halt the target. Also, all of the events logged by the BIOS modules (TSK, SWI, HWI, etc.) should show up in the "Raw Logs" view when you halt the target.

    Chris

  • Chris,

    "You should be able to see any LOG_print statements when you halt the target"

    Yes, this works but it does nothing but give me information that the LOG_print statement was reached during program execution.

    "Also, all of the events logged by the BIOS modules (TSK, SWI, HWI, etc.) should show up in the "Raw Logs" view when you halt the target."

    This is precisely what I am trying to get working, but it does not show up in the Raw Logs screen after I halt the target. This is where I need your help.

    MikeH

     

  • Please report back the following info:

    1. In CCS go to Help -> About.  Which version do you have?
    2. From the Help -> About screen click on "Plug-in details".  Please report the version of these components near the bottom:
      • XDC RTA Plug-in
      • XDCtools RTA
  • Brad,

    1. CCS  - Version: 4.1.3.00034

    2a.  XDC RTA Plug-in 3.20.1.51

    2b.  XDCtools RTA 3.20.1.51

    MikeH

  • Brad pointed out to me that having RTDX enabled may be the cause of your problem. With it enabled, BIOS is probably pulling the records out of the LOG buffers, so they're not there for stop mode to see.

    Try adding the following lines to your config to disable RTDX, and hopefully that will do it.

    bios.HST.HOSTLINKTYPE = "NONE";
    bios.RTDX.ENABLERTDX = 0;

    Chris

  • Chris,

    Added the two lines to my config file. Below is the output from Raw Logs.

  • error id 1 is a memory allocation error.  Can you open ROV tool and see what memory heap(s) look like?  Look at the MEM module.  You might need to increase heap size and/or configure a heap if you don't have one.

  • Hi Karl,

    Here's the ROV:MEM output.

     

    Where can I find the magic decoder ring for the error codes?

    thx

    MikeH

     

  • re: decoder ring:  Look at "SYS Module" man page in the API manual.  First page of SYS section.

    I think you have a big problem in your app.  Can you put breakpoint at main() and look at ROV at that point?   MEM table should look consistent/OK at that point.   The error you show below occurs if the MEM free list is corrupted. It is a linked list and the error above implies that one of the links is pointing to a memory address that is not in your list of sections.  You might have a bad pointer in your app somewhere or some other problem.

  • One more comment.   Probably not related to this issue.  But, you should use XDC 3.16 with CCSv4.1.  XDC 3.20 uses some new APIs and hooks that are in CCSv4.2 but not in CCSv4.1.   CCSv4.2 is "coming soon" (mid/late Sept) and will be bundled with XDC 3.20 (and updates to BIOS and IPC).

    Regards,
    -Karl-

  • Karl,

    Thanks for the feedback.

    Just to clarify, in my test app I am using the OMAP-L138 eXperimenter Kit from Logic. I have chosen the ti.platforms.expOMAPL138 as my platform when creating the .tcf file. The script looks like this:

    =====================================

    utils.loadPlatform("ti.platforms.expOMAPL138");

    /* The following DSP/BIOS Features are enabled. */

    bios.enableRealTimeAnalysis(prog);

    bios.enableRtdx(prog);

    bios.enableTskManager(prog);

    bios.LOG.create("trace");

    bios.STS.create("stsObj");

    // !GRAPHICAL_CONFIG_TOOL_SCRIPT_INSERT_POINT!

    prog.gen();

    =====================================

    Do you see anything wrong with this script?

    When I start a debug session the program initially halts at Void main (Void). At this point the ROV window looks like this:

    After continuing to run the program, then halting the program, the ROV window displays the same error message as above.

    I also have a second test app which uses the ti.platforms.evm6748 platform. The script file looks like this:

    ===========================================

    /* Load platform file for evm6748 */

    utils.loadPlatform("ti.platforms.evm6748");

    /* Enable Time Stamp Logging */

    bios.LOG.TS = true;

    /* Enable common BIOS features used by all examples */

    bios.enableRealTimeAnalysis(prog);

    bios.enableMemoryHeaps(prog);

    bios.enableRtdx(prog);

    bios.enableTskManager(prog);

    bios.setMemCodeSections(prog, prog.get("DDR"));

    /* Enable ECM Handler */

    bios.ECM.ENABLE = 1;

    /* Import driver TCI files */

    utils.importFile("audioSample.tci");

    /*

    * Enable heap usage.

    */

    bios.MEM.instance("DDR").createHeap = 1;

    bios.MEM.instance("DDR").heapSize = 0x30000;

    bios.MEM.BIOSOBJSEG = prog.get("DDR");

    bios.MEM.MALLOCSEG = prog.get("DDR");

    /* setup LOGs */

    bios.LOG_system.bufSeg = prog.get("IRAM");

    bios.LOG_system.bufLen = 1024;

    bios.LOG_system.logType = "circular";

    bios.LOG.create("trace");

    bios.LOG.instance("trace").bufLen = 1024;

    bios.LOG.instance("trace").bufSeg = prog.get("IRAM");

    bios.LOG.create("DVTEvent_Log");

    bios.LOG.instance("DVTEvent_Log").bufSeg = prog.get("IRAM");

    bios.LOG.instance("DVTEvent_Log").bufLen = 8192;

    bios.LOG.instance("DVTEvent_Log").comment = "DVT";

    /* Allow DSP to reset timer */

    bios.CLK.RESETTIMER = 1;

    /* Use instrumented bios libraries */

    bios.GBL.ENABLEINST = 1;

    /* MAR bits config */

    bios.GBL.C64PLUSMAR128to159 = 0x0000ffff;

    /* ECM configuration */

    bios.HWI.instance("HWI_INT7").interruptSelectNumber = 0;

    bios.HWI.instance("HWI_INT8").interruptSelectNumber = 1;

    bios.HWI.instance("HWI_INT9").interruptSelectNumber = 2;

    bios.HWI.instance("HWI_INT10").interruptSelectNumber = 3;

    /*task configuration*/

    bios.TSK.create("echoTask");

    bios.TSK.instance("echoTask").stackSize = 8192;

    bios.TSK.instance("echoTask").priority = 5;

    bios.TSK.instance("echoTask").fxn = prog.extern("Audio_echo_Task");

    bios.TSK.instance("echoTask").comment = "Sample Application";

    /* system stack size */

    bios.MEM.STACKSIZE = 0x10000;

    bios.PWRM.ENABLE = 1;

    bios.PWRM.RESOURCETRACKING = 1;

    bios.PWRM.SCALING = 1;

    bios.CLK.instance("PRD_clock").order = 1;

    bios.TSK.instance("TSK_idle").order = 1;

    bios.TSK.instance("echoTask").order = 2;

    // !GRAPHICAL_CONFIG_TOOL_SCRIPT_INSERT_POINT!

    prog.gen();

    ===================================================================

    This application *does* collect and display raw log info. However, the ROV window looks identical to the one above except for the specific address location.

    Can you see anything obvious from the above info? Am I on the right track>

    thx

    MikeH

     

  • Is that memory address really bogus, or do you think it falls within a valid section in your section map?