1.3 USB Device HID Live Update
This example application shows how to use the Bootloader Library as a Live Update application using USB Device HID protocol on devices with Dual Bank Support.
Memory Layout
- For Cortex®-M based MCUs, refer to the Live Update Memory Layout for Cortex-M Based MCUs
- For MIPS Based MCUs, refer to the Live Update Memory Layout for MIPS Based MCUs
Switcher Application (For PIC32MZ/PIC32MK 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 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 USB Device HID Live Update application which resides from start of:
- Program Flash memory (0x9D000000) for PIC32MZ/PIC32MK 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
- Program Flash memory (0x9D000000) for PIC32MZ/PIC32MK Devices
- This project uses the USB Device HID 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 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 USB Device HID port
- It uses the USB Device HID port with Product ID 0x3C to receive application hex from host PC using the Unified Bootloader Host Application
- 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
