AnsweredAssumed Answered

After Moving Vector Table Device Crashes on First IRQ

Question asked by Jim Fell on Jun 20, 2018
Latest reply on Jun 22, 2018 by Jim Fell

I've updated my linker file, so that the IVT should be located at 0x2300.

 

MEMORY
{
m_flash_config (RX) : ORIGIN = 0x000022F0, LENGTH = 0x00000010
m_interrupts (RX) : ORIGIN = 0x00002300, LENGTH = 0x00000100
m_foo_data (RW) : ORIGIN = 0x00002400, LENGTH = 0x00000400
m_bar_data (RW) : ORIGIN = 0x00002800, LENGTH = 0x00000400
m_baz_data (RW) : ORIGIN = 0x00002C00, LENGTH = 0x00000400
m_qux_data (RW) : ORIGIN = 0x00003000, LENGTH = 0x00000400
m_text (RX) : ORIGIN = 0x00003400, LENGTH = 0x0003CC00
m_data (RW) : ORIGIN = 0x1FFFE000, LENGTH = 0x00008000
}

Upon launching the debugger I can see the IVT at 0x2300, as well as the implemented ISR vectors at their respective offsets, in the memory view.  My SCB->VTOR value is also set to the expected 0x2300.  The only other thing I see, which I can't explain, is that when I inspect __VECTOR_TABLE it's value is still 0x20006000.  I'm not sure if that's an issue or not.  I have only these four ISRs implemented:

 

  • ADC0_IRQn
  • PIT_IRQn
  • TPM2_IRQn
  • LPUART0_IRQn

 

Does anyone know what's wrong here?

Outcomes