Sonix QMK Study - gloryhzw/qmk_tool GitHub Wiki

26x boot flow

[original FW]

  1. 0x04 reset vector = 0xd9
  2. [0xd8] jump to 0x7801 flash boot loader
  3. check boot pin, if low go 0x1FFF0009 for BL mode
  4. jump to bootloader 0x1FFF0101, which jumps back to 0xDD for the normal boot

[QMK jumploader]

  1. 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
    }
}