1.2 UDP Live Update

This example application shows how to use the Bootloader Library as a Live Update application using UDP protocol on devices with Dual Bank Support.

Memory Layout

Switcher Application (For PIC32MZ Devices Only)

  • This is a Switcher application which resides from the starting location of the Boot Flash memory region
    • A Custom linker file has to be added manually to project to place the application in Boot Flash Memory
  • It Performs below operations
    • At reset it always maps the Program Flash Memory BANK 1 to lower memory region (0x9D000000)
    • At First Bootup it initializes the Flash Serial region of both banks and jumps to BANK 1 which is mapped to lower region (0x9D000000)
    • At subsequent resets it reads the Serial Number from both the banks to decide which bank has the latest firmware
      • If Bank 1 serial number is greater than Bank 2 serial number it jumps to (0x9D000000) location. As Bank 1 is already mapped to lower region in above step application in Bank 1 starts running and this becomes Active Bank.
      • 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 jumps to (0x9D000000) location. As Bank 2 is now mapped to lower region, application in Bank 2 starts running and this becomes Active Bank.
    Note: The Switcher project does not have any programing capabilities. It just performs above mentioned operation at reset.

Live Update Application

  • This is a UDP Live Update application which resides from start of
    • Program Flash memory (0x9D000000) for PIC32MZ Devices
      • A custom linker file live_update.ld will be generated by MCC to place the application in Program Flash memory
    • Internal Flash memory (0x00000000) for SAM Devices
  • This project uses the UDP Bootloader library to receive the new firmware to be programmed to Inactive Bank
    • Here the new firmware will be a updated version of same Live Update application. As the firmware running in other bank also needs to have the programming capability.
  • Apart from the programming capability this project can perform other application tasks simultaneously which makes it a Live Update application
  • It calls the bootloader_Tasks() function which receives application to be programmed into Inactive Bank over the configured UDP port
    • It uses the UDP port to receive application hex from host PC using the Unified Bootloader Host Application
      • Port number: 6234
      • IP Address: 192.168.1.11
  • It calls Application Tasks routine which
    • Blinks an LED every 1 second
    • Prints Messages over UART console
  • It uses the On board Switch to
    • Update the Serial Number of Inactive bank where the new firmware is programmed and then trigger a reset to run new firmware for PIC32M devices
    • Swap the bank and trigger reset to run new firmware programmed in Inactive bank for SAM devices