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/TM4C1294KCPDT: Separate binary images for TI-RTOS and Application

Part Number: TM4C1294KCPDT

Tool/software: TI-RTOS

Hi,

We are currently working on a product development requirement involving TM4C1294KCPDT and TI RTOS ver 2.16. We are using the IDE Version CCS ver 6.2 . The product requirements specifications mandate us to generate separate binaries for application and TI RTOS (Similar to what is typically followed in Windows/Linux OS and application installation methods). We have the following queries and need your help on them.

The objective is that in case the there is a application version upgrade, we do not change the RTOS binary in the product in the field. We update only the application binary.

1> Is it possible to generate a separate binary for just the TI RTOS (without the application)?

2> What is the recommended method for generating the installation binaries
(A) Generate Application and RTOS combined together OR
(B) Generate RTOS binary and application binary separtely

3> Is the method of separation of binaries for the embedded application and TI RTOS possible and is reliable? If yes, can you please point us to the relevant documentation to accomplisht this.

4> Please let us know if there are any known/reported issues in following the separate binaries method of implementation.

5> Is there an expert with whom we can get in touch with to discuss? If yes, please share the details.

Thanks a ton for your help and support.

 

  • Hi Harshal,

    This is possible. It's a US holiday today, so someone will get back to you later this week.

    Todd
  • Hi Harshal,

    Here is a draft of a write-up that addresses your needs. It's for a different device, but the concepts are the same.

    StandAloneBIOSLib.pdf

    Here is the makefile you can use for TM4C (instead of the CC13_CC26 mentioned in the PDF:

    https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/908/makefile_5F00_tm4c

    Finally, here is a TM4C project that uses the "closure". Note I needed to add a couple more things to the project (e.g. NDK libraries and include paths) since that was not needed for the device mentioned in the PDF.

    TM4CExampleProject.zip

    Todd

  • 0312.empty.cfg

    Oops! I forgot to add the empty.cfg that I used. I needed to add a couple things at the bottom. Note: I used empty.cfg instead of empty_min.cfg since empty.cfg has more debug features enabled. You of course can change accordingly.

    Todd

  • Hi Todd,
      Thanks for quick response.


      Before I go with TI-RTOS closure, I want to confirm few more things.


      I am explaining system requirement in more brief.

    Below is the memory map.

    ----------------------------------------------------------
    |   Reserved                                                       |
    ----------------------------------------------------------

    ----------------------------------------------------------
    |  *Main Application.bin (Uses TI-RTOS)     |
    ----------------------------------------------------------
    ----------------------------------------------------------
    |   Reserved                                                       |
    ----------------------------------------------------------
    ----------------------------------------------------------
    |   TI-RTOS.bin                                                  |
    ----------------------------------------------------------
    ----------------------------------------------------------
    |   Reserved                                                       |
    ----------------------------------------------------------
    ----------------------------------------------------------
    |   Firmware Upgrade Application.bin           |
    ----------------------------------------------------------
    ----------------------------------------------------------
    |   Reserved                                                        |
    ----------------------------------------------------------
    ----------------------------------------------------------
    |   Bootloader.bin                                               |
    ----------------------------------------------------------

    Note:
    *Only Main Application uses TI-RTOS.
    **Instead of .bin file any other file .hex or .elf is also acceptable.

      System execution sequece shall be as below:
        On Power-up, Bootloader shall start.
        In regular execution, Bootloader shall launch Main Application which uses TI-RTOS.
        In Upgrade mode, Bootloader shall launch Firmware Upgrade Application which is not using TI-RTOS.
        Firmware Upgrade Application shall have responsibity to update TI-RTOS (When TI-RTOS is updated) and Main Application (Uses TI-RTOS). While upgrading Main Application, TI-RTOS shall not be updated.

      With respect to above requirements, I need to generate binary files for Bootloader.bin, Firmware Upgrade Application.bin, TI-RTOS.bin and Main Application.bin.

      Is it possible to generate TI-RTOS.bin?
      If Yes, how can I generate TI-RTOS.bin?
      Does "TI-RTOS closure" generates TI-RTOS.bin?

      Thanks a ton for your help and support.

    Best Regards,
    Harshal

  • Hi Harshal,

    The closure approach simply manages the kernel as a stand-alone project. It still gets linked with the application. So no, closure does not generate a TI-RTOS.bin.

    While what you want is technically feasible, unfortunately there are many factors that must be considered (e.g. compiler, RTS, etc.). To provide the exact details to generate the stand-alone version of the kernel and how to use it in the manner you desire is out of the scope of the forums. Having said that, basically, you need to hand-craft a linker file that places the kernel functions and referenced objects in specific locations. The exact functions and objects depends on your application needs. You will not be able to place all the kernel items into this image though due to the build dynamics. Also note that you must fix many of the kernel configuration options to accomplish this. For example, BIOS.assertsEnabled must be true or false. You cannot let the application configure this.

    Todd
  • Thanks for suggestion.

    Harshal