2. System and memory overview

2.1 System architecture

The main system architecture is based on 2 sub-systems:

Figure 1. System architecture for STM32F76xxx and STM32F77xxx devices

System architecture diagram for STM32F76xxx and STM32F77xxx devices showing the ARM Cortex-M7 core, memory hierarchy, and peripheral connections.

The diagram illustrates the system architecture for STM32F76xxx and STM32F77xxx devices. At the top, the ARM Cortex-M7 core is shown with its 16 KB I/D Cache . It is connected to DTCM and ITCM memory. Below the core, an AXI to multi-AHB bridge is connected via AXIM . This bridge connects to a 32-bit Bus Matrix - S . The bus matrix is connected to various peripherals and memory blocks via AHB and AXI interfaces. The peripherals include GP DMA1 , GP DMA2 , MAC Ethernet , USB OTG HS , LCD-TFT , and Chrom-ART Accelerator (DMA2D) . The memory hierarchy includes DTCM RAM 128KB , ITCM RAM 16KB , FLASH 2MB , SRAM1 368KB , and SRAM2 16KB . The 64-bit AHB bridge is connected to the FLASH 2MB . The 64-bit Bus Matrix is connected to the SRAM1 368KB and SRAM2 16KB . The APB1 and APB2 buses are connected to the 32-bit Bus Matrix - S via AHB Periph1 and AHB periph2 respectively. Other components include FMC external MemCtl and Quad-SPI . The diagram is labeled with MSv39621V1 in the bottom right corner.

System architecture diagram for STM32F76xxx and STM32F77xxx devices showing the ARM Cortex-M7 core, memory hierarchy, and peripheral connections.

The multi-AHB Bus-Matrix interconnects all the masters and slaves and it consists on:

The multi AHB bus matrix interconnects:

2.1.1 Multi AHB BusMatrix

The multi AHB BusMatrix manages the access arbitration between masters. The arbitration uses a round-robin algorithm.

It provides access from a master to a slave, enabling concurrent access and efficient operation even when several high-speed peripherals work simultaneously.

The DTCM and ITCM RAMs (tightly coupled memories) are not part of the bus matrix.

The Data TCM RAM is accessible by the GP-DMAs and peripherals DMAs through specific AHB slave bus of the CPU.

The instruction TCM RAM is reserved only for CPU. it is accessed at CPU clock speed with 0 wait states. The architecture is shown in Figure 1 .

2.1.2 AHB/APB bridges (APB)

The two AHB/APB bridges, APB1 and APB2, provide full synchronous connections between the AHB and the two APB buses, allowing flexible selection of the peripheral frequency.

Refer to the device datasheets for more details on APB1 and APB2 maximum frequencies, and to Table 1 for the address mapping of AHB and APB peripherals.

After each device reset, all peripheral clocks are disabled (except for the SRAM, DTCM, ITCM RAM and Flash memory interface). Before using a peripheral you have to enable its clock in the RCC_AHBxENR or RCC_APBxENR register.

Note: When a 16- or an 8-bit access is performed on an APB register, the access is transformed into a 32-bit access: the bridge duplicates the 16- or 8-bit data to feed the 32-bit vector.

2.1.3 CPU AXIM bus

This bus connects the Cortex ® -M7 with FPU core to the multi-AHB Bus-Matrix through AXI to AHB bridge. There are 4 AXI bus targets:

2.1.4 ITCM bus

This bus is used by the Cortex ® -M7 and AHBS for instruction fetches and data access on the embedded flash mapped on ITCM interface and instruction fetches and data access on ITCM RAM.

2.1.5 DTCM bus

This bus is used by the Cortex ® -M7 for data access on the DTCM RAM. It can be also used for instruction fetches.

2.1.6 CPU AHBS bus

This bus connects the AHB Slave bus of the Cortex ® -M7 to the BusMatrix. This bus is used by DMAs and Peripherals DMAs for Data transfer on DTCM RAM only.

