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.

CC2642R-Q1: OAD

Part Number: CC2642R-Q1


Hello,

I have a project and OAD is required. We will go to mass production with CC2642R1 soon. There is simple peripheral oad onchip example but in this example, oad overwrites my application. So if OAD connection is somehow lost, my application will be all deleted and my product will be trash. 

Here is what I want:

I don't want to delete or overwrite my application while OAD is sending datas. I want to write new version in non-used flash area and wait until it's ready to reboot. So basically I want to continue my application if OAD connection is somehow terminated. How can I do that or can I do that? 

Secondly, I don't want to update BLE stacks, because I never change it and my non-used flash size is not enough for whole application+stack. 

Sum up, my main goal is that I want to turn back to my application if somehow OAD is crashed.

1- I need to seperate ble stacks and my application in flash.

2- I need to update only my application not ble stacks.

3- I need to write new version to non-used flash and wait all datas are got from BLE and ready to update.

SDK version:  simplelink_cc13x2_26x2_sdk_4_40_04_04

  • Hello,

    I have assigned an expert to comment on this thread.

    Regards,

    Jan

  • Hello Muhammed,

    1- I need to seperate ble stacks and my application in flash.

    2- I need to update only my application not ble stacks.

    This is not possible since the stack+app are both generated into a single image.

    3- I need to write new version to non-used flash and wait all datas are got from BLE and ready to update.

    This sounds like it is possible, but would require a fundamental change to the oad on chip example provided, the BIM project, and potentially the persistent app project. It would essentially behave more like an off chip oad example, but you as the user are responsible for ensuring that your images are small enough to allow for 3 images on your device (the persistent image, user image 1, user image 2). You would have to rework the memory layout of the design to accommodate this, IF there is space for it.

    In the case of an OAD failure, the device will always have a backup: i.e. the persistent image. We recommend that when going to production, you modify the example persistent app to include the basic functionality of your product in case of a failure. When the device reboots into the persistent app, you can then retry the OAD. If it fails, you'll always have the persistent image.

  • Hello Ammar,

    Thank you for your replay. It is really helpful. Just to double-checking, you are saying that there is no way to generate separated stack and app images, am I right?

    Regards,

  • That's correct, our default examples are configured to generate a single image that combines the stack and application into one .hex/.out file.

  • Thank you four your reply. Here is a last question, can I update persistant app with OAD? If it yes, should I just send persistant app image by OAD or should I somehow specify whether it is persistant app image? 

  • Hey Muhammed,

    Sorry for the delay. With the out of the box, the persistent app cannot be updated (hence the term persistent). The reason for this is because the BIM does not have any logic to toggle between the two images. For example, it is only designed to check if the application image is valid, if so, it will boot the persistent image. This logic does not work the other way around and so the BIM will not respond if the persistent image is corrupted during an oad.

    See Figure 207 here for a the flow of our BIM: https://dev.ti.com/tirex/content/simplelink_cc13x2_26x2_sdk_5_10_00_48/docs/ble5stack/ble_user_guide/html/oad-secure/bim-on-chip-stack-library.html