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

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> DMA2D в stm32f4хх, реально такой убогий, или я что-то не понимаю?
Шаманъ
сообщение Nov 3 2015, 12:44
Сообщение #46


Знающий
****

Группа: Участник
Сообщений: 517
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(Genadi Zawidowski @ Nov 3 2015, 11:14) *
Вопрос - DMA2D работает ли с flash памятью?

Да.

Цитата(SasaVitebsk @ Nov 3 2015, 11:49) *
А зачем ему работать с индексированным цветом, если с ним работает сам LCD контроллер? Ему просто надо копировать любые байтовые форматы. Насколько я понимаю.

Просто копировать это слишком просто wink.gif, но даже в этом случае копировать побайтно он не сможет - только по 16бит. Нормальное функционирование DMA2D возможно только при 16битном и выше цвете на выходе.

Чтобы Вы понимали, я сейчас "сделал наброски" и DMA2D по всему сможет делать все по части графики - начиная от заливки прямоугольника и заканчивая выводом текста, картинок и даже некоторой специфической для моего проекта графики sm.gif - согласитесь немного больше "просто копирования". Цена этого, как я уже писал бОльшие затраты памяти (хотя и возможности при этом получаются побольше). Осталось сделать плату и проверить все это rolleyes.gif
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Feb 5 2017, 12:42
Сообщение #47


Знающий
****

Группа: Участник
Сообщений: 517
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(Шаманъ @ Nov 3 2015, 15:44) *
Осталось сделать плату и проверить все это rolleyes.gif

Сделал, проверил. Запросы правда за это время немного "подросли" - проц. stm32f746, 8М SDRAM и 800х480хRGB565 TFT.

В общем нормально DMA2D работает.

Самый неприятный момент это адресация в DMA2D - не поддерживается отрицательное смещение между строками. Из-за этого скроллинг можно сделать только в одну сторону, кроме того заливки масками тоже отменяются. Еще блендер в DMA2D несколько убогий. Если бы добавили третий канал с фоном (сплошной заливкой) то некоторые вещи было бы намного удобнее делать.

Да, может кому будет интересно - рисование битмапа 534х137 с преобразованием из L8 в RGB565 занимает:
1. Через DMA2D для простого рисования 1.29мс (если пересчитать на весь экран, то выходит 150fps однако)
2. Через DMA2D для наложения с прозрачностью
3. Через CPU с выключенным кэшем 12.8мс
4. Через CPU с включенным кэшем 4.2мс
Это для рисования прямо в видеобуфер, параллельно вычитываемый через LTDC, частоте CPU 180МГц, памяти 90МГц, картинка во флеше.

Также потестил как поменяется скорость для 1го варианта (см. выше) если картинка лежит не в флеше:
1. Для картинки в SRAM1 скорость такая же как из флеша - 1.29ms.
2. Для картинки в том же банке SDRAM - 5.03мс
3. Для картинки в другом банке SDRAM - 4.10мс

Да, на последовательной записи CPU=>SDRAM получается 54Mtps, рандомные чтение/запись 5.6Mtps, в разных банках 6.6Mtps. Это без кэша данных и с работающим LTDC.

Можно сказать я почти доволен sm.gif Огорчили китайцы - панель должна была быть с бОльшим углом обзора снизу, поэтому я ее предусмотрительно перевернул, а оказалось, что у нее лучшие углы обзора сверху laughing.gif ... надо будет поискать какую-нить панель с более "правильными" углами обзора.
Go to the top of the page
 
+Quote Post
Aner
сообщение Feb 5 2017, 13:27
Сообщение #48


Гуру
******

Группа: Свой
Сообщений: 4 354
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Что за панель? Какой интерфейс у неё? И есть ли емкостной мультитач, хотябы на пять?
Go to the top of the page
 
+Quote Post
Мусатов Констант...
сообщение Feb 5 2017, 20:04
Сообщение #49


Частый гость
**

Группа: Участник
Сообщений: 186
Регистрация: 10-10-06
Пользователь №: 21 172



Цитата(Шаманъ @ Feb 5 2017, 15:42) *
Если бы добавили третий канал с фоном (сплошной заливкой) то некоторые вещи было бы намного удобнее делать.


Так там есть регистр - цвет бэкграунда. Если у нижнего слоя режим с альфой, то тот бэкграунд просвечивает.
Сам пользуюсь блендированием из двух экранов с индексированными цветами в один RGB565. На двух экранах.
Выяснил проблемы с FMC, на котором у меня висит 16 битная SRAM. При байтной записи часто ошибается. Приходится и блендирование и операции кодом выравнивать до 16 битных.
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Feb 5 2017, 20:39
Сообщение #50


Знающий
****

Группа: Участник
Сообщений: 517
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(Aner @ Feb 5 2017, 16:27) *
Что за панель?

