The Build Analyzer says my processor STM32L443CC has 64K RAM and 16K RAM2. And I am not using any RAM2. What is RAM2 and how do I use it?
On other processors sometimes there are keywords when defining variables to specify which memory area the variable should be stored in. Or there is a #pragma statement.
I have not seen either in the STM32 or the IDE.
I am guessing RAM2 might be a good place to put DMA transfers so the processor working in RAM does not interfere as much with the transfer. But I do not know how to access it in any case.
According to the memory map SRAM1 starts at address 0x2000 0000 and SRAM2 starts at 0x2000 C000, (it drives me crazy when different documents use different names for the same thing) which makes me think they overlap? Unless the memory map is dealing in 32-bit dwords rather than 8-bit bytes. But then I would expect to see a gap between SRAM1 and SRAM2.
I see SRAM2 can be write protected. But still nothing about how to access it.
And SRAM2 can be retained in standby mode.
In the STM32L443CC STM32L443RC and STM32443VC datasheet (DS11421 Rev 5
On page 83/220 it says CODE memory goes from 0x0000 0000 to 0x1FFF FFFF.
SRAM1 goes from 0x2000 0000 to 0x2BFF FFFF and SRAM2 is from 0x2C00 0000 to undefined from the picture but less than 0x4000 0000 where the peripherals start.
But then it shows SRAM2 also from 0x1000 0000 to 0x1000 4000. So it has two mappings? How do you know which one to use?
Still I have not seen how to access it using the IDE.