Problems when modifying interrupt vector table in RAM
I am working with the STM32F045-microcontroller and I write my source code in Eclipse and I build with GNU ARM C/C++ Cross Compiler and I debug using GDB OpenOCD Debugging with ST-LINK/V2. I have placed the interrupt vector table in RAM and it works fine:
__attribute__ ((section('.isr_vector_ram'),used))
uint32_t __isr_vectors_ram[sizeof(__isr_vectors)/sizeof(__isr_vectors[0])];void moveISRtableToRAM(void) {
memcpy(__isr_vectors_ram, __isr_vectors, sizeof(__isr_vectors)); SCB->VTOR = (uint32_t)__isr_vectors_ram;}However, I run into problems when I modify it:
void mySoftwareIntHandler(void) {
}
#define SKIP_Cortex_M_Core_Handlers_OFFSET 17
__isr_vectors_ram[SKIP_
Cortex
_
M
_
Core_
Handlers_OFFSET
+ CAN2_RX1_IRQn] = (uint32_t)mySoftwareIntHandler;My code crashes when I try the above. Does anybody know what's wrong?