This third release of the bootloader comes with a lot of improvements. It is a rewrite of large parts of the code.
Main differences to v2:
- The bootloader communicates over I2C as before, but it doesn't depend on interrupts, removing the need to install temporary vectors into flash memory page 0 during an update. This made it possible to improve bootloader security.
- The new bootloader supports recovery updates of a bricked SMC. If you hold down the Reset button while connecting the computer to power, the bootloader will turn on the computer and start the update process. An SMC update program running on the X16 can send the new firmware to the bootloader. Such an update requires that the update program doesn't need keyboard input from the user.
- The new bootloader also supports reading back the content of the firmware, which can be used to verify an update.