diff --git a/boards/kakute-f7-mini-v3/memory.x b/boards/kakute-f7-mini-v3/memory.x index a022eb0..39d4362 100644 --- a/boards/kakute-f7-mini-v3/memory.x +++ b/boards/kakute-f7-mini-v3/memory.x @@ -1,20 +1,19 @@ MEMORY { FLASH : ORIGIN = 0x08000000, LENGTH = 512K - /* - * STM32F722 RAM totals 256 KiB: - * - DTCM: 64 KiB at 0x2000_0000; inaccessible to DMA1 and DMA2. - * - SRAM1: 176 KiB at 0x2001_0000; contiguous and DMA2-accessible. - * - SRAM2: 16 KiB at 0x2004_C000; a separate bank after an address gap. - * - * Why use SRAM1 as the only default RAM region: the MPU6000 SPI DMA buffers - * and USART1 TX DMA frames are ordinary RTIC task-local/static allocations. - * Mapping `RAM` to DTCM would let the linker place those buffers where DMA2 - * cannot read or write them which would lead transfer faults or corrupted data. + * STM32F722 RAM totals 256 KiB: + * - DTCM: 64 KiB at 0x2000_0000 + * - SRAM1: 176 KiB at 0x2001_0000 + * - SRAM2: 16 KiB at 0x2003_C000 * - * Therefore all default allocations use SRAM1 to make DMA reachability the - * safe default rather than a per-buffer convention. - */ - RAM : ORIGIN = 0x20010000, LENGTH = 176K + * SRAM1 and SRAM2 are contiguous and are both accessible by DMA1 and DMA2. + * They form one 192 KiB default RAM region from 0x2001_0000 through + * 0x2003_FFFF. DTCM is intentionally kept separate for a future explicit + * placement policy rather than mixing CPU-critical and general allocations. + * + * TODO: Utilize DTCM. + * + */ + RAM : ORIGIN = 0x20010000, LENGTH = 192K }