Перейти к содержанию
    

Скажите, а ChomART (DMA2D) приносит какую-нибудь пользу тогда, когда нужно и рисовать и вычислять что-то? У меня задачи нетривиальные - получить из пары десятков глобальных переменных значения и вывести их на экран, послать что-то по UART, включить какую-нибудь ножку.

Пока что, отключив ChromART, я не заметил снижения быстродействия. А проверял я его хоть и на глазок, но жестко - делал смещение картинки 1024х600 целиком. Разницы, действительно, не заметил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, MementoMori сказал:

TouchGFX работает либо в RGB565 (с ним как раз проблем нет) либо в RGB888.

Как там тогда альфа-наложение работает? Или там не поддерживается прозрачность?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, mantech said:

Как там тогда альфа-наложение работает? Или там не поддерживается прозрачность?

Поддерживается. 

Для справки, если что - TouchGFX работает только с одним слоем. Так что если вы о "железной" альфе, то она тут ни при чем.

Вот по поводу железа и настроек  https://touchgfx.zendesk.com/hc/en-us/articles/360010921760-TouchGFX-HAL-Development

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, MementoMori сказал:

Поддерживается

Какая-то странная поддержка, у меня в iMX6 прозрачность работает только на 2м слое в режиме АRGB8888, первый слой (основной может работать и в простом RGB888).

Похоже тут работает только с глобальной альфой, т.е. прозрачность задается на весь слой отдельные элементы, как в png картинке работать не будут.

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну проблема то не в альфе. Простой прямоугольник нарисовать проблема. На том этапе, на котором TouchGFX'ом еще и не пахнет.  В 32-битном режиме SDRAM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, MementoMori сказал:

Обнаружил некую закономерность. Наличие артефакта зависит от того, где линия начинается и где заканчивается.

h1voCad3.png?download=1

При одной и той же длине линии результат зависит от координат начала и координат конца.

В конце зеленый артефакт наблюдается если его координаты нечетны. То есть под одному через один.

В начале красный артефакт появляется если координаты начала - по два через два.

 

Есть мысли?

Конечно есть. Вы же читали тему, где я спрашивал о такой проблеме и там же выложил в чем проблема. В Вашей таблице видно, что проблем нет у линий которые начинаются с адреса кратного 4.

 

У вас прерывание по ошибкам ltdc включено? Посмотрите, какие флаги взводятся при выводе линий с артефактами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, sst78rus said:

Вы же читали тему, где я спрашивал о такой проблеме и там же выложил в чем проблема.

Сейчас прочту

7 minutes ago, sst78rus said:

В Вашей таблице видно, что проблем нет у линий которые начинаются с адреса кратного 4.

К сожалению, эта таблица была создана при работе с графикой "ручками". В TouchGFX я двигал элементы по горизонтали - проблемы были всегда. Но, полагаю, если корень проблемы устранить, то и в TOuchGFX все будет ОК.

 

Quote

У вас прерывание по ошибкам ltdc включено? Посмотрите, какие флаги взводятся при выводе линий с артефактами.

Включены. Как ни странно - ошибок нет. Я брейкпоинты даже ставил. Надо попробовать программный флажок для надежности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, MementoMori сказал:

 

Включены. Как ни странно - ошибок нет. Я брейкпоинты даже ставил. Надо попробовать программный флажок для надежности.

Просто на всякий случай: вы же знаете, что на ошибки у ltdc отдельный обработчик прерывания? Ну я так, на всякий случай, на что сам натыкался :)

Да, и тут можно подобрать небольшую линию с артефактами и проверить,например в отладчике , что лежит у вас в видеобуфере. Т.е. где появляются артефакты - в выводе в видеобуфер или в ltdc.

Изменено пользователем sst78rus

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, sst78rus said:

вы же знаете, что на ошибки у ltdc отдельный обработчик прерывания?

Это Вы о чем?

Я знаю один. И он у меня мониторит LTDC_IER_TERRIE и LTDC_IER_FUIE.  

Это оно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 минуты назад, MementoMori сказал:

Это Вы о чем?

Я знаю один. И он у меня мониторит LTDC_IER_TERRIE и LTDC_IER_FUIE.  