The ITCM bus is not accessible on AHBS. So the DMA data transfer to/from ITCM RAM is not supported. For DMA transfer to/from Flash on ITCM interface, all the transfers are forced through AHB bus

2.1.7 AHB peripheral bus

This bus connects the AHB Peripheral bus of the Cortex ® -M7 to the BusMatrix. This bus is used by the core to perform all data accesses to peripherals.

The target of this bus is the AHB1 peripherals including the APB peripherals and the AHB2 peripherals.

2.1.8 DMA memory bus

This bus connects the DMA memory bus master interface to the BusMatrix. It is used by the DMA to perform transfer to/from memories. The targets of this bus are data memories: internal SRAM1, SRAM2 and DTCM (through the AHBS bus of Cortex ® -M7) internal Flash memory and external memories through the FMC or Quad-SPI.

2.1.9 DMA peripheral bus

This bus connects the DMA peripheral master bus interface to the AHB-to-APB bridges or the BusMatrix. This bus is used by the DMA to access peripherals or to perform memory-to-memory transfers. The targets of this bus are the APB peripherals plus AHB peripherals and data memories (internal SRAM1, SRAM2 and DTCM internal Flash memory and external memories through the FMC or Quad-SPI) for DMA2.

2.1.10 Ethernet DMA bus

This bus connects the Ethernet DMA master interface to the BusMatrix. This bus is used by the Ethernet DMA to load/store data to a memory. The targets of this bus are data memories: internal SRAM1, SRAM2 and DTCM (through the AHBS bus of Cortex ® -M7) internal Flash memory, and external memories through the FMC or Quad-SPI.

2.1.11 USB OTG HS DMA bus

This bus connects the USB OTG HS DMA master interface to the BusMatrix. This bus is used by the USB OTG DMA to load/store data to a memory. The targets of this bus are data memories: internal SRAM1, SRAM2 and DTCM (through the AHBS bus of Cortex ® -M7), internal Flash memory, and external memories through the FMC or Quad-SPI.

2.1.12 LCD-TFT controller DMA bus

This bus connects the LCD controller DMA master interface to the BusMatrix. It is used by the LCD-TFT DMA to load data from a memory. The targets of this bus are data memories: internal SRAM1, SRAM2 and DTCM (through the AHBS bus of Cortex ® -M7), external memories through FMC or Quad-SPI, and internal Flash memory.

2.1.13 DMA2D bus

This bus connects the DMA2D master interface to the BusMatrix. This bus is used by the DMA2D graphic Accelerator to load/store data to a memory. The targets of this bus are data memories: internal SRAM1, SRAM2 and DTCM (through the AHBS bus of Cortex ® -M7), external memories through FMC or Quad-SPI, and internal Flash memory.

2.2 Memory organization

2.2.1 Introduction

Program memory, data memory, registers and I/O ports are organized within the same linear 4-Gbyte address space.

The bytes are coded in memory in Little Endian format. The lowest numbered byte in a word is considered the word's least significant byte and the highest numbered byte the most significant.

The addressable memory space is divided into eight main blocks, of 512 Mbytes each.

2.2.2 Memory map and register boundary addresses

Figure 2. Memory map

Memory map diagram for RM0410 showing memory blocks and their corresponding address ranges on AHB and APB buses.

The memory map illustrates the organization of memory for the RM0410 microcontroller. It is divided into several 512-Mbyte blocks, each with specific internal components and address ranges.

Memory BlockInternal ComponentAddress Range
512-Mbyte Block 7
Cortex-M7 Internal peripherals
Reserved0xE010 0000 - 0xFFFF FFFF
Cortex-M7 internal peripherals0xE000 0000 - 0xE00F FFFF
512-Mbyte Block 6
FMC
AHB30x6000 0000 - 0xDFFF FFFF
Reserved0x5006 0C00 - 0x5FFF FFFF
0x5006 0BFF
AHB20x5000 0000
Reserved0x4008 0000 - 0x4FFF FFFF
0x4007 FFFF
512-Mbyte Block 5
FMC
AHB10x4002 0000
Reserved0x4001 6C00 - 0x4001 FFFF
0x4001 6BFF
APB2
Reserved0x4001 0000
512-Mbyte Block 4
Quad-SPI and FMC bank 3
Reserved0x4000 8000 - 0x4000 FFFF
0x4000 7FFF
APB10x4000 0000
512-Mbyte Block 3
FMC bank 1 to bank 2
Reserved0x2008 0000 - 0x3FFF FFFF
SRAM2 (16 KB)0x2007 C000 - 0x2007 FFFF
512-Mbyte Block 2
Peripherals
SRAM1 (368 KB)0x2002 0000 - 0x2007 BFFF
DTCM (128 KB)0x2000 0000 - 0x2001 FFFF
512-Mbyte Block 1
SRAM
Reserved0x1FFF 0020 - 0x1FFF FFFF
Option Bytes0x1FFF 0000 - 0x1FFF 001F
Reserved0x0820 0000 - 0x1FFE FFFF
Flash memory on AXIM interface0x0800 0000 - 0x081F FFFF
Reserved0x0040 0000 - 0x07FF FFFF
Flash memory on ITCM interface0x0020 0000 - 0x003F FFFF
Reserved0x0011 0000 - 0x001F FFFF
System memory0x0010 0000 - 0x0010 EBBF
Reserved0x0000 4000 - 0x000F FFFF
ITCM RAM0x0000 0000 - 0x0000 3FFF
Reserved
Option Bytes

MSv39118V4

Memory map diagram for RM0410 showing memory blocks and their corresponding address ranges on AHB and APB buses.

All the memory map areas that are not allocated to on-chip memories and peripherals are considered "Reserved". For the detailed mapping of available memory and register areas, refer to the following table.

The following table gives the boundary addresses of the peripherals available in the devices.

Table 1. STM32F76xxx and STM32F77xxx register boundary addresses

Boundary addressPeripheralBusRegister map
0xA000 1000 - 0xA0001FFFQUADSPI Control RegisterAHB3QUADSPI register map
0xA000 0000 - 0xA000 0FFFFMC control registerFMC register map
0x5006 0800 - 0x5006 0BFFRNGAHB2RNG register map
0x5006 0400 - 0x5006 07FFHASHHASH register map
0x5006 0000 - 0x5006 03FFCRYPCRYP register map
0x5005 1000 - 0x5005 1FFFJPEGJPEG codec register map
0x5005 0000 - 0x5005 03FFDCMIDCMI register map
0x5000 0000 - 0x5003 FFFFUSB OTG FSOTG_FS/OTG_HS register map
0x4004 0000 - 0x4007 FFFFUSB OTG HSOTG_FS/OTG_HS register map
0x4002 B000 - 0x4002 BBFFChrom-ART (DMA2D)AHB1DMA2D register map
0x4002 8000 - 0x4002 93FFETHERNET MACEthernet register maps
0x4002 6400 - 0x4002 67FFDMA2DMA register map
0x4002 6000 - 0x4002 63FFDMA1
0x4002 4000 - 0x4002 4FFFBKPSRAMRCC register map
0x4002 3C00 - 0x4002 3FFFFlash interface registerFlash interface register map
0x4002 3800 - 0x4002 3BFFRCCRCC register map
0x4002 3000 - 0x4002 33FFCRCCRC register map
0x4002 2800 - 0x4002 2BFFGPIOKGPIO register map
0x4002 2400 - 0x4002 27FFGPIOJ
0x4002 2000 - 0x4002 23FFGPIOIGPIO register map
0x4002 1C00 - 0x4002 1FFFGPIOH
0x4002 1800 - 0x4002 1BFFGPIOG
0x4002 1400 - 0x4002 17FFGPIOF
0x4002 1000 - 0x4002 13FFGPIOE
0x4002 0C00 - 0x4002 0FFFGPIO D
0x4002 0800 - 0x4002 0BFFGPIOC
0x4002 0400 - 0x4002 07FFGPIOB
0x4002 0000 - 0x4002 03FFGPIOA

