Sonix QMK Study - gloryhzw/qmk_tool GitHub Wiki
26x boot flow
[original FW]
- 0x04 reset vector = 0xd9
- [0xd8] jump to 0x7801 flash boot loader
- check boot pin, if low go 0x1FFF0009 for BL mode
- jump to bootloader 0x1FFF0101, which jumps back to 0xDD for the normal boot
[QMK jumploader]
- 0x4 reset vector = 0xcd = _start
void _start(void) {
if (!firmware_valid() || bootloader_requested() || boot0_low() || key_held()) {
/* Jump to the embedded bootloader */
void (*recovery)() = (void*)SN32_BOOTLOADER_ADDRESS;
recovery();
} else {
/* Jump to the firmware */
jump_vector(SECOND_STAGE_VECTOR); // jump 0x200 for normal boot
}
}