Вход
Наше всё
Теги
codebook
PARTS
Поиск
Опросы
Закон
Вторник
2 марта
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
ARM, RISC-V
AVR
PIC
PLD, FPGA, DSP
Кибернетика
Технологии
Схемы, платы, компоненты
ARM, RISC-V контроллеры
/1078963
Топик полностью
lloyd
(20.02.2021 21:07, просмотров: 29)
в ответ на
Ну, а "активировать" ее требуется? Типа clock какой-то специальный для каждой из них включать?
- автор:
Kceния
Быстрее в TRM глянуть, чем на сахаре спрашивать, не?
Ответить
Ответы
Так уже в ссылке с Электроникса сказано, что требуется clock включать, а в комментарии мне было сказано "проблем не испытывал". Тогда как активацию памяти перед использованием нельзя назвать стандартной процедурой, тем более если это SRAM. Потому и переспросила. А заодно намеревалась узнать, как этот clock (если его действительно включать надо), включается через CubeMX (в нем я такой опции не нашла).
-
Kceния
(
20.02.2021 21:30
)
не проще просто взять и попробовать? или он у вас не под рукой? если hrtim не нужен, присмотритесь лучше 723 серии
-
Constantin24
(
20.02.2021 21:47
)
Попробовала на своей плате - заработало, но не сразу. Сперва компилироваться не хотело, когда в SRAM1-2-3 что-то пишется или оттуда читается, причем сообщение компилятора невразумительное - типа "не могу инициализировать нулями секцию .bss". Исследование показало, что причина в ином - массивы, размещенные мной в SRAM1-2-3, имели нечетное число элементов uint16_t. Только после того, как удалось об этом догадаться, память заработала. В среде CubeMX оказалось необязательным
Kceния
(154 знак.,
22.02.2021 12:42
)
Во первых, вы должны знать, что тактирование любой периферии включается через регистры группы RCC с суффиксом ENR (Enable Register). Следующая запись эквивалентна вашей:
evgeniy1294
(794 знак.,
22.02.2021 13:54
)
Компилятор помещает массивы в секцию (вероятно bss), где вся эта секция обнуляется startup-кодом еще до входа в main(). Все так делают, нулями прошивку не заполняют. В ARMе заполнение нулями происходит 32-битными порциями (обнуленный регистр в цикле копируется в память), видимо из-за этого ее размер в байтах должен делиться на 4 байта без остатка. Позже я нашла иной способ - через дефиницию __no_init, тогда линкер размещает массив в другой сегмент, который при старте
Kceния
(699 знак.,
22.02.2021 14:26
)
Не самое лучшее решение размещать в памяти данные через директивы компилятора, я бы даже сказал максимально плохое. Нужно размещать секции через скрипт линкера, которому дополнительно можно объяснить, какие объекты куда класть. Код из куба делает следующее:
evgeniy1294
(873 знак.,
22.02.2021 14:58
)
Всё равно бы пришлось писать #pragma location, только не на точный адрес, а на имя сегмента. Я бы так и сделала, если бы у меня в SRAM123 было бы еще что-то, но раз уж в каждой из этих SRAMx у меня всего по одному массиву, то решила с определением дополнительных секций не заморачиваться, тем паче что писать задания для линкера я не шибко умею :). А код с дефайнами из CubeMX мне объяснять не надо - он мне и самой понятен, неясно только чем RCC_AHB2ENR_
D2
SRAM1EN
Kceния
(191 знак.,
22.02.2021 20:23
)
D2 - домен питания. Код скорее всего универсален для всего семейства H7, а может быть даже и для F7, не во всех из которых этот домен есть. Что касается DATA_IN_D2_SRAM, видимо где-то определение таки есть, возможно в настройках проекта.
-
evgeniy1294
(
22.02.2021 20:27
)
Вопрос чуть в сторону: когда D-Cache включают, то оно на SRAM1-2-3 действует? Это которое:
Kceния
(51 знак.,
22.02.2021 22:08
)
Блок-схема в даташите говорит, что да, без разницы.
-
evgeniy1294
(
22.02.2021 23:13
)
Это грустно... Хотя говорят, что через MCU поправимо. А стоит ли мне вернуться с AXI на DTCM теперь (после того, как DMA-процессы вынесла в SRAM123)? Есть ли разница, где ОЗУ у программы располагать?
-
Kceния
(
23.02.2021 15:09
)
Немного поправлю: через MPU, AXI - это шина, TCM - память. В TCM обычно помещают стэк и данные программы, с которыми не требуется работать через DMA.
-
evgeniy1294
(
23.02.2021 15:53
)
Речь шла об MPU (Memory Protection Unit), с помощью которой якобы можно задавать, какие области памяти не надо кэшировать =>
-
Kceния
(
23.02.2021 16:20
,
ссылка
)
есть. но небольшая
-
Mahagam
(
23.02.2021 15:29
)
А вот здесь мужик жалуется, что у него AXI работает вдвое медленнее, чем DTCM, т.е. почти со скоростью flash =>
-
Kceния
(
23.02.2021 17:17
,
ссылка
)
Частота шины AXI 240МГц. Не помню точно спецификацию шины, но процесс чтения может занять пару тактов шины.
-
evgeniy1294
(
23.02.2021 17:31
)
От этого вашего замечания нет проку, поскольку эти 240 МГц не с чем сравнивать - про частоту DTCM вы умалчиваете. Вдруг DTCM работает с частотой ядра (480 МГц), и тогда тот мужик прав.
-
Kceния
(
23.02.2021 18:06
)
Там на шине ещё и арбитраж. Есть вот такая интересная презентация:
-
evgeniy1294
(
23.02.2021 18:55
,
ссылка
)
Только арбитража мне еще не хватало :)
-
Kceния
(
23.02.2021 19:35
)
Ксения, хотите предсказуемых задержек - берите PRU и работайте только с регистрами. Во всех остальных случаях латентность уже
lloyd
(407 знак.,
23.02.2021 20:51
)
Я лишь только спросила, имеет ли смысл ради ускорения работы кода вернуть ОЗУ программы из AXI назад в DTCM. Причем, миграция на AXI была связана с тем, что на DTCM не работает DMA. После того, как буферы DMA удалось расположить в области SRAM1-2-3, необходимость жития на AXI исчезла, и возник вопрос о выборе между AXI и DTCM. Ответы же на этот вопрос крайне противоречивы - различаются в два раза.
-
Kceния
(
23.02.2021 23:11
)
The L1-cache can be a performance booster when used in conjunction with memory interfaces on AXI bus. This must not be confused with memories on the Tightly Couple Memory (TCM) interface, which are not cacheable. Any normal memory area can be cacheable, as described above, but the biggest gains are seen on memories accessed by the AXI bus such as the internal Flash memory, internal SRAMs and external memories attached to the FMC or Quad-SPI controllers
-
evgeniy1294
(
23.02.2021 00:15
)
Китайцы пока не продают готовых плат на 723/733, да и на них ажиотажный спрос из-за частоты 550 МГц.
Kceния
(70 знак.,
20.02.2021 22:54
,
ссылка
)