mirror of
https://github.com/InfiniTimeOrg/InfiniTime.git
synced 2024-09-11 05:35:50 +03:00
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:
parent
8fad939486
commit
ea2193833f
@ -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.
|
||||
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user