1.3.2 PIC32MK MCM Curiosity Pro Development Board: Building and Running the USB Live Update Applications
Downloading and Building the Application
To clone or download this application from Github, go to the main page of this repository and then click Clone button to clone this repo or download as zip file. This content can be download using content manager by following these instructions.
Path of the application within the repository is apps/usb_live_update/.
To build the application, refer to the following table and open the project using its IDE.
Switcher Application
| Project Name | Description |
|---|---|
| switcher/firmware/pic32mk_mcm_curiosity_pro.X | MPLAB X Project for PIC32MK MCM Curiosity Pro Development Board |
Live Update Application
| Project Name | Description |
|---|---|
| live_update_app/firmware/pic32mk_mcm_curiosity_pro.X | MPLAB X Project for PIC32MK MCM Curiosity Pro Development Board |
Setting Up PIC32MK MCM Curiosity Pro Development Board
- Connect a micro USB cable to the USB to UART port J400. This will enumerate as a COM port on the PC.
- For programming, connect a micro USB cable to the USB Debug port J500
- Use the micro-AB port J200, which is located on the bottom side of the board, to connect the USB device to the USB Host PC
- Place the Switch S200 direction towards device
Running the Application
- Open the switcher application project switcher/firmware/pic32mk_mcm_curiosity_pro.X in the IDE.
- Ensure that the live_update_app/firmware/pic32mk_mcm_curiosity_pro.X is
added as a loadable project to switcher application.
- As the Switcher application does not have any programming capabilities. Adding the live_update_app as loadable allows MPLAB X to create a unified hex file and program both these applications in the respective memory location based on the respective linker scripts.

- Open the Terminal application (e.g., Tera Term) on the computer to get Live Update application messages through UART once loaded.
- Configure the serial port settings as follows:
- Baud: 115200
- Data: 8 Bits
- Parity: None
- Stop: 1 Bit
- Flow Control: None
- Build and program the Switcher application using the IDE.
- LED3 should start blinking once programming is completed and below message has
to be displayed on the console.
- The user can see how the Live Update application was loaded in BANK 1 by IDE and switcher application jumped BANK 1 to run it
- HID Custom device with product ID 3C will be enumerated on Host PC

- Launch the Unified Host application from below path:
- <harmony3_path>/bootloader/tools/UnifiedHost-*/UnifiedHost-*.jar
- Configure the Unified host application.
- Select the Device Architecture and Protocol as shown below

- Click the Configure button and select the USB Device as
3C

- Load the Live Update application hex file to be programmed using below
option
- <harmony3_path>/bootloader_apps_usb/apps/usb_live_update/live_update_app/firmware/pic32mk_mcm_curiosity_pro.X/dist/pic32mk_mcm_curiosity_pro/production/pic32mk_mcm_curiosity_pro.X.production.hex

- Open the Console window of the host application to view application
bootloading sequence

- Select the Device Architecture and Protocol as shown below
- Click the Program Device
button to program the loaded Live Update application hex file on to the
device.
- The user can note that throughout the programming sequence and after programming the LED3 will be blinking as the application task is running along with bootloader task (Live Update Feature)

- Following figure shows output of successfully programming the test
application.
- Ignore the Device Reset Messages from the host tool. The Live Update application ignores the reset command received and waits for a switch press to update serial number and reset.

- Press the Switch SW1 to update serial of Inactive Bank and trigger reset. The
user should see below output on success.
- This step shows that the new firmware programmed in BANK 2 is running which is mapped to lower region by switcher at reset

- Repeat Steps 9-11 for further updates and observe the Banks from which application is running at every update.
Configurations to Be Noted
Switcher Application
- The USB Live Update application requires the UPLLEN Device
configuration bit to be set to ON and POSCMOD Device configuration
bit to be set to EC. This has to be done in Switcher as the device
configuration bits are part of Boot Flash memory and can be only programmed
by Debugger.
- The Device configuration bits of the Live Update application will be discarded
- As custom linker script for Switcher is being used, the default linker file
generation has to be disabled

Live Update Application
- Enable Live Update option to configure USB Device HID bootloader in Live
Update mode

- Normalize hex file:
- Check the Normalize hex file option as shown below, as the Unified bootloader host application takes hex file as an input. Normalizing the hex file will ensure the data in the hex file is arranged sequentially.