Это оно?

Ну у ltdc два обработчика, LTDC_ER_IRQHandler и LTDC_IRQHandler. Соответственно ошибки в одном, а преревыния по номеру строки в другом. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, sst78rus said:

LTDC_ER_IRQHandler и LTDC_IRQHandler.

Вот оно что... гляну.

 

А пока вот что.

Я поместил прямоугольник в координаты X=2 (чтоб вывело ошибку) Y=0.   Залил цветом 0x0000FF Получил вот что

swlN8WgO.png?download=1

первые 6 пар пропускаем (это точки с X= 0 и X=1).

70 00 00 - это тянет на красноватый цвет - так и есть, красная полоса.

А дальше 0x0000FF - синий.

Заканчивается это безобразие последовательностью  00 00 F3 E0 8F 03 - два испорченых пикселя, последний зеленоватый (и в реале и судя по байтам).

Почитал Вашу тему про выравнивания. Честно... те идиоматические выражения, которыми Вы настраивали выравнивание - для меня китайская грамота, тем более, что у меня проект, где это запаковано где-то в глубине HAL. Не расскажете поподробнее, где это выравнивание настроить? Я так, на всякий случай попытался сместить адрес буфера с 0xD0000000 на 2,4,6,8 байт - не помогло.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, MementoMori сказал:

Вот оно что... гляну.

 

А пока вот что.

Я поместил прямоугольник в координаты X=2 (чтоб вывело ошибку) Y=0.   Залил цветом 0x0000FF Получил вот что

swlN8WgO.png?download=1

первые 6 пар пропускаем (это точки с X= 0 и X=1).

70 00 00 - это тянет на красноватый цвет - так и есть, красная полоса.

А дальше 0x0000FF - синий.

Получается у вас отображается правильно, а в видеобуфере лежит с артефактами. Как вы буфер заполняете?

И чтоб проще смотреть было, очистите буфер перед заполнением, и прямоугольник поменьше возьмите. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как я заполняю буфер - писал выше, на предыдущей странице.

Перед рисованием прямоугольника я заполняю экран черным. Прямоугольник - нарисую поменьше.

Вот

KjteuGXc.png?download=1

 

Не ловится ни один брейкпоинт.

Но, как я понял после последней вашей реплики - и не должен?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да.... я не обратил внимания....

Посмотрите... Я вывожу синий цвет, то есть 0x00 00 FF.  А теперь поделите байты в вышеприведенном скрине мысленно на тройки - там получается не только первый пиксель испорчен, но и какое-то смещение и по чтению и по записи.

Я хочу записать 

 00 00 00 | 00 00 00 | 00 00 FF  | 00 00 FF

Пишется

 00 00 00 |  00 0F E0 | 70 00 00 | FF 00 00

Последний пиксель должен читаться как красный,  а читается как синий. При этом я и пытался записать его как синий.  То есть при записи промахивание. При чтении тоже промахивание. Оба промахивания в совокупности дают правильный результат кроме первого и послденего пикселей. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 часов назад, MementoMori сказал:

Как я заполняю буфер - писал выше, на предыдущей странице.

Перед рисованием прямоугольника я заполняю экран черным. Прямоугольник - нарисую поменьше.

Но, как я понял после последней вашей реплики - и не должен?

Да, раз артефакты есть в видеобуфере, то ltdc может и не иметь ошибок.

Попробуйте локализовать проблему. Сначала сделайте рисование прямоугольника "руками" (всмысле просто записью значений в цикле в видеобуфер). Тут можно даже без экрана проверить - очищаем память, рисуем прямоугольник, читаем обратно  и проверяем записанное. Если с "одиночной" записью проблем нет, попробуйте обычным DMA в режиме mem2mem. 

Т.е. как-то определить где у вас проблема - в работе с sdram, в настройках dma2d или еще где.

Да, чтоб проще глазами поверять содержимое, можно сделать небольшим размер слоя. В идеальном варианте - чтобы ширина была такой, сколько у вас в окне отладчика помещается. Тогда просто сразу видно, что куда пишется.  При ширине слоя в 1024 не очень удобно это смотреть :)

Изменено пользователем sst78rus

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...