November 27, 2023

STM32H747I-DISCO "Discovery kit with STM32H747XI MCU" -- Address map

The board has an STM32H747XIH6U part. The last 5 letters are important. In particular the "XI" indicates this part has 2M of flash (in two 1M banks) and "about" 1M of SRAM on chip.

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 - 4k
There 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"


Feedback? Questions? Drop me a line!

Tom's Computer Info / tom@mmto.org