OTA from SDK 2.1 to SDK 2.2 - is this possible?

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

cross mob
legic_1490776
Level 5
Level 5
25 likes received 10 likes received First like received

I have some number of fielded units running code generated with SDK 2.1.1, and I would like to consider upgrading them to SDK 2.2.

I have been able to build my application using SDK 2.2 and load it via UART, and it seems to work fine.

However, when I tried upgrading an SDK 2.1.1 over the air to the SDK 2.2 image, it repeatedly reboots.

Is it possible to do this type of upgrade?

One thing I observed that has changed in SDK 2.2 is that the "compressed CGS" image format that was introduced in SDK 2.1 appears to have been turned off again.  It occurred to me that this could be a reason why the OTA does not work.  (There could also be other reasons as well).  Is there any way to re-enable compressed CGS?

In the Makefile for SDK 2.2, it appears that compression is disabled if "DIRECT_LOAD" is not set.

If OTA is not possible this way, then there is no practical way for us to upgrade our fielded units to this new version.

0 Likes
1 Solution

Update- fixed

the problem was the WDT is going off when running the OTA image.

It came up with 2.2 only, because of the slower EEPROM/I2C performance on SDK 2.2.

View solution in original post

10 Replies
legic_1490776
Level 5
Level 5
25 likes received 10 likes received First like received

Update - I succeeded in re-enabling CGS compression, however the OTA process from a 2.1.1 image still did not work.  

0 Likes
Anonymous
Not applicable

Hello Lewis,

I checked with the developers and the OTA should work.

JT

0 Likes

When I OTA a 2.1 SDK device with a 2.2 image, it repeatedly reboots before starting my application.

When I asked about this previously, I was never able to get it to work, and gave up since there was no clear reason to upgrade.  However, this has recently become more important as we have found that some fraction of our devices are failing due to bugs in 2.1.

Can you help me figure out if I am doing something wrong?

Was there some change from 2.1 to 2.2 having to do with the standard image layout or locations that is causing a problem?

Diffing the ota upgrade example app between 2.1 and 2.2 shows no differences.

It would be really great to be able to upgrade fielded units to the new version.

0 Likes

update: it looks like my application can't OTA from 2.2.1 to 2.2.1 either.. so it must be something wrong with the OTA image I am generating with SDK 2.2.1

My board is a design based on the 20736S and I'm using the BCM920736_TAG.. platform to build.

I made a local modification to set the PMU warmup time to 5000, other than that it is pretty much the stock installation.

0 Likes

This is a non-secure OTA correct?  Have you tried doing a secure OTA using the TAG3 board, the Windows peer app from the SDK and the guidance provided in WICED Secure Over-the-Air Firmware Upgrade Application Note (SDK 2.1 and TAG3 Board) ?

Not sure what your specific issue is, but it seems if we can find something that works, we can use it as a reference for your specific implementation.

0 Likes

Thanks for the comment - it is insecure yes.

See my other response - I found the issue.

I think the I2C speed is slower when I build with 2.2.x... is there any way to change this?

It causes a really long boot time, etc.

0 Likes

Yes, I did face the WDT issue when migrating to SDK 2.2.

There is such difference (feeding WDT during EEPROM writing) on sample of ota upgrade provided along with SDK.

But I can't find where any configuration changed to prove such evidence. Checking the .btp file didn't give difference on configuration 'DLConfigEEPROMAccessSpeed = 100'.

I would like to know the reason too, in case we need to take care other situation that might cause WDT expire.

0 Likes

Hi hardy.chen

The reason is that the system ROM defaults to 100khz as the speed for I2C access.

In previous versions of the SDK (e.g. 2.1) there was an entry in the platform CGS file that overrode this to 400Khz.

In SDK 2.2 for some reason this was omitted, and there was no override, resulting in a default value of 100Khz.

For my application (20736S) I have overridden it by modifying the CGS file to set this value to 1000 KHz and this improves things a lot.

I don't think the setting in the EEPROM file (DLConfigEEPROMAccessSpeed) has an effect.

just add this to the .cgs file in the platform directory you are using:

ENTRY "I2C Speed"

{

    "Speed" = "1000 KHz"

}

0 Likes

Hi ldgirod

  Thanks for your elaboration.

  Just checked such difference from file './tier2/brcm/mandatory/bld/20737/mandatory.cgs'.

  I'll keep this in mind.

0 Likes

Update- fixed

the problem was the WDT is going off when running the OTA image.

It came up with 2.2 only, because of the slower EEPROM/I2C performance on SDK 2.2.