Hello,
I am fairly new to this, so please excuse any ignorant or seemingly stupid questions - I am still learning here (so be gentle!)
I have built an application on an F28335 eval kit. I have built my system to boot from flash, and then I want to move a lot of the time critical routines into RAM. I have managed to do that following the examples and documentation with no significant problems.
However, as part of this, I also need to put the math libraries into RAM for quicker execution as well. I have found the way to do that in the linker file is doing something like:
.rts { -lrts2800_fpu32.lib (.tex) } >> RAML3, PAGE = 0
This works great for the initial running of the system, and everything runs fine when I start the application from the debugger. However, when I power cycle the device, I would like it to immediately boot from flash, and begin running again (after re-initializing RAM properly). However, that is not the case because of the math library.
I move my own code sections into RAM using the memcopy command like is specified in the documentation - I do this as part of the init routine. It looks something like this:
(in linker file):
ramfuncs : LOAD = FLASHD,
RUN = RAML0,
LOAD_START(_RamfuncsLoadStart),
LOAD_END(_RamfuncsLoadEnd),
RUN_START(_RamfuncsRunStart),
PAGE = 0
(in init code):
memcpy(&RamfuncsRunStart,
&RamfuncsLoadStart,
&RamfuncsLoadEnd - &RamfuncsLoadStart);
However, I cannot figure out how to move the library into RAM at run time in a similar manner.
So my question is how would I affect the same copy from flash and into RAM after a reset or power cycle of the linked in library routines? What is normally done about things
like this? If I leave the math library in flash and do not move it to RAM in the linker file, everything works splendidly and will come back after the power cycle. I just cannot have
the performance impact that this causes, so I need to move the libraries into RAM.
Any help or suggestions would be greatly appreciated! Thanks!
-Jeff