michallenc opened a new pull request, #2809:
URL: https://github.com/apache/nuttx-apps/pull/2809

   ## Summary
   This commit adds NuttX based bootloader with the support for image update 
and recovery if not confirmed. The algorithm utilizes three flash partitions: 
primary (image runs from this area), secondary and tertiary. Secondary and 
tertiary areas are used for update upload and recovery.
   
   The update is performed by simple copy from update area to primary area with 
recovery being created in recovery area if not already present. Once image is 
confirmed by the user, the image in update area is confirmed as well, update 
area becomes recovery area and vice versa. This means the recovery is always 
present (except for the first update) and subsequent updates just copy image 
from update to primary. This makes the update significantly faster and more 
considerable to flash wear while keeping the recovery/revert possibility.
   
   A header (aligned to flash's erase size) must be added to the beginning of 
the image. Python script nximage.py can be used to prepend this header to built 
binary. The algorithm also uses one erase page at the end of a partition 
(partition, not image!) to store flags used to indicate image confirm status 
and to detect update/recovery partitions. Any program uploading update image to 
the update partition has to erase this page for the boot to work correctly!
   
   The algorithm implementation is based on a patch initially developed for 
MCUboot project but rejected by the project's maintainers
   
   https://github.com/mcu-tools/mcuboot/pull/1902
   
   ## Impact
   New bootloader that can be used with NuttX. Implemented as a standalone 
application, does not affect current upstream (both core and apps) if not 
configured.
   
   ## Testing
   Tested on SAMv7 MCU.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to