I ran into an issue where RAM was not being loaded properly on a the 28377D Delfino when anything is loaded into flash per this post and this post. I had managed to move everything except 4 bytes out of flash, which seemed to solve the problem and I could not figure out what was loading the 4 bytes into flash, so I gave up. Recently, I found string constants being corrupted and I remembered the anything in flash could corrupt RAM load restriction. I was able to find the 4 bytes finally and it turns out to be SysCtlDelay().
I'm not using SysCtlDelay(), but I am using other functions in sysctl.c. SysCtlDelay() is defined as:
__asm(" .def _SysCtlDelay\n"
" .sect \"ramfuncs\"\n"
" .global _SysCtlDelay\n"
"_SysCtlDelay:\n"
" SUB ACC,#1\n"
" BF _SysCtlDelay,GEQ\n"
" LRETR\n");
which forces it to be located in ramfuncs, which is loaded into flash. How do I override SysCtlDelay .sect? Presently, I am disabling that line of code, but generally, I do not think it should not be necessary to modify library code, instead library code should be used as is.
Best Regards,
Joseph