This is for the C6678 with CCSv5.1 and compiler version v7.3.5 on Windows.
I am developing a system where individual processing functions are performed on each core of a 6678. The programs in each core communicate using IPC (1.24.2.27). The processing function was written and optimized by another team member to run in L1P/L1DL2. The IPC code will run in DDR3 and calls the processing function in L1 for every frame.
During early development, I just loaded everything into DDR3 because my concern was with debugging the IPC functions rather than the overall system performance. The code worked correctly that way, just not very fast. Note that I am not using the cache at all because the processing function was written to carefully use L1 and L2.
Now I'm using a linker command file to put the desired processing functions in L1P. The problem is that the L1P data is loaded correctly by the emulator, but is overwritten before main() is executed. I verified this by setting the debug options to not run to main after loading the program, inspecting L1P values, running to main(), and inspecting L1P again.
If I immediately reload the core with the same program and repeat the test then the L1P values are not overwritten!
This feels like some kind of uninitialized variable problem, but I don't know where to start tracking it down.
Thanks,
Fred