1.9 OTA Bootloader

The OTA bootloader Library can be used to upgrade firmware on a target device without the need for an external programmer or debugger.

Features

  • Supported on CORTEX-M and MIPS based MCUs, and MPUs

  • For MCUs, Bootloader uses dual bank Flash memory or external memory to store the application image

    • Dual Bank Flash Memory: Uses Harmony 3 NVM/NVMCTRL/EFC peripheral library to communicate with the internal dual bank Flash memory

    • External Memory: Uses Harmony 3 Serial Memory drivers to communicate with the associated serial memory. Below are the serial memory drivers used.

      • I2C EEPROM: AT24 Driver

      • SPI EEPROM: AT25 Driver

      • SPI Flash: SST26 Driver

      • QSPI Flash: SST26 Driver

  • For MPUs, Bootloader uses SD Card/NAND/Serial Flash memory to store the OTA application image

OTA Bootloader With Dual Bank Flash Memory (For MCUs)

ota_bootloader_dual_bank_block_diagram
  • Bootloader Task (Dual Bank)
    • Uses Harmony 3 NVM/NVMCTRL/EFC peripheral library to read the control block (Metadata) stored in dual bank Flash memory

    • Checks for update in control block (Metadata)

    • Updates control block (Metadata) in dual bank Flash memory, swap bank and trigger reset

    • Jumps to the Application

    • Runs in Cooperative mode with other tasks in the system

OTA Bootloader With External Memory (For MCUs)

ota_bootloader_external_memory_block_diagram
  • Bootloader Task (External Memory)
    • Uses Serial Memory driver to read the control block (Metadata) stored in external memory

    • Checks for update in control block (Metadata)

    • Reads the application binary stored in external memory

    • Erases the Internal Flash memory

    • Programs the read binary into Flash memory

    • Verifies the programed application

    • Updates the control block (Metadata) in external memory

    • Jumps to the Application

    • Runs in Cooperative mode with other tasks in the system

OTA Bootloader With External Memory (For MPUs)

mpu_ota_btl_block_ext_mem_diagram
  • AT91Bootstrap loads MPU OTA bootloader from SD Card/NAND/Serial Flash memory to DDR memory and executes it

  • MPU OTA Bootloader Task

    • Reads the metadata (image size) stored in the external memory

    • Reads the OTA application binary stored from the external memory and Programs the binary to the DDR memory

    • Jumps to the OTA Application

    • Runs in Cooperative mode with other tasks in the system