Best way to update local device with Particle

Hello all,

I would like to integrate a particle cellular module into my device to make it cellular capable. The firmware for my product has been under development for over 9 months so porting the code over to make it work on the Particle OS isn’t really an option. I currently have bootloader firmware on my product that communicates with the device master via UART to receive the binary file.

What I need to do is have the ability to send a binary file down to my Particle device and store it locally on that device. From there I would update my local device.

My ideas on how to do this so far:

  • Store the file on the web somewhere and download it to the local flash of the Particle device.
  • Splice the binary file into the Particle’s binary file at a flash offset and then OTA update my Particle device thus downloading the new file into local flash memory.

In both these situations I would then queue my device into bootloader mode and start the update from Particle’s flash memory.

Has anyone ever done anything like this? Or have any suggestions on how to do this? I’m not sure if it helps, but I am using a STM32G series chip.

Any help is greatly appreciated.

Thanks!

If it helps I am currently testing with the Argon, but plan to go to cellular once this is working with the Boron.

Both methods will work, but it kind of depends on how big your binary is.

Since the application firmware is limited to 128K bytes, you probably can’t have much more than 120K assuming the Particle firmware does not do anything else.

If you do a separate download, then you’re limited by the storage space on the device. For the Boron, this is probably around 1.8 Mbytes out of the 2 MB LittleFS flash file system to be safe.

If your binary is bigger than that, you’ll need to add external storage like an SD card or larger external SPI flash.

It’s definitely possible to download a large binary, such as by HTTP or direct TCP, then save it and use it to program a coprocessor, though that’s not built-in and you’ll need to write some custom code for it.

2 Likes

Hello Rickas,

My binary file is currently 73 KB so it should fit just about anywhere.