Hello,
I'm using IAR v6.50.5, a Segger J-Link with utilities v4.74a, and a Tiva TM4C1231D5PZ (Stellaris LM4F112C4QC) microcontroller clocked at 50MHz.
I have a periodic timer interrupt, which executes a handler that consumes about 1600 clock cycles (measured by reading the value of a 64-bit timer at the beginning and end of the handler).
In the following case, the program unexpectedly 'jumps' to the wrong address:
- Using rev A3 silicon (this problem does NOT occur with rev B1 silicon--I have tried on several boards of each revision that are identical other than the microcontroller)
- Attached to the debugger (this problem does NOT occur when not communicating the debugger--when this problem occurs a simple Power On Reset 'fixes' it)
- The timer load value is set to 6000Hz (50000000/6000)or above (does not occur when the frequency is 5000Hz or below; I also checked the disassembly and the only thing that the compiler changed is this load value)
- The TI flash-resident serial bootloader is present (does not occur when the bootloader is removed from the project)
When I say the program 'jumps', I mean it is re-entering the bootloader and getting stuck there. The 'jump' occurs immediately after the timer that triggers this interrupt is enabled via a call to MAP_TimerEnable().
I checked the errata, but do not see anything to explain why this problem only occurs on the rev A3 silicon.
Any advice on how to further troubleshoot this would be greatly appreciated.
Thanks!