Table 1. STM32F76xxx and STM32F77xxx register boundary addresses (continued)

Boundary addressPeripheralBusRegister map
0x4001 7800 - 0x4001 7BFFMDIOSAPB2MDIOS register map
0x4001 7400 - 0x4001 77FFDFSDM1DFSDM register map
0x4001 6C00 - 0x4001 73FFDSI HostDSI register map
0x4001 6800 - 0x4001 6BFFLCD-TFTLTDC register map
0x4001 5C00 - 0x4001 5FFFSAI2SAI register map
0x4001 5800 - 0x4001 5BFFSAI1SAI register map
0x4001 5400 - 0x4001 57FFSPI6SPI/I2S register map
0x4001 5000 - 0x4001 53FFSPI5
0x4001 4800 - 0x4001 4BFFTIM11TIM10/TIM11/TIM13/TIM14 register map
0x4001 4400 - 0x4001 47FFTIM10
0x4001 4000 - 0x4001 43FFTIM9TIM9/TIM12 register map
0x4001 3C00 - 0x4001 3FFFEXTIEXTI register map
0x4001 3800 - 0x4001 3BFFSYSCFGSYSCFG register map
0x4001 3400 - 0x4001 37FFSPI4SPI/I2S register map
0x4001 3000 - 0x4001 33FFSPI1SPI/I2S register map
0x4001 2C00 - 0x4001 2FFFSDMMC1SDMMC register map
0x4001 2000 - 0x4001 23FFADC1 - ADC2 - ADC3ADC register map
0x4001 1C00 - 0x4001 1FFFSDMMC2SDMMC register map
0x4001 1400 - 0x4001 17FFUSART6USART register map
0x4001 1000 - 0x4001 13FFUSART1
0x4001 0400 - 0x4001 07FFTIM8TIM8 register map
0x4001 0000 - 0x4001 03FFTIM1Section 25.4.28: TIM1 register map on page 948
Table 1. STM32F76xxx and STM32F77xxx register boundary addresses (continued)
Boundary addressPeripheralBusRegister map
0x4000 7C00 - 0x4000 7FFFUART8APB1USART register map
0x4000 7800 - 0x4000 7BFFUART7
0x4000 7400 - 0x4000 77FFDACDAC register map
0x4000 7000 - 0x4000 73FFPWRPWR register map
0x4000 6C00 - 0x4000 6FFFHDMI-CECHDMI-CEC register map
0x4000 6800 - 0x4000 6BFFCAN2bxCAN register map
0x4000 6400 - 0x4000 67FFCAN1
0x4000 6000 - 0x4000 63FFI2C4
0x4000 5C00 - 0x4000 5FFFI2C3I2C register map
0x4000 5800 - 0x4000 5BFFI2C2
0x4000 5400 - 0x4000 57FFI2C1
0x4000 5000 - 0x4000 53FFUART5
0x4000 4C00 - 0x4000 4FFFUART4USART register map
0x4000 4800 - 0x4000 4BFFUSART3
0x4000 4400 - 0x4000 47FFUSART2
0x4000 4000 - 0x4000 43FFSPDIFRXSPDIFRX interface register map
0x4000 3C00 - 0x4000 3FFFSPI3 / I2S3SPI/I2S register map
0x4000 3800 - 0x4000 3BFFSPI2 / I2S2
0x4000 3400 - 0x4000 37FFCAN3bxCAN register map
0x4000 3000 - 0x4000 33FFIWDGIWDG register map
0x4000 2C00 - 0x4000 2FFFWWDGWWDG register map
0x4000 2800 - 0x4000 2BFFRTC & BKP RegistersRTC register map
0x4000 2400 - 0x4000 27FFLPTIM1LPTIM register map
0x4000 2000 - 0x4000 23FFTIM14TIM10/TIM11/TIM13/TIM14 register map
0x4000 1C00 - 0x4000 1FFFTIM13
0x4000 1800 - 0x4000 1BFFTIM12TIM9/TIM12 register map
0x4000 1400 - 0x4000 17FFTIM7TIMx register map
0x4000 1000 - 0x4000 13FFTIM6
0x4000 0C00 - 0x4000 0FFFTIM5
0x4000 0800 - 0x4000 0BFFTIM4TIMx register map
0x4000 0400 - 0x4000 07FFTIM3
0x4000 0000 - 0x4000 03FFTIM2

2.3 Embedded SRAM

The STM32F76xxx and STM32F77xxx feature:

The embedded SRAM is divided into up to four blocks:

The SRAM1 and SRAM2 can be accessed as bytes, half-words (16 bits) or full words (32 bits). While DTCM and ITCM RAMs can be accessed as bytes, half-words (16 bits), full words (32 bits) or double words (64 bits).

2.4 Flash memory overview

The Flash memory interface manages CPU AXI and TCM accesses to the Flash memory. It implements the erase and program Flash memory operations and the read and write protection mechanisms. It accelerates code execution with ART on TCM interface or L1-Cache on AXIM interface.

The Flash memory is organized as follows:

Refer to Section 3: Embedded flash memory (FLASH) for more details.

2.5 Boot configuration

In the STM32F76xxx and STM32F77xxx, two different boot areas can be selected through the BOOT pin and the boot base address programmed in the BOOT_ADD0 and BOOT_ADD1 option bytes as shown in the Table 2 .

Table 2. Boot modes

Boot mode selectionBoot area
BOOTBoot address option bytes
0BOOT_ADD0[15:0]Boot address defined by user option byte BOOT_ADD0[15:0]
ST programmed value: Flash on ITCM at 0x0020 0000
1BOOT_ADD1[15:0]Boot address defined by user option byte BOOT_ADD1[15:0]
ST programmed value: System bootloader at 0x0010 0000

The values on the BOOT pin are latched on the 4th rising edge of SYSCLK after reset release. It is up to the user to set the BOOT pin after reset.

The BOOT pin is also resampled when the device exits the Standby mode. Consequently, they must be kept in the required Boot mode configuration when the device is in the Standby mode.

After startup delay, the selection of the boot area is done before releasing the processor reset.

The BOOT_ADD0 and BOOT_ADD1 address option bytes allows to program any boot memory address from 0x0000 0000 to 0x2007 FFFF which includes:

The BOOT_ADD0 / BOOT_ADD1 option bytes can be modified after reset in order to boot from any other boot address after next reset.

If the programmed boot memory address is out of the memory mapped area or a reserved area, the default boot fetch address is programmed as follows:

When flash level 2 protection is enabled, only boot from Flash (on ITCM or AXIM interface) or system bootloader will be available. If the already programmed boot address in the BOOT_ADD0 and/or BOOT_ADD1 option bytes is out of the memory range or RAM address (on ITCM or AXIM) the default fetch will be forced from Flash on ITCM interface at address 0x00200000.

When the device is in Dual bank mode (nDBANK =0) the application software can either boot from bank 1 or from bank 2. By default Dual boot is deactivated.

To select boot from the Flash memory bank 2, program the nDBOOT bit in the user option bytes. When this bit is reset (nDBOOT =0) and the BOOT pin selects an address in the Flash memory range, the device boots from system memory, and the bootloader jumps to execute the user application programmed in the Flash memory bank 2. For further details, please refer to the application note (AN2606).

Embedded bootloader

The embedded bootloader code is located in the system memory. It is programmed by ST during production. For full information, refer to the application note (AN2606) STM32 microcontroller system memory boot mode.

By default, when the boot from system bootloader is selected, the code is executed from TCM interface. It could be executed from AXIM interface by reprogramming the BOOT_ADDx address option bytes to 0x1FF0 0000.