What OTA examples exist that include some level of code check yet still fit into CYW43438?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
GrCa_1363456
Level 6
Level 6
50 likes received Beta tester First comment on KBA

I'm looking for Over The Air update examples that have features between OTA and OTA2.

Examples are likely to show creative ways to add more features in a limited code space.

I'm designing into a CYW43438 with a limited code space that will NOT accommodate a full version of OTA2.

OTA is a bare bones firmware update program as opposed to OTA2,

OTA is stripped of CRC and most other features that check for integrity of code before committing to execute from the new code load.

I'd like to learn from others who've tried to add basic checks to OTA to mitigate potential corruption if an error occurs while still allowing the code to fit in the limited memory of CYW43438.

Greg

1 Solution

GrCa_1363456 Yes, I agree with you. Although this is not available by default, custom implementations can be made. One possible work around which i can think of is, download and boot from the different app regions than the one from which the code is running i.e., download and boot from APP0, APP1 and APP2 in a round robin way. If this isn't not suitable, then what I can suggest is for you to contact local Cypress' Sales/ Marketing and explain your use case scenario to them and they should be able to help you out.

View solution in original post

6 Replies
MichaelF_56
Moderator
Moderator
Moderator
250 sign-ins 25 comments on blog 10 comments on blog

Adding MuraliR_36​ from the Apps Team as he has alot of experience with OTA Classic and 2.

0 Likes
Murali_R
Moderator
Moderator
Moderator
250 sign-ins 250 replies posted 100 solutions authored

Hello GrCa_1363456

There was something similar to your requirement that had come up some time back in this thread Updating 4343W wifi firmware for our module via OTA and an a possible solution has been given. Let me know if this helps.

Please note that this hasn't gone through any standard cypress testing procedures.

Thanks

Murali,

The referenced thread relies on external Flash.

Has any analysis been performed to determine ways to add OTA protection without increasing memory?

Specifically: What are some options to address negative consequences of an ota wlan firmware failure without external flash?

Greg

0 Likes

GrCa_1363456​ unfortunately, there is no check in place for OTA protection in the OTA implementation of WICED by default.

Also, since we update only the application and not the wlan firmware when using OTA, i don't think an issue of WLAN firmware failure will arise as far as i'm aware. Can you please provide a use case of where you think this may happen and i'll try to see if there can be a work around.

0 Likes

Murali,

Loading then running firmware without some form of verification, leaves open the chance for unknown operations to occur.

I agree, an error in the firmware downloaded during an OTA won't directly disrupt the WLAN firmware.

If an error does occur that causes the new firmware to hang or initiate unintended functions, the system could be reset or power cycled to get back to the valid WLAN firmware and download a new copy. This is assuming either the code fully hangs to trigger a watchdog reset, or the end user has the ability to reset or power cycle. Many IoT devices have neither a reset nor an easy ability to cycle power - battery isn't removable.

A preferable method would be to run some form of integrity check on the code before committing.

Even a simple checksum could catch single bit flips.

Alternatively, if you're confident there's sufficient checks in the firmware segmentation, download and reconstruction process that ensures no packet or bit loss or corruption can go undetected, that may be sufficient. If that's the case, is there any documentation to show the confidence level of those validation or error detection processes.

Greg

0 Likes

GrCa_1363456 Yes, I agree with you. Although this is not available by default, custom implementations can be made. One possible work around which i can think of is, download and boot from the different app regions than the one from which the code is running i.e., download and boot from APP0, APP1 and APP2 in a round robin way. If this isn't not suitable, then what I can suggest is for you to contact local Cypress' Sales/ Marketing and explain your use case scenario to them and they should be able to help you out.