Remove sections "The OTA implementation" from the bootloader doc.

Move section "Firmware validation" from bootloader doc to "updating-software" doc.
This commit is contained in:
Jean-François Milants 2022-08-22 21:31:35 +02:00
parent 8fad939486
commit ea2193833f
5 changed files with 13 additions and 32 deletions

View File

@ -1,4 +1,4 @@
# Bootloader and OTA implementation in InfiniTime on the PineTime
# Bootloader, OTA and recovery on the PineTime
Like most "smart" devices these days, the PineTime is designed to support OTA update : the update of the firmware **O**ver **T**he **Air**, via its Bluetooth Low Energy (BLE) connectivity.
@ -93,32 +93,6 @@ An application firmware must implement the following functionalities to be compa
Those are basically the only constraints imposed on developers. They are free to use any language, framework, build system, BLE stack and communication protocol, as long as they implement those functionalities.
### The OTA implementation
The OTA relies on the BLE connectivity of the PineTime to transfer the new version of the firmware from the host (a computer or a smartphone running a supported companion app) to the watch. In InfiniTime, we decided to [implement](https://github.com/InfiniTimeOrg/InfiniTime/blob/develop/doc/ble.md#firmware-upgrades) the [nRF DFU protocol](https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.sdk5.v15.3.0/lib_dfu_transport.html), because it already exists, it's quite well documented and supported by a few existing applications like nRFConnect.
With this protocol, the companion app running on the host sends the new firmware in 20 byte chunks. When InfiniTime receives a new chunk, it writes it in the external SPI flash memory. At the end of the transfer, both InfiniTime and the companion app generate a CRC on the file. If those CRCs match, the watch is reset to let the bootloader apply the firmware update.
### Firmware validation
Once the OTA is done, InfiniTime will reset the watch to apply the update.
One last step is needed to finalize the upgrade : the new firmware must be manually validated. If the watch resets while the firmware is not validated, the bootloader will automatically revert to the previous version.
If the new firmware is working correctly, open the settings and select the "Firmware" entry. This setting page displays the version of the firmware that is currently running, and allows you to validate the firmware, or reset the device to rollback to the previous version.
Firmware validation setting:
![Firmware Validation setting](firmwareValidationSetting.png)
The firmware is not validated yet. Tap 'Validate' to validate it, or 'Reset' to rollback to the previous version.
![Firmware Not Validated](firmwareNotValidated.png)
The firmware is validated!
![Firmware Validated](firmwareValidated.png)
### Recovery firmware
Together with the bootloader, we also built a [recovery firmware](https://github.com/InfiniTimeOrg/pinetime-mcuboot-bootloader#recovery-firmware). This firmware, which implements the bare minimum to support the OTA procedure (basic UI, BLE stack and DFU protocol) can be used in last resort, in case the application firmware does not run at all, or does not support the OTA procedure.

View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -33,9 +33,16 @@ We have prepared instructions for flashing InfiniTime with Gadgetbridge and NRFC
Firmware updates must be manually validated. If the firmware isn't validated and the watch resets, the watch will revert to the previous firmware. This is a safety feature to prevent bricking your device with faulty firmware.
You can validate your updated firmware on InfiniTime >= 1.0 by following this simple procedure:
If the new firmware is working correctly, open the settings and select the "Firmware" entry. This setting page displays the version of the firmware that is currently running, and allows you to validate the firmware, or reset the device to rollback to the previous version.
- From the watchface, swipe **right** to display the *quick settings menu*
- Open settings by tapping the cogwheel on the bottom right
- Swipe up until you find an entry named **Firmware** and tap on it
- If the firmware is not validated yet, you can either validate the running firmware, or reset and revert to the previous firmware version
Firmware validation setting:
![Firmware Validation setting](firmwareValidationSetting.png)
The firmware is not validated yet. Tap 'Validate' to validate it, or 'Reset' to rollback to the previous version.
![Firmware Not Validated](firmwareNotValidated.png)
The firmware is validated!
![Firmware Validated](firmwareValidated.png)