1.3 MPU OTA Bootloader - SD/NAND/Serial Flash

This example application shows how to use the MPU OTA Bootloader Library to bootload an application from SD/NAND/Serial Flash memory and receives new application image using RNBD and write it to SD/NAND/Serial Flash memory.

MPU OTA Bootloader and Applications Block Diagram

mpu_ota_btl_block_ext_mem_diagram

OTA Bootloader

  • This is a bootloader application which resides from:

    • OTA Bootloader stored into SD/NAND/Serial Flash memory

    • OTA Bootloader executes from DDR memory. AT91Bootstrap loads OTA bootloader from SD/NAND/Serial Flash memory to DDR memory and executes it.

    • Then OTA Bootloader loads OTA application image from SD/NAND/Serial Flash memory to DDR memory and executes it

Performs Below Operation:

  1. Read the metadata (image size) stored in the external memory.

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

  3. Run OTA application as below:

    • Calls the SYS_Deinitialize() function which releases the resources used. This Function is device specific and has to be implemented based on application requirement.

    • Jumps to application space to run the OTA application

OTA Application

  • This is a OTA application which resides from:

    • OTA Application stored into SD/NAND/Serial Flash memory
  • It blinks an LED and provides console output

  • It calls the OTA_SERVICE_Tasks() function which receives the binary over OTA to be programmed into the external memory

  • Once the binary is received and programmed into the external memory, it generates a CRC32 value over programmed external memory space and verifies it against the received CRC32

  • If verification is successful then it updates the metadata (image size) and trigger reset to run new application binary through OTA bootloader

Development Kits

The following table provides links to documentation on how to build and run OTA bootloader and application on different development kits