Вот такое распределение памяти в моем проекте:
Код
DTCMRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 128K /* DTCMRAM Data DTCMRAM-RAM */
RAM_D1 (xrw) : ORIGIN = 0x24000000, LENGTH = 512K /* LTDC frame buffer */
RAM_D2 (xrw) : ORIGIN = 0x30000000, LENGTH = 288K
RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 64K
ITCMRAM (rwx) : ORIGIN = 0x00000000, LENGTH = 64K /* ITCMRAM-RAM */
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 2048K /* FLASH on AXIM interface */
Для D1 есть ограничения - только в ней может находиться память для SDMMC1, USB и LTDC (на таблице в даташите больше подробностей).
Процессор все области пишет/читает нормально.
остальное применрно так:
Код
/* AXI SRAM Slave */
//AXI_TARG7_FN_MOD |= READ_ISS_OVERRIDE;
*((__IO uint32_t*) 0x51008108) = 0x1; //Change the switch matrix read issuing capability to 1 (Errata BUG fix)
/* Change the switch matrix read issuing capability to 1 for the AXI SRAM target (Target 7) */
//*((__IO uint32_t*)0x51008108) = 0x000000001;
RCC->AHB2ENR |= RCC_AHB2ENR_D2SRAM1EN;
(void) RCC->AHB2ENR;
RCC->AHB2ENR |= RCC_AHB2ENR_D2SRAM2EN;
(void) RCC->AHB2ENR;
RCC->AHB2ENR |= RCC_AHB2ENR_D2SRAM3EN;
(void) RCC->AHB2ENR;
RCC->AHB4ENR |= RCC_AHB4ENR_D3SRAM1EN;
(void) RCC->AHB4ENR;
Еще сюда не попали kernel clock и prescalers для всех D1, D2 и D3. Полный текст проекта выложен на
https://188.134.5.254/browser/trunkФото к тому, что это не придумано а работает.