This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28377D: Override SysCtlDelay .sect

Part Number: TMS320F28377D


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