X893

Firmware Over Air (FOA)

Some projects need change firmware w/o access to device - only GPRS/RF access. This is a first part about common principal about FOA.
First - we can't garanty time execution to write data to flash.
Second - i want change firmware correctly (w/o lost functionality)

I have only flash and ram. In common i need double flash (for old version and second part for new). Also startup code need understand which version correct and execute it.

Now start to realize - divide flash to half (minus service areas).
For example STM32RB contain 128Kb. 20Kb per bootloader, 8 Rb for EEPROM emulation - i have 100Kb flash. Div by 2 - means 50Kb for firmware (of course i can use 256 or 512Kb flash if 50Kb not enough).

To realize FOA i need any net service (for example GPRS) on other side support partial download (it's depends on RAM size on device - i work with 1-2Kb chunk).

Next realize  partial download of FW. Write block (or some blocks) to flash and if success need set flags about chunk write correctly (in a real it's the same as i make a transaction to DB).
After all chunks written - i set final flag to bootloader about FW version good.

Currently work with GPRS connection, RFM23B (868MHz adapter) and TR24 adapter.

To be continued....

0 comment(s) so far

Post your comment

Thanks for your comments

  • Comment

Github
Bitbucket
Codeplex
SF.net

Status

Subscribe to x893 blog Subscribe to x893 blog