Bootloader Jump Routine

Hard C Architecture
Solve this problem

Write a C routine to jump from application firmware to bootloader safely on Cortex-M. It must disable interrupts, deinit peripherals, set MSP to bootloader stack address, and branch to reset handler.

Constraints

  • Bootloader address provided as argument.
  • Extract MSP and reset vector.
  • Use function pointer.
  • __disable_irq() before jump.
  • Should never return.
  • Clear pending interrupts.
Starter codeC
1#include <stdint.h>2void jump_to_bl(uint32_t addr);