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.

SIMPLELINK-CC13X2-26X2-SDK: CC13x2 is a self firmware update possible in a bare metal design with NO-RTOS?

Part Number: SIMPLELINK-CC13X2-26X2-SDK

I have a simplelink nortos bare metal design using a CC1312R that I would like to perform a self firmware update.  All the examples I found are using the TI_RTOS easylink protocol.  Is it possible to do this using a bare metal design.  Is it as simple as having a bootloader, getting the firmware image transferred to my bare metal app (through some external protocol like RF or uart) and writing it to NVS and then doing a reset to let the bootloader takeover and load the image?  Are there any examples of something like this to reference?

  • Myles,

    There aren't any bare metal / No RTOS examples for doing an OAD. I would recommend looking at the BIM (Boot Image Manager) project  which is a No RTOS project that demonstrates how to select, copy and run an image located in the internal flash or the external flash. I would also recommend reading the OAD chapter of the BLE User Guide https://dev.ti.com/tirex/explore/node?node=AOimuSWjap.4RuDbcp7OqA__pTTHBmu__LATEST .

    Regards,

    Daniel

  • Daniel I have already looked through the bim and I did look the OAD chapter.  Both are still utilizing the OAD program structure, which seem slightly different from a normal image that gets loaded in through a normal programming process.  For example that BIM as configured is unable to find a standard program loaded in flash, but I can manually jump to that image in flash just fine by using the provided jump function with a manual address.  What about projects where one microcontroller is the master for rf and is connected to a host through uart.  Was the plan to jump back to a bootloader that is directly driven by external uart or SSI to program.  Ti provides this nice flash program interface but no examples of how to program an image? I mean the sdk even makes a hex file for you...

  • Myles,

    I may have misunderstood your original question. Is this more what you are looking for? https://www.ti.com/lit/an/swra466c/swra466c.pdf 

    It's an app note that shows how to use the device bootloader and how to load a program to the device via SPI or UART. It also references an example Windows application that will program the device via UART. (http://www.ti.com/lit/zip/swra466 )

    Regards,

    Daniel

  • No but that is what I was referencing in my last statement.  Lets start over. 

    If I have a nortos bare metal app and in that app I write code to program a new "updated firmware image" into flash at a different non-overlapping memory location can I then jump to that base address and begin executing that updated program?  So far I havent read anything to prove that is not possible?

  • New question: If I load my program into flashat the beginning of the Flash 0x0 and then load the bim in ( I think its flash address 0x65000) and then use the bim to jump to my application it seems to work fine.

    Now if I load my program into two different flash memory locations lets say 0x0 and 0x2000 then to try to jump between them using the same jump code as found in the bim it does not work, why is that?  I am assuming maybe this has something to do with the ccfg section which by default is located I think at 0x6700?  Or does the bim do something else special compared to a standard application?

  • Myles,

    What code from the BIM are you using to jump? There are some specific requirements about the image and address that the BIM checks by default which could be causing the code not to work as expected. 

    Regards,

    Daniel