Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32H743 и SRAM1,2,3
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
__inline__
Память SRAM1,2,3 сидит в регионах 0x30000000...0x30047FFF. Тактирование включил.

При попытке туда записать или считать с помощью CPU ни к чему не приводит.

Эта память доступна вообще для процессора или нет?
Читал манул, так и не понял.
__inline__
Это просто капец...

Эта память жестко специализирована:

DTCM - может быть стеком, данными и DMA
AXI - тоже самое

SRAM1,2,3 - только данными. Никакого ДМА и стека

SRAM4 - данные, стек. Никакого ДМА

Итого: DTCM и AXI - универсальная память. SRAM 1..4 - нет
HardEgor
Цитата(__inline__ @ Jul 6 2018, 20:40) *
SRAM1,2,3 - только данными. Никакого ДМА и стека
Итого: DTCM и AXI - универсальная память. SRAM 1..4 - нет

Все правильно - SRAM1,2,3 заточена на буферы Ethernet, USB, SDMMC. И между ними есть свой DMA.
Genadi Zawidowski
Вот такое распределение памяти в моем проекте:
Код
        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
Фото к тому, что это не придумано а работает.
__inline__
OK, спасибо.

Попутно ещё обнаружил, что для DAC DMA с памятью 0x20000000 не работает, только с 0x24000000
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.