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

Development Kits The following table provides links to documentation on how to build and run UDP Live Update on different development kits