I’m afraid your conclusion is incorrect. While it’s true interrupt vectors are assigned in the bootloader, they are only in affect while the bootloader is running. They are reassigned in main firmware. First, by WICED, which sets the SCB->VTOR pointer to it’s own interrupt block, and then again by our code, which moves the ISR block to RAM so we can hook some of the interrupts.
Overriding the interrupts using weak function overrides requires static linking. On the Photon, the user firmware is dynamically linked to the system firmware, so this method of function overriding won’t work. (Also it’s quite fragile, dependent upon the order that modules are passed to the linker, so I’m pleased we have escaped that potential trap.)
This PR is set to provide an API to allow user code to hook system interrupts. Initial focus is on timer interrupts, although all interrupt sources will be considered, including the ADC interrupt above.