This is a recurring problem on the forum but there hasn't been a solution TMK, let's try again :)
The XMEGA DFU bootloader is supposed to be able to be entered by jumping to a magic offset inside the bootloader:
Internal firmware request: The user application can decide to start a DFU session. This can be achieved by jumping to a specific address in the boot loader firmware. The entry point to start a DFU session initiated by a user application firmware jump is BOOT_SECTION_START + 0x1FC for all devices
but no amount of
void (*bl)(void) = (BOOT_SECTION_START + 0x1FC) / 2; bl();
will get me there (with or without the divide-by-two, udc_stop() calls, interrupt vector table location changes etc.). Has anyone actually done this? Care to share? I'm on an ATXMEGA256A3BU FWIW.