реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
__inline__
сообщение Jul 6 2018, 12:28
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Память SRAM1,2,3 сидит в регионах 0x30000000...0x30047FFF. Тактирование включил.

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

Эта память доступна вообще для процессора или нет?
Читал манул, так и не понял.
Go to the top of the page
 
+Quote Post
__inline__
сообщение Jul 6 2018, 13:40
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



Это просто капец...

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

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

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

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

Итого: DTCM и AXI - универсальная память. SRAM 1..4 - нет
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Jul 6 2018, 14:24
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



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

Все правильно - SRAM1,2,3 заточена на буферы Ethernet, USB, SDMMC. И между ними есть свой DMA.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Jul 7 2018, 08:14
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Вот такое распределение памяти в моем проекте:
Код
        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
Фото к тому, что это не придумано а работает.

Сообщение отредактировал Genadi Zawidowski - Jul 7 2018, 08:31
Эскизы прикрепленных изображений
 Р В Р’ Р’ Р’ Р’ Р’ Р в‚¬Р В РЎВ˜Р В Р’µР Р…ьшено Р Т‘Р С• 95%
Прикрепленное изображение
3328 x 1872 (2.09 мегабайт)
 Р В Р’ Р’ Р’ Р’ Р’ Р в‚¬Р В РЎВ˜Р В Р’µР Р…ьшено Р Т‘Р С• 95%
Прикрепленное изображение
3328 x 1872 (1.86 мегабайт)
 
Go to the top of the page
 
+Quote Post
__inline__
сообщение Jul 7 2018, 12:04
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 5-09-17
Пользователь №: 99 126



OK, спасибо.

Попутно ещё обнаружил, что для DAC DMA с памятью 0x20000000 не работает, только с 0x24000000
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 02:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.0129 секунд с 7
ELECTRONIX ©2004-2016