I deployed an application last year with CCS5 and compiler version 6.0.2. I have upgraded to CCS6.1 with compiler 6.4.2 since, and now this working code will not execute. I believe I have narrowed it down to a memcpy call within rts2800_fpu32.lib. I attached a screen-shot of a diff between the current/bad map file and the original/good map-file. On the right is the old/good map-file from last year, and in this you will see the memcpy_ff function within rts2800_fpu32.lib, which is 21 words long.
On the left side is the new/bad map file, and the memcpy function (note it is now memcpy, not memcpy_ff) is only 3 words long.
Executing this new code in the debugger, at a structure copy in DSP2833x_ECAN.c (probably the first structure copy that occurs during the init-process), the resulting assembly language from this C line:
canes_shadow.all = ECanaRegs.CANES.all
attempts to call the 3word-long memcpy, and the code flies off into bad memory space.
I have verified that my rts2800_fpu32.lib is the latest available. Also on some machines, if I change the compiler version to 6.2.7, the code will execute (and the map-files both show a memcpy_ff function), but this is inconsistent between machines, so it is not a viable solution.
Thanks,
Jim