Cortex Memory Usage (Flash vs. RAM)

I know the Cortex MCU has 64KB RAM, but I’m not sure how much of that is used by the various OS families (EasyC, RobotC, PROS, ConVEX). With the limited RAM that was available on the PIC, I think I remember figuring out how to put my look-up tables (LUT) in “program memory” (i.e. Flash) as opposed to data memory (RAM).

  1. Is there away to create a memory map file with the different IDEs we typically use (personally I’m most interested in PROS and/or ConVEX)?

  2. Are there compiler directives/switches that will force constant arrays to be placed in “ROM” instead of RAM?

  3. Is there some other way to estimate how much free RAM there will be once the system enters run-time?

I cannot give a comprehensive answer right now, but…

Sure, but I need a little time to put that together.

Yes, usually the “const” keyword can do this. This works in ConVEX (and should also in PROS and perhaps EasyC), big array in read only memory.

const char bigArray[100000] = {1,2,3,4};

There is in ConVEX, the system calls chCoreStatus and chHeapStatus can be used to do this. You can also use the command “mem” from the CLI to show whats available. Use the same serial port as you downloaded on for the CLI, run a terminal program, e.g… “screen” on OSX.

Was it a .map file from the linker you wanted? If so, ConVEX does that as part of the normal build process, the option for the linker can easily be added to the PROS makefile. A bit harder with EasyC but not impossible. ROBOTC can give compile statistics but that’s about it.