Should the bootload be the same version as the system part firmware?
Not the same internal number, but they should correlate.
@rickkas7 once had a table to look up the relations between internal version numbers and public versions and also which version bootloader matches with which system.
If you look at github/particle-iot/firmware/releases you can usually find the bootloader binaries with the system parts in the download area. If there is no bootloader binary available for that version, just backtrack the versions to find the most recent bootloder valid from then on till its replaced by a newer one.
The bootloader is forward compatbility or backward compatibility?
This is the table:
Prior to system firmware 0.7.0 (bootloader 100), bootloaders were backward compatible and you never had to downgrade the bootloader, even when going back to older versions of system firmware.
With bootloader 100 or later (0.7.0), it is now necessary to downgrade the bootloader when going to older versions of system firmware. Releases 0.6.4 (Electron), 0.6.3 (Photon) and 0.5.5 will take care of doing this. You can then downgrade further if necessary, for example if you wanted to downgrade from 0.7.0 to 0.6.2 on the Photon, you’d first downgrade to 0.6.3, then 0.6.2.
Upgrading the bootloader is always required when system firmware has a new bootloader. In versions prior to 0.7.0, one of the system parts contained a copy of the bootloader so the upgrade is done transparently.
With 0.7.0 and later on the Photon/P1 only, there isn’t enough space in flash for the upgraded bootloader, so the bootloader is upgraded over-the-air. Electrons still include the bootloader in the system parts.
The bootloader cannot be upgraded in DFU mode (blinking yellow). It can only be upgraded OTA or in --serial mode (blinking blue).