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.

SYS/BIOS determinism

Hello,

TI SYS/BIOS v6.35 RTOS user's guide says (page 12):

"Almost all system calls provide deterministic performance to enable applications to reliably meet real-time deadlines".

This is great. The guide also mentions three secific things that is non-deterministic:

  • Time spent servicing all clock objects
  • GateMutexPri
  • HeapMem malloc
Except from this I cannot find any documentation telling which OS calls are deterministic, eventually which ones are not. Could someone help me find a more detailed documentation on this?
Regards,
Anders
  • Unfortunately we do not have a detailed list of whether an API is deterministic or not. You can take a look at benchmarks (link in the SYS/BIOS Release Notes) to get an idea of some of the deterministic ones. Along with the ones you mentioned, in general if any API has a user supplied callback function, it is not considered deterministic.

    Are there any APIs you are specifically concerned with?

    Todd

  • Todd, thank you for your answer.

    No there is not any specific APIs, it's just SYS/BIOS in general. A couple of more questions:

    1. Are SYS/BIOS considered a soft RTOS?

    2. You say: " ...in general if any API has a user supplied callback function, it is not considered deterministic". Does this hold the other way around? I.e. if an API does not have any user supplied callback function, it can be considered deterministc? (Except those that I specified)

    3. I've taken a look at the timing benchmarks you mentioned, are all these cases deterministic? So for example if I do Task_yield on my cortex-M3 it will use at worst 158 cycles (bios 6.35.1.29) assuming no other interrupts or events happen?

    Cheers,

    Anders

  • Anders Akre said:
    1. Are SYS/BIOS considered a soft RTOS?

    No. SYS/BIOS is considered a hard RTOS 

    Anders Akre said:
    2. You say: " ...in general if any API has a user supplied callback function, it is not considered deterministic". Does this hold the other way around? I.e. if an API does not have any user supplied callback function, it can be considered deterministc? (Except those that I specified)

    Not necessarily.

    Anders Akre said:
    3. I've taken a look at the timing benchmarks you mentioned, are all these cases deterministic? So for example if I do Task_yield on my cortex-M3 it will use at worst 158 cycles (bios 6.35.1.29) assuming no other interrupts or events happen?

    The cycle counts can change depending on memory placement (e.g. slow vs fast memory), caching, compiler options, instrumentation, and preemption. Please refer to the description of the setup in the SYS/BIOS User Guide (Appendix B).

    Todd 

     

     

     

  • Todd, thanks for your answers.

    I'm a bit confused, however. From wikipedia: "An RTOS that can usually or generally meet a deadline is a soft real-time OS, but if it can meet a deadline deterministically it is a hard real-time OS".

    How could you say SYS/BIOS is a hard RTOS when you don't know which system calls are deterministic or not? That does not sound very convincing to me. Said in another way: how would you proof to a customer that SYS/BIOS is a hard RTOS?

    The last question from my earlier post was really: are the timing benchmarks provided in the BIOS install dir worst case benchmarks with a specific hardware setup?

    Best regards

    Anders

  • The benchmarks for each API in the table is ran several times and the best result is used. Note: for systems that do not have cache, the counts will not vary.

    I've opened the following bug:

    SDOCM00102800: SYS/BIOS needs to document which APIs are deterministic