в stm32 озу разбито на куски с отдельными контроллерами, хотя
программно выглядит как линейная память. на пример в уже в
устаревающем f4 два куска - вот вам и двухпортовая память. я давно
замечаю что люди это не особо замечают такие тонкости. в h7 уже 9
дырок. d1_itcm_sram (rwx): ORIGIN = 0x00000000, LENGTH = 64K /* critical real-time CM7 code routines (interrupt handlers,deterministic execution) */
d1_dtcm_sram1 (rwx): ORIGIN = 0x20000000, LENGTH = 64K /* critical real-time CM7 rw data (stack, heap, ...) */
d1_dtcm_sram2 (rwx): ORIGIN = 0x20010000, LENGTH = 64K
d1_axi_sram (rwx): ORIGIN = 0x24000000, LENGTH = 512K /* application data (local data,graphic objects,frame buffers, ...) */
d2_sram1 (rwx): ORIGIN = 0x30000000, LENGTH = 128K /* DMA D2 domain peripheral input/output buffers, CM4 code */
d2_sram2 (rwx): ORIGIN = 0x30020000, LENGTH = 128K /* DMA D2 domain peripheral input/output buffers, CM4 data */
d2_sram3 (rwx): ORIGIN = 0x30040000, LENGTH = 32K /* ETH/USB peripheral input/output buffers */
d3_sram4 (rwx): ORIGIN = 0x38000000, LENGTH = 64K /* BDMA D3 domain peripheral input/output buffers */
d3_backup_sram (rwx): ORIGIN = 0x38800000, LENGTH = 4K