Where are the difference between Firmware and application?

I used web IDE to develop my app then flash it to Photon. When I hit save button, it say same firmware. And when I flash it to Photon, I assume that Photon still run latest firmware 4.5 and my app run on top of it.

However, if I used particle flash --usb xxxx.bin . Is it load the replacement firmware of 4.5? or just load up an app?


Roughly speaking you have three firmware modules (not counting bootloader and safe mode) that have to work together.

  • System firmware part 1
  • System firmware part 2 - which relies on part 1
  • Application firmware - which relies on both

All three need to fit togethe (version SFWP1 == version SFWP2 >= version AFW)

If your new application FW fits to the system FW already, only the app FW will be flashed.
If not, the auto update will/should kick in and upgrade your system.

You can tell the difference in time the flashing will take a few sec vs. some minutes (OTA)
Via USB you should see it in the output of CLI.


First of all I’m not an EXPERT :smile: but let me try to help you understand…

But, from what I understand…Firmware is also considered a type of application that is meant to control the hardware component directly (e.g. Photon/Core). The applications that we write for the Photon/Core can be considered as firmware, because in the end (after it is being compiled and flashed) it instructs the micro-controller to do what we want it to do. So whenever we are talking about low level code that speaks to a piece of hardware directly, we refer to it as firmware.

As far as the Particle released firmware (e.g. version 4.5) goes, this is the translator that converts our own code we write, into machine language that controls the Photon/Core. So again we are dealing with a piece of code that interacts with the micro-controller at the low-level, thus it’s also called a firmware.

Hope this helps :thumbsup:


1 Like

Enjoyed the more detailed explanation… :thumbsup:

That make a lot of sense. Version 4.5 have wrapper that handle low level codes. That make our live so much easier.

are their discussion more detail of System firmware part 1 and 2. I am interested in working with low level code for digital signal processing.

From what you explained. Is it correct that when i use flash from particle cli via usb particle flash --usb binary. Compiler smart enough to know if it need to update my firmware?

Yes, when you update the firmware version selection in the WebIDE (Build) the system will automatically update the system firmware. Going forward, this will also be the case for Particle CLI and Dev also.

1 Like