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

 
 
> STM32H743 MDMA, Нет передачи в периферию
__inline__
сообщение Jul 18 2018, 14:38
Сообщение #1


Местный
***

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



Использую H743 на отладочной плате Nucleo.

Работал с DMA, DMA2D - всё чудесно и превосходно: с AXI RAM отправляю буфер в LCD-дисплей по шине FMC 8-бит (дисплей со своим контроллером и видеопамятью).

Но не хватает опции перестановки байтов, потому что LCD требует передавать старший, затем младший байт. Пока использую REV16 per pixel.

Хочу избавиться от REV16, применив MDMA в котором можно включить перестановку байтов (слов и полу-слов).

Проблема: MDMA не работает: инит сделал Кубом , вызов через HAL. Код стандартный и нет нужды его приводить здесь.

Буфер кадра в AXI SRAM, дисплей на FMC, кеширование портов дисплея отключено (адреса 0xC0000000...0xC0010000). Дисплей чёрный - ничего не отрисовывает.

Почему?

Волнует специфика - может ли MDMA отрабатывать транзакции AXI SRAM => FMC ? Читал мануал, прямого ответа там на мой вопрос нет.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Jul 19 2018, 21:20
Сообщение #2


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

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



Код
вообще не смог понять

Вспомните, что в данном процессоре строка кэшпамяти занимает 32 байта.
В случае, если в этих 32 (или крантых ему) байтоов кроме буфера DMA обмена есть еще что-то... присоседилось. Я об этой ситуации.


Сообщение отредактировал Genadi Zawidowski - Jul 19 2018, 21:22
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 19 2018, 22:28
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Genadi Zawidowski @ Jul 20 2018, 00:20) *
Вспомните, что в данном процессоре строка кэшпамяти занимает 32 байта.
В случае, если в этих 32 (или крантых ему) байтоов кроме буфера DMA обмена есть еще что-то... присоседилось. Я об этой ситуации.

Я думаю: это очень плохая практика - так делать. Перемешивать переменные, записываемые DMA-контроллером и переменные, записываемые CPU в одном регионе памяти на процессоре имеющем кеш данных.
Ну хорошо - слили Вы перед DMA-операцией эти данные в память, а дальше то что? Остановить процессор и ждать пока DMA не завершится? А какой тогда вообще смысл в DMA?
Ведь если CPU не остановить, то он может снова записать в эти переменные данные и во время DMA, тогда что делать?
Мне кажется является очевидным, что для DMA-буферов, записываемых DMA-контроллером, надо просто выделить отдельный регион памяти, и линковать туда только секции ".dmaRx". А программу так писать, чтобы процессор не писал в этот регион, а только читал его (для него секция ".dmaRx" - readonly-секция). И этот регион необходимо выровнять на размер строки кеша.
И тогда, как писал ув. Arlleex, после завершения приёмной DMA-операции, достаточно будет просто сделать CacheInvalidate() для этого региона и дальше спокойно читать его.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- __inline__   STM32H743 MDMA   Jul 18 2018, 14:38
- - __inline__   Написал тестовый пример, пересылка память-память ч...   Jul 19 2018, 09:41
|- - Arlleex   Цитата(__inline__ @ Jul 19 2018, 13:41) Ч...   Jul 19 2018, 10:22
|- - __inline__   Всё заработало, когда включил MPU. Протестил на ра...   Jul 19 2018, 10:49
- - Genadi Zawidowski   Инвалидэйт делать перед запуском дома на какую-то ...   Jul 19 2018, 11:01
- - Arlleex   Тут чисто из логики даже все следует. Есть D-Cache...   Jul 19 2018, 11:26
- - __inline__   Теперь всё ясно. Всем спасибо. Интересно, что ко...   Jul 19 2018, 11:38
|- - Arlleex   Цитата(__inline__ @ Jul 19 2018, 15:38) И...   Jul 19 2018, 12:20
|- - __inline__   Цитата(Arlleex @ Jul 19 2018, 13:20) Это ...   Jul 19 2018, 12:38
|- - esaulenka   Цитата(Arlleex @ Jul 19 2018, 15:20) Не з...   Jul 20 2018, 06:50
|- - Arlleex   Цитата(esaulenka @ Jul 20 2018, 10:50) Ка...   Jul 20 2018, 07:06
- - Genadi Zawidowski   ЦитатаПоэтому после выдачи события "транзакци...   Jul 19 2018, 14:54
|- - Arlleex   Цитата(Genadi Zawidowski @ Jul 19 2018, 17...   Jul 19 2018, 17:18
- - Genadi Zawidowski   Дело в том, что пока процессор ожидает завершения ...   Jul 19 2018, 23:26
- - Arlleex   В общем, я лишь для общей картины добавлю официаль...   Jul 20 2018, 06:16
- - esaulenka   Да, неправ, это место просмотрел... Благо объемы у...   Jul 20 2018, 12:43
|- - Arlleex   Цитата(esaulenka @ Jul 20 2018, 16:43) Но...   Jul 20 2018, 14:23
- - Genadi Zawidowski   ЦитатаИ маленький буфер тоже по-хорошему выравнива...   Jul 20 2018, 13:26


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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 18:18
Рейтинг@Mail.ru


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