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.

Enable UIA logs for Event Post and Pend Only

Other Parts Discussed in Thread: SYSBIOS

Hello,

I have a very bandwidth limited method for getting UIA data out of my system. Is there an easy way to only enable Event post and pend logging?

I am running BIOS 6.34.01.14 and UIA 1.01.04.27


Thanks!

  • Norton256,

    There is some control over the data which is logged by UIA. At a high level, use the LoggerSetup module to turn off Hwi and Swi logging. You still want Task logging because that enables the Semaphore logging.

    LoggingSetup.sysbiosTaskLogging = true;
    LoggingSetup.sysbiosSwiLogging = false;
    LoggingSetup.sysbiosHwiLogging = false;
    LoggingSetup.mainLogging = false;

    See System Analyzer 1.1, Section 5.2.2

    When using task logging, you will get events from the Task, Semaphore, and Event modules. If this is still too much, you can turn off individual log events using configuration. But you need to understand how this works. Log events are controlled by the Diags mask in each module. The LoggingSetup module will enable various bits in a module's Diags mask. Each module defines log events and which bit in the Diags mask enables that log event.

    For example, when using task logging, the LoggingSetup module will enable the USER1 and USER2 bits of the Event module's diags mask. But it will only do this if the bit is undefined. If you set this bit before LoggingSetup, then your setting will persist. So, simply turn off these bits in your configuration file.

    var Diags = xdc.useModule('xdc.runtime.Diags');
    var Event = xdc.useModule('ti.sysbios.knl.Event);
    Event.common$.diags_USER1 = Diags.ALWAYS_OFF;
    Event.common$.diags_USER2 = Diags.ALWAYS_OFF;

    Keep in mind that turning off a diags mask bit will disable all log events controlled by that bit. If you want just one of these events, then you must reconfigure the log event itself.

    For example, if you want task switch events but not task block events, then reconfigure the task switch event to use a different bit and then turn on that bit. Turn off the original bit to disable the other logs events. Looking at the Task.xdc file, and searching for Log.Event, you will find all the log events raised by that module. When using USER1, the task module raises LM_switch, LM_sleep, LD_yield, and some more. If you just want LM_switch events, then reconfigure that log event to use USER3 and turn on that bit.

    var Diags = xdc.useModule('xdc.runtime.Diags');
    var Task = xdc.useModule('ti.sysbios.knl.Task);
    Task.common$.diags_USER1 = Diags.ALWAYS_OFF;
    Task.common$.diags_USER3 = Diags.ALWAYS_ON;
    Task.LM_switch.mask = Diags.USER3;

    Look in the module API documentation or the module's xdc file to see which log events are raised.

    ~Ramsey