Other Parts Discussed in Thread: MSP430FR2476,
we are writing our own bootloader, to make sure we have control over the device. We are running into a problem and wonder if you could look at the following;
After power up the bootloader is executed.
Its interrupt vector is copied from FRAM (0xFF80 – 0xFFFF ) to top of RAM ( 0x2F80 – 0x2FFF )
The Stack pointer will start at 0x2F7F, so it does not interfere with the RAM int vect.
After that we relocate the interrupt vector to ram by setting:
/* use the ram interupt vector */
SYSCTL |= SYSRIVECT;
Now the only interrupt that has been enabled is the UART interrupt.
Our problem is, as soon as the interrupt fires (we receive a byte), the program goes into the woods and resets due to the watchdog.
If we do not relocate to RAM VECT, the program works fine, but we still have same problem when the application is loaded and it changes its interrupt vector to top of RAM.
Now here is the funny thing:
If we use the development board (with the MSP430FR2476 chip), and relocate the interrupt vector to top of RAM ( 0x3F80 – 0x3FFF ), it works fine! The stack pointer still works from 0x2F7F.
For this design the bootloader works perfect, and the application loads and executed correctly.
Is there an anomaly in the MSP430FR2475 or does is the RAM interrupt vector located at another spot?