You might think that you have flash here and sram there and that is the end of it.
You would be very wrong.
Flash is in two banks and there are a variety of complex things you need to know about. SRAM is even more complex with different sections and types.
0x0000_0000 to 0x0000_ffff -- ITCM, 64K (0 wait state instruction ram) 0x0800_0000 to 0x080f_ffff -- Flash, first 1M bank 0x0810_0000 to 0x081f_ffff -- Flash, second 1M bank 0x1000_0000 to 0x1001_ffff -- SRAM1, 128K (alias) 0x1002_0000 to 0x1003_ffff -- SRAM2, 128K (alias) 0x1004_0000 to 0x1004_7fff -- SRAM3, 32K (alias) 0x1ff0_0000 to 0x1ff1_ffff -- System Memory, 128K 0x2000_0000 to 0x2001_ffff -- DTCM, 128K (0 wait state data ram) 0x2400_0000 to 0x2407_ffff -- AXI SRAM, 512k 0x3000_0000 to 0x3001_ffff -- SRAM1 - 128K 0x3002_0000 to 0x3003_ffff -- SRAM2 - 128K 0x3004_0000 to 0x3004_7fff -- SRAM3 - 32K 0x3800_0000 to 0x3800_ffff -- SRAM4 - 64K 0x3880_0000 to 0x3880_0fff -- backup SRAM - 4kThere is "128K of system flash memory from which the device can boot". Is this the system memory noted above and if so how does it relate to the 1M flash blocks? Section 4 of RM0399 gives all the details, including information about the bootloader.
The ram is partitioned into:
64K of ITCM ram 128K of DTCM ram 864K of user SRAM 4K of ram in "backup domain"Note that the total of AXI + SRAM1,2,3,4 is 864K
TCM is "time critical memory" and is 0 wait state.
ITCM is for instructions.
DTCM is partitioned into two that can be used in parallel.
All this SRAM seems to add up to more than 1024K. And the datasheet says, "all devices feature around 1 Mbyte of RAM with hardware ECC"
Tom's Computer Info / tom@mmto.org