USB Library
Changing the Memory Footprint

By default, the bootloader firmware project reserves and occupies the 0x000-0xFFF region (PIC18) or 0x000-0x8FF (PIC16) program memory region. It is possible to move this boundary (ex: if more space is needed for the bootloader firmware, such as when trying to build/use the bootloader with a free/non-optimizing version of the C compiler). 

In order to move the boundary, the new boundary must be chosen that aligns perfectly with a native flash memory erase block size (ex: the boundary cannot reside in the middle of an flash memory erase page). Additionally, moving the boundary requires changing the bootloader definitions (REMAPPED_APPLICATION_RESET_VECTOR, REMAPPED_APPLICATION_HIGH_ISR_VECTOR, REMAPPED_APPLICATION_LOW_ISR_VECTOR, APP_SIGNATURE_ADDRESS, APP_VERSION_ADDRESS) in both the bootloader firmware project, as well as in the application firmware project intended to be programmed by the bootloader firmware. 

When moving the APP_SIGNATURE_ADDRESS, make sure that the newly selected address always resides fully on the very first flash memory erase page that gets erased by the bootloader, in order to avoid defeating the robustness features offered by the flash signing process. 

Additionally, both the bootloader firmware project and application linker settings must be modified. When using the C18 compiler, this entails modifying both the application and bootloader firmware .lkr files, so as to allocate more space for the bootloader. When using the XC8 compiler, the linker settings must be modified in both the bootloader firmware build configuration, as well as the application firmware image project build configuration.

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