AT070TN92
Цитата
Какой интерфейс у неё?

RGB
Цитата
И есть ли емкостной мультитач, хотябы на пять?

Сама она голая, но у меня есть тачскрин к ней (емкостной) и я сваял контроллер для него на stm32f103. Мне достаточно 2х касаний, в принципе можно и больше сделать. Пять для такой маленькой панели наверное уже перебор.

Цитата(Мусатов Константин @ Feb 5 2017, 23:04) *
Так там есть регистр - цвет бэкграунда. Если у нижнего слоя режим с альфой, то тот бэкграунд просвечивает.

Это в LTDC, а в DMA2D такого нет, а было бы хорошо, если бы был - я про это.

В DMA2D просвечивает только при комбинировании двух слоев, один из которых сплошной фон.
Go to the top of the page
 
+Quote Post
Мусатов Констант...
сообщение Feb 5 2017, 22:35
Сообщение #51


Частый гость
**

Группа: Участник
Сообщений: 186
Регистрация: 10-10-06
Пользователь №: 21 172



Цитата(Шаманъ @ Feb 5 2017, 23:39) *
В DMA2D просвечивает только при комбинировании двух слоев, один из которых сплошной фон.

По описанию да.
У меня реально регистр DMA2D_BGCOLR просвечивает не только в режиме А4 и А8, как в документации, но и в АL44 на fore и back. Возможно это баг и надеяться на это не стоит. Мне это не надо было и я некоторое время потратил на поиски паразитных цветов, а оказалось, что регистр был не черный.
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Feb 6 2017, 04:48
Сообщение #52


Знающий
****

Группа: Участник
Сообщений: 517
Регистрация: 27-08-08
Пользователь №: 39 839



Цитата(Мусатов Константин @ Feb 6 2017, 01:35) *
По описанию да.
У меня реально регистр DMA2D_BGCOLR просвечивает не только в режиме А4 и А8, как в документации, но и в АL44 на fore и back.

Когда экспериментировал, то с RGB565 форматом в background слое DMA2D_BGCOLR у меня не просвечивал. За информацию по AL44 спасибо sm.gif
Go to the top of the page
 
+Quote Post
Шаманъ
сообщение Mar 1 2017, 13:39
Сообщение #53


Знающий
****

Группа: Участник
Сообщений: 517
Регистрация: 27-08-08
Пользователь №: 39 839



Интересно, рисование через DMA2D занимает не намного больше времени, чем копирование нарисованного участка. Например, рисование 10мс, копирование 13мс, или рисование 3мс, копирование 2.3мс. В итоге получилось, что зачастую проще (а иногда и быстрее) тупо перерисовывать все каждый раз, чем поделить на участки и сохранять промежуточные результаты в разных буферах, чтобы не рисовать одно и то же.

И все же DMA2D весьма крут! Признаю, что был не прав, называя его "убогим" в начале темы rolleyes.gif (хотя некоторые простые модификации/дополнения были бы ну очень полезны). Опробовал более-менее реальный вывод достаточно динамичного интерфейса - спектр/водопад на 800х330точек, поверх него полупрозрачная сетка со шкалами + остальной интерфейс рядом 800х150 (фон с анимацией+два слоя поверх) + поверх всего этого небольшие (60х480) анимированные части интерфейса с альфа каналом в независимых буферах в форматах ARGB8888 и L8. TFT работает с частотой кадров 29к/с, процессор 216МГц, память соответственно 108МГц. В начале экспериментов немного разочаровался, ибо FPS прорисовки выше 10..14 не подымался, но потом "углубился в проблему" в итоге после "борьбы за FPS" имею рисование варианта интерфейса со спектром за 19.6мс (~51fps), загрузка процессора при 29к/с 25..26%, то же с водопадом рисуется за 17мс (~58fps), загрузка процессора при 29к/с 4.5%. Я немного удивлен цифрами более 50fps 08.gif

Получив такие цифры захотелось большего (не в плане FPS, а нарисовать больше, сохранив FPS прорисовки анимированных областей экрана выше частоты обновления ТФТ - 29к/с). Скорее всего придется рисовать в двух разноприоритетных потоках, можно конечно забить на незначительные "визуальные эффекты", но я не люблю компромиссы sm.gif.

В этом вопросе мог бы помочь второй слой LTDC, но увы ему полосы памяти на больших экранах маловато. В итоге в два слоя он при частоте обовления ТФТ больше чем 22к/с (один слой RGB565 второй ARGB4444) у меня не пошел, и то даже при такой низкой скорости иногда глюк проскакивают.

Go to the top of the page
 
+Quote Post

4 страниц V  « < 2 3 4
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th March 2017 - 09:14
Рейтинг@Mail.ru


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