USB Library
Input Button/Hardware Entry

The HID bootloader firmware occupies the hardware reset vector of the microcontroller (ex: the reset vector is 0x0000, which is part of the HID bootloader program memory space). During boot up of the microcontroller, firmware execution will therefore begin from within the bootloader firmware project. 

Early in the boot up sequence, the HID bootloader firmware can optionally perform a general purpose I/O pin check, which would typically be connected to an external push button and pull up (or pull down) resistor. If the I/O pin is in the “active” state (ex: user is actively pressing a button), as defined by the application, the HID bootloader firmware can decide to stay in the “firmware update mode” and can therefore hold off normal execution of the application run mode image. If however the I/O pin is in the inactive state (ex: button not pressed), then the boot up routine would normally decide to execute in application run mode, and would perform a jump to the remapped application image reset vector (see Memory Map Overview section). 

The I/O pin check method is the most rugged method of entering the firmware update mode, since it does not require the application firmware image to be intact (at all) to get into the bootloader mode. However, software entry is also possible and may be more convenient in applications that do not have user exposed pushbutton(s) available. 

The I/O pin check entry method into the firmware update mode is optional, and can be disabled if entry into the bootloader will only be performed by using the software entry method.

MLA - USB Library Help Version : 2.16
http://www.microchip.com/mla