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.

how to view Raw Logs in CCSv6?

Other Parts Discussed in Thread: LAUNCHXL-F28027, TMS320F28027, SYSBIOS

In Code Composer Studio v6 (6.1.0.00104) on Win 7,
I am running the c28x Idle Example which has Log_info0() calls.
The code builds and runs fine, but I cannot view Raw Logs, it is not an option
under Tools-RTOS Analyzer. When I use CCS v5, Raw Logs is available.
Both CCS versions have Full License.  Both had the full install.

Thank you for your help.

  • In CCSv6, you need to enable UIA instrumentation to be able to view the Raw Logs in the Live Session view. 

    Please see Chapter 5 of the System Analyzer Users Guide for how to quickly enable UIA Instrumentation. After this is enabled, rebuild and load your code to the target. Then you should be able to open the RTOS Analyzer Live Session view and look at the Log events.

  • Hi AartiG - Thanks for the quick reply. I followed your advice to enable UIA instrumentation
    but still have a problem. The Builder ran out of memory, see below. The application is the simple Idle example
    so I would think it wouldn't run out of memory. Is there something I can do? Remove something?
    I tried different optimizations but no improvement.
    Details on my set-up are given below.

    Board = LAUNCHXL-F28027

    I have the following RTSC Configuration Settings:
    Target: TMS320F28027
    Connection: TI XDS100v2 USB Debug Probe
    XDCtools version: 3.25.3.72
    SYS/BIOS: 6.35.4.50
    System Analyzer (UIA Target): 1.3.1.08
    Target: ti.targets.C28_large
    Platform: ti.platforms.tms320x28:TMS320F28027
    Build-profile: debug

    I made the following Changes to cfg File:
    /*var LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');*/
    var LoggingSetup = xdc.useModule('ti.uia.sysbios.LoggingSetup');

    /*var LoggerBufParams = new LoggerBuf.Params();
    LoggerBufParams.numEntries = 16;
    var logger0 = LoggerBuf.create(LoggerBufParams);
    Defaults.common$.logger = logger0;*/

    I got the following Build Error:
    "../TMS320F28027.cmd", line 109: error #10099-D: program will not fit into available memory. run placement with alignment/blocking fails for section ".ebss" size 0x105a page 1. Available memory ranges:
    M01SARAM size: 0x800 unused: 0x700 max hole: 0x700
    L0SARAM size: 0x1000 unused: 0xee0 max hole: 0xee0
    error #10010: errors encountered during linking; "idle_TMS320F28027.out" not built

    Here is the Entire .cfg File:
    var Defaults = xdc.useModule('xdc.runtime.Defaults');
    var Diags = xdc.useModule('xdc.runtime.Diags');
    var Error = xdc.useModule('xdc.runtime.Error');
    var Log = xdc.useModule('xdc.runtime.Log');
    /*var LoggerBuf = xdc.useModule('xdc.runtime.LoggerBuf');*/
    var LoggingSetup = xdc.useModule('ti.uia.sysbios.LoggingSetup');
    var Main = xdc.useModule('xdc.runtime.Main');
    var Memory = xdc.useModule('xdc.runtime.Memory')
    var SysMin = xdc.useModule('xdc.runtime.SysMin');
    var System = xdc.useModule('xdc.runtime.System');
    var Text = xdc.useModule('xdc.runtime.Text');

    var Hwi = xdc.useModule('ti.sysbios.family.c28.Hwi');

    /*
    * Use SysMin for output (System_printf() and error messages) and
    * minimize the output buffer size to save data space.
    */
    System.SupportProxy = SysMin;
    SysMin.bufSize = 80;

    /*
    * Create a LoggerBuf and make it the default logger for all modules.
    */
    /*var LoggerBufParams = new LoggerBuf.Params();
    LoggerBufParams.numEntries = 16;
    var logger0 = LoggerBuf.create(LoggerBufParams);
    Defaults.common$.logger = logger0;*/

    Main.common$.diags_INFO = Diags.ALWAYS_ON;

    /*
    * Minimize size of the system stack. System stack usage by the app
    * can be reviewed with ROV in the module view for ti.sysbios.knl.Task.
    */
    Program.stack = 0x100;

    /*
    * Program.argSize sets the size of the .args section.
    * The examples don't use command line args so argSize is set to 0.
    */
    Program.argSize = 0x0;

    /*
    * Uncomment this line to globally disable Asserts.
    * All modules inherit the default from the 'Defaults' module. You
    * can override these defaults on a per-module basis using Module.common$.
    * Disabling Asserts will save code space and improve runtime performance.
    Defaults.common$.diags_ASSERT = Diags.ALWAYS_OFF;
    */

    /*
    * Uncomment this line to keep module names from being loaded on the target.
    * The module name strings are placed in the .const section. Setting this
    * parameter to false will save space in the .const section. Error and
    * Assert messages will contain an "unknown module" prefix instead
    * of the actual module name.
    Defaults.common$.namedModule = false;
    */

    /*
    * Minimize exit handler array in System. The System module includes
    * an array of functions that are registered with System_atexit() to be
    * called by System_exit().
    */
    System.maxAtexitHandlers = 4;

    /*
    * Uncomment this line to disable the Error print function.
    * We lose error information when this is disabled since the errors are
    * not printed. Disabling the raiseHook will save some code space if
    * your app is not using System_printf() since the Error_print() function
    * calls System_printf().
    Error.raiseHook = null;
    */

    /*
    * Uncomment this line to keep Error, Assert, and Log strings from being
    * loaded on the target. These strings are placed in the .const section.
    * Setting this parameter to false will save space in the .const section.
    * Error, Assert and Log message will print raw ids and args instead of
    * a formatted message.
    Text.isLoaded = false;
    */

    /*
    * Uncomment this line to disable the output of characters by SysMin
    * when the program exits. SysMin writes characters to a circular buffer.
    * This buffer can be viewed using the SysMin Output view in ROV.
    SysMin.flushAtExit = false;
    */

    /*
    * Application specific configuration
    */

    /*
    * Disable unused BIOS features to minimize footprint.
    * This example does not use Swis, Tasks, or Clocks.
    */
    var BIOS = xdc.useModule('ti.sysbios.BIOS');
    BIOS.swiEnabled = false;
    BIOS.taskEnabled = false;
    BIOS.clockEnabled = false;

    /* Minimize system heap size */
    BIOS.heapSize = 0x0;

    /*
    * In this example, runtime support functions that need
    * a lock are NOT called from multiple threads that can
    * pre-empt each other.
    *
    * Use the simplest lock function available.
    */
    BIOS.rtsGateType = BIOS.NoLocking;

    /*
    * Create a timer instance to generate periodic interrupts.
    *
    * The timer will be started within the BIOS_start()
    * thread
    */
    var Timer = xdc.useModule('ti.sysbios.family.c28.Timer');
    var timerParams = new Timer.Params();
    timerParams.startMode = Timer.StartMode_AUTO;
    timerParams.runMode = Timer.RunMode_CONTINUOUS;
    /* Timer period is 1/2 second (500,000 uSeconds) */
    timerParams.period = 500000;
    timerParams.periodType = Timer.PeriodType_MICROSECS;
    var myTimer = Timer.create(0, '&myTickFxn', timerParams);

    /* Add a background idle function */
    var Idle = xdc.useModule('ti.sysbios.knl.Idle');
    Idle.addFunc("&myIdleFxn");

    /*
    * Build a custom BIOS library. The custom library will be smaller than the
    * pre-built "instrumented" (default) and "non-instrumented" libraries.
    *
    * The BIOS.logsEnabled parameter specifies whether the Logging is enabled
    * within BIOS for this custom build. These logs are used by the RTA and
    * UIA analysis tools.
    *
    * The BIOS.assertsEnabled parameter specifies whether BIOS code will
    * include Assert() checks. Setting this parameter to 'false' will generate
    * smaller and faster code, but having asserts enabled is recommended for
    * early development as the Assert() checks will catch lots of programming
    * errors (invalid parameters, etc.)
    */
    BIOS.libType = BIOS.LibType_Custom;
    BIOS.logsEnabled = false;
    BIOS.assertsEnabled = true;
  • The amount of instrumentation and size of logger buffers can be customized in the BIOS configuration file. In this case, with the default settings, it is not able to fit everything in the memory available on the F28027. I had tried it out on a F28069 where it worked but that device has more memory than the F28027.

    In order to allow things to fit, you can customize the level of instrumentation. Open the .cfg file and in the UIA Logging Configuration view, uncheck the options that you do not need to instrument. For example, if you do not need Execution Analysis and Load Analysis you can uncheck those. This allowed me to build the Idle example for F28027.


    If you need to have other instrumentation enabled, consider making the size of logger buffers smaller (this can be done in the same configuration view). Note though that making the buffer size too small may result in data loss so the biggest size that can be accommodated should be be used, and it is advisable to start with the defaults.

  • Thanks AartiG - I got it working, mostly based on your advice.