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.

RTOS/CC2650: BIOS.logsEnabled must be set to false for ROM applications

Part Number: CC2650
Other Parts Discussed in Thread: SYSBIOS, CC1350

Tool/software: TI-RTOS

Hi TI E2E Community,

I imported a couple of project from the Resource Explorer to get started with the TI-RTOS CC26XX - v:2.21.00.06. In one of these projects, I added Logs in an idle thread through the LoggingSetup product from the UIA. My goal was to use the System Analyzer to open a live session and check all Logs. By the way, I used the LoggerStopMode to do that.

The issue:

- When attempting to debug my code, I got the following warning "BIOS.logsEnabled must be set to false for ROM applications". Because of this, I set the BIOS.logsEnabled to false in the *.cfg file as code composer was suggesting.

- Then the warning was gone, but after starting the System Analyzer (RTOS Analyzer->Execution Analysis) I got the following message/warning "No source available for 0x10000486". Nevertheless, the code worked as expected.

Looking for that same message/warning on the TI E2E Community, I found this "The reason you get the message is that the debugger does not have debug symbol information available for the ROM code". If the BIOS library is in ROM, why does it affect logs? I thought the TI-RTOS Kernel (SYS/BIOS) and TI-RTOS Instrumentation (UIA) were too different components. Does it mean that the UIA component is inside the BIOS libraries? And more importantly, how does logs worked in my code if I set the BIOS.logsEnabled to false, as code composer suggested?

I'm quite with the TI-RTOS, so sorry if I made wrong assumptions. I just would like to understand better what is going on under the hood. Thanks in advance.

  • Hi Ronald,

    The TI-RTOS kernel in the ROM was built without Log APIs. This was done to reduce the size of the ROM image.

    So when LoggingSetup is pulled in and you are using the kernel in ROM, you get this warning

    warning: ti.uia.sysbios.LoggingSetup: "C:/ti/simplelink_cc13x0_sdk_2_10_00_36/kernel/tirtos/packages/ti/uia/sysbios/LoggingSetup.xs", line 86: ti.sysbios.BIOS logsEnabled: BIOS.logsEnabled must be set to true when using RTOS Analyzer.  Please edit the .cfg file and set BIOS.logsEnabled to true.

    You have two options now:

    1. Leave BIOS.logsEnabled = false. Log events yourself in the application code (e.g. Log_print0). These will show up in System Analyzer. You will not get any of the kernel events though. So you will not get things like execution graph or CPU Load. 

    2. Set BIOS.logsEnabled = true and not use the kernel in ROM. To do this, comment out the lines in the .cfg as instructed.

    /* ================ ROM configuration ================ */
    /*
    * To use BIOS in flash, comment out the code block below.
    */
    var ROM = xdc.useModule('ti.sysbios.rom.ROM');
    ROM.romName = ROM.CC1350; // or whatever is here...

    This will get you the execution graph, CPU Load, etc. The downside is that the kernel will be in flash now, so the flash footprint will increase.Note: CPU Load is not reliable when going into low power modes.

    I hope this clears things up.

    Todd

     

  • Hi Todd,

    I appreciate you took your time to give such a good explanation, now it is all clear.

    Thank you very much