Jump to main content

##

# 1.7.2 Bootloader system level execution flow

Basic Bootloader system level execution flow

- The Bootloader code starts executing on a device Reset

- If there are no conditions to enter the firmware upgrade mode, the Bootloader starts executing the user application

  - Refer to Bootloader Trigger Methods for different conditions to enter firmware upgrade mode

- The Bootloader performs Flash erase/program operations while in the firmware upgrade mode

Live Update Bootloader system level execution flow

- Supported for the devices which have a Dual Bank flash memory

Cortex-M Based MCUs

- Special NVM Fuse setting (AFIRST) is used to identify which bank is mapped to NVM main address space after reset

- The bootloader live update code responsible to program the inactive bank is part of the application it self. Which means the programming operation can happen while the application is running

  - Live Update Application = (Bootloader Code in Live Update mode + Application code)

- The application code is responsible to send a request to bootloader live update code to perform a bank swap and reset to run the new firmware programmed in Inactive bank

MIPS Based MCUs

- Switcher Application in Boot flash memory is required to select the bank with latest firmware

  - At reset switcher first maps Bank 1 to lower region and reads the serial numbers from both banks

  - If Bank 2 serial number is greater than Bank 1 serial number, it maps Bank 2 to lower region by setting the Swap bit and runs the new firmware from BANK 2 else continues to run firmware from BANK 1

- The bootloader live update code responsible to program the inactive bank is part of the application it self. Which means the programming operation can happen while the application is running

  - Live Update Application = (Bootloader Code in Live Update mode + Application code)

- The bootloader live update code will always program the new image in the inactive bank

- The application code is responsible to send a request to bootloader live update code to perform a bank swap and reset to run the new firmware programmed in Inactive bank

- Once this request is received the bootloader live update code performs below operation before initiating a reset to run new firmware

  - Inactive Serial number = Active serial number + 1