kochevkv 0 31 июля, 2014 Опубликовано 31 июля, 2014 · Жалоба Добрый день, форумчане! :) Организую вывод на новый дисплей от BF548. И повторно разбираясь в своем коде подключения дисплея, заметил, что у меня запись картинки в буфер экрана и канал DMA, настроенный на вывод из этого буфера, никак свой доступ не разграничивают по времени. Это допустимо? В большинстве примеров от AD вывод на экран идет с помощью 2-х буферов по типу Ping-Pong. Т.е. после отработки одного буфера, каналу DMA "подсовывается" другой буфер, а в отработавший пишется новая картинка. Но мне это когда-то показалось неудобным, по причине необходимости согласовывать запись в тот или другой буфер с драйвером дисплея и я сделал так, что запись идет всегда в один буфер и вывод с него же. При этом драйвер не "отвлекается" на прерывания об отработке буфера, что положительно сказывается на скорости вывода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 182 31 июля, 2014 Опубликовано 31 июля, 2014 · Жалоба Организую вывод на новый дисплей от BF548. И повторно разбираясь в своем коде подключения дисплея, заметил, что у меня запись картинки в буфер экрана и канал DMA, настроенный на вывод из этого буфера, никак свой доступ не разграничивают по времени. Это допустимо? Если не страшны артефакты от процесса рисования на экране (нет динамической картинки), то допустимо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kochevkv 0 31 июля, 2014 Опубликовано 31 июля, 2014 · Жалоба Ок. спасибо за ответ. Успокоили. Ну непосредственно отрисовка идет в другой буфер. Под программным доступом я подразумевал переброску из буфера отрисовки в буфер экрана. Артефакты есть (ну иногда мелькают кадры с недорисовкой нового кадра. Но это на 100 мс примерно), но очень малозаметные. Скорость вывода при этом возрастает раза в 1.5...2. В приборе будут достаточно статичные картинки, простые меню выбора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
meloden2 0 31 июля, 2014 Опубликовано 31 июля, 2014 · Жалоба "дисплей от BF548", если это про ADI http://www.analog.com/ru/processors-dsp/bl...ts/product.html, то может вы имели в виду котроллер дисплея, а не дисплей? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kochevkv 0 31 июля, 2014 Опубликовано 31 июля, 2014 · Жалоба Прошу прощения. перечитал свой вопрос. BF548 - это микроконтроллер. "Организую вывод на новый дисплей от BF548" надо читать как "Организую вывод изображения на новый дисплей с микроконтроллера BF548". Ну главное в вопросе: не будет ли конфликта при одновременной записи со стороны моей программы в область памяти, на которую настроен канал DMA драйвера дисплея. Вот. Ну jcxz уже сказал, что конфликта не будет (что я, в общем-то, и наблюдаю). Просто в документации не нашел каких-либо рекомендаций на счет разграничения по времени доступа для DMA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
koljakh 0 2 августа, 2014 Опубликовано 2 августа, 2014 · Жалоба Прошу прощения. перечитал свой вопрос. BF548 - это микроконтроллер. "Организую вывод на новый дисплей от BF548" надо читать как "Организую вывод изображения на новый дисплей с микроконтроллера BF548". Ну главное в вопросе: не будет ли конфликта при одновременной записи со стороны моей программы в область памяти, на которую настроен канал DMA драйвера дисплея. Вот. Ну jcxz уже сказал, что конфликта не будет (что я, в общем-то, и наблюдаю). Просто в документации не нашел каких-либо рекомендаций на счет разграничения по времени доступа для DMA. Ядро имеет приоритет над каналами DMA при доступе к внешней памяти, поэтому рисование больших полигонов лучше делать с помощью MEMDMA, как и копирование областей. Конечно это не 2D ускоритель, но это сильно ускорит процесс. В этом проце добавили FIFO на чтение буфера, поэтому артефактов быть не должно даже при сильной загрузке. А по времени различные DMA каналы и ядро сами разберутся. Но все это для небольших и средних дисплеев. Для 1024на768 там все хуже будет с производительностью, но заставить сносно работать можно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kochevkv 0 22 июля, 2015 Опубликовано 22 июля, 2015 · Жалоба Недавно был конфликт с одной из библиотечных DSP функций. При расчете FFT экран рассинхронизировался. В регистре статуса DMA появлялась ошибка заполнения буфера DMA. Оказалось, что при интенсивной работе с внешней SDRAM памятью такие ошибки возможны и в контроллере для решения этой проблемы есть даже отдельные битики для установки приоритета DMA параллельного интерфейса EPPI. Если кто столкнется с аналогичной проблемой - то вот решение: *pHMDMA0_CONTROL = *pHMDMA0_CONTROL | ( 1<<10) | ( 1 << 11 ); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться