I'm using PSoC 63, running BLE dual core (Controller on CM0+, Host and Profiles on CM4). I don't use CM0+ for anything else -- the bulk of my application is running on CM4. I'm looking at the linker script cy8c6xx7_cm0plus.ld and I see:
ram (rwx) : ORIGIN = 0x08000000, LENGTH = 0x24000
which is more memory than the CM4 gets. From cy8c6xx7_cm4_dual.ld:
ram (rwx) : ORIGIN = 0x08024000, LENGTH = 0x23800
I have to wonder if the BLE Controller really needs all of that RAM. Could I move the line down to devote more RAM to CM4? Just how much RAM does the Controller on CM0+ need?
Looking at my .map file, I see
.heap 0x08000850 0x400 .\CortexM0p\ARM_GCC_541\Debug\startup_psoc6_01_cm0plus.o 0x08000c50 __HeapLimit = .
.stack 0x08000850 0x1000 .\CortexM0p\ARM_GCC_541\Debug\startup_psoc6_01_cm0plus.o 0x08024000 __StackTop = (ORIGIN (ram) + LENGTH (ram)) 0x08023000 __StackLimit = (__StackTop - SIZEOF (.stack_dummy))
Does that mean that all the space between 0x08000c50 and 0x08023000, (140,208 [0x223B0] bytes) is unused?
To answer your initial question: " This depends on whether LE 2M, DLE and Privacy features are used. Assuming that all of these features are used, the RAM required for cm0p controller can be easily determine using a PSoC Creator Project.
OK, but that's not very helpful for determining how much is used by CM0+ vs. CM4.
The GCC-ARM comes with some tools to output the size of sections. You can refer to this link:
You need to execute these commands on the ELF file of your application.