Part Number: CC2640R2F
Other Parts Discussed in Thread: CC2640, CC2650
Hi,
I'm working on a project based on the simple_peripheral example that runs some safety-critical code before RTOS is started. Part of that code is registering an interrupt to be able to wake the device up from shut down. I've been seeing some strange behaviour in the initialisation of RTOS/Bluetooth that seems to disappear when I comment out the line registering an interrupt. On closer inspection it seems that the call to IntRegister copies the vector table from the XDC-defined offset at 0x20000000 to another RAM location defined by g_pfnRAMVectors. When I get to starting RTOS I can see via the memory viewer that the "old" vector table at address 0x2000000 is being updated, not the new location. It would seem to me as thought the RTOS/Bluetooth initialisation is looking at a hard-coded address for its vector table rather than using the VTOR register.
Is this correct? Is there any way to ensure the VTOR register value is used instead? Alternatively can I force g_pfnRAMVectors to sit at 0x2000000?
I currently have a workaround whereby I copy the vector table from g_pfnRAMVectors into 0x20000000 before BIOS_start() and everything seems to work but it's not as clean as I'd like.
Thanks,
Hester