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 the 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

Rev: G