My project started on the LM3S series micro and I moved to the LM4F (XM4F232H part label). Months ago I moved the library from Stellarisware to Tivaware and except for a few minor issues/bugs with the library, have been operational for a while. Recently, I noticed my CCS project is still set up for the LM3S5R31 micro and proceeded to change it to the LM4F232H5QDF (TM4C123GH6PGE) part. This change broke the code to run. It appears that the startup code no longer sets the NVIC-VTABLE register to point to the code start offset of 0x4000. It begins at 0 and the first interrupt I register (SysTick) ends up copying the bootloader interrupt vector instead of the application vector.
I have been through many different tests to locate the issue without success. I have verified the .cmd files are still correctly set up. I have even reverted the project file to the original before the change and it too doesn't undo this problem. I have copied the startup_ccs.c file from the example projects to replace the startup.c I had previously and that too doesn't work. I looked through the _c_int00 function in the boot.asm file for where this register gets loaded and couldn't find anything there either. I tried pointing the project setting to use the specific command file below located within my project.
UPDATE: I tried version 5.3. and version 5.4.0 of CCS and have tried this on two different computers.
The final problem I have now is selecting the old LM3S device does not undo the issue and so I seem stuck in this mode. What happened in the start-up or initialization code when the Device was changed that broke this and how do I undo it? Also, why doesn't the LM4 or TM4 devices load this register value correctly and the LM3 device did? Is there a workspace value that is holding this bug as I have reverted everything in the project except my source files and it still doesn't work? Is there a bug in the XM4 hardware that the LM4F and TM4C devices are not compatible? How is the LM3S device setting able to make this work?
Thanks, -Tim