To aid portability of code between different Cortex-M micro-controller across vendors, M-profile architectures (ARMv6-M, ARMv7-M, ARMv7E-M, etc) defines standard fixed memory map.

Area Address range Notes STM32F407
Vendor specific 0xE0100000:0xFFFFFFFF
PPB 0xE0000000:0xE00FFFFF NVIC, SCS, ETM, ITM, FPB NVIC, SCS, ETM, ITM, FPB
External device 0xA0000000:0xDFFFFFFF SD card, etc FSMC
External RAM 0x60000000:0x9FFFFFFF DDR, LCD, etc DDR
Peripheral 0x40000000:0x5FFFFFFF AHB, APB peripherals UART, Timers, ADC, etc
SRAM 0x20000000:0x3FFFFFFF SRAM/SDRAM/Data Data memory
Code 0x00000000:0x1FFFFFFF ROM/Flash/Code Code ROM memory

Maximum Flash and RAM size

Because of fixed memory map, both RAM and Flash areas in the memory map are 0x1FFFFFFF in length. This means maximum size of 512 MB.