-
- Реплик много, но ясного ответа на свой вопрос я так и не получила. Если формулировка моего вопроса кому-то кажется слишком абстрактной, конкретизирую. Кто проводит на экране линию? GUI или не GUI? Если GUI умеет рисовать только в буферной памяти, Ксения(213 знак., 07.12.2017 16:12)
- Да, Гуй рисует только в буффере. В ТФТ, построчно, инфу переносит контроллер ТФТ. Для этого ему показывают откуда и чего брать. Контроллер только этим и занимается: формирует временную диаграмму для ТФТ и суёт в неё данные из памяти фрейма. mse homjak(141 знак., 07.12.2017 22:02 - 22:08)
- Мысли по поводу: хорошо было бы написать, как для stdio базовую функцию а-ля putchar и пользоваться. Но не выйдет: дисплеи не унифицированы. Один - символьный, другой графический, третий - графический, но точку рисует дольше, чем линию. Как Dingo(294 знак., 07.12.2017 17:44)
- GUI STemWin прекрасно работает. Рисует в буфер (который ему выделяешь). Содержит драйвер который выводит буфер в дисплей (нужно адаптировать к конкретному дисплею). Шина подключения - LTDC - 0men(07.12.2017 17:09 - 17:17)
- µGUI -> стостоит из трех файлов, C файл --> Просто поищите в коде - там все очень прозрачно! Evgeny_CD(716 знак., 07.12.2017 16:58, ссылка, ссылка)
- Ксения, иерархия всего сущего в части GUI очень простая. Evgeny_CD(1190 знак., 07.12.2017 20:33)
- "Дисплей всегда имеет ОЗУ" вот это совсем необязательно. Обычно как раз это озу расположено либо в проце, либо во внешней сраме, сдраме - 0men(07.12.2017 20:43)
- Обязательно. Но, только на одну строку. ;О) Ну и буфер на приём следующей. Если "дисплей", этор не ЭЛТ, канешна. - mse homjak(07.12.2017 21:47 - 22:05)
- :) - 0men(08.12.2017 13:36)
- Ок. Дисплей всегда имеет доступ к ОЗУ, из которого он автоматически создает картинку на экране. - Evgeny_CD(07.12.2017 20:46)
- Если у процессора/контролера нет прямого доступа к этому графическому ОЗУ, то можно считать, что его нет :). Поэтому реальность обычно выглядит так, что какое-то (обычно весьма значительное) число ножек МК присоединено к контактам дисплея, а Ксения(10633 знак., 07.12.2017 20:56)
- Сколько же магии в этом коде. Разработчики драйверов дисплеев никогда не задумывались о повышении читабельности своего кода - lloyd(07.12.2017 22:36)
- Вот еще простая либа -> - Evgeny_CD(07.12.2017 21:43, ссылка)
- Вот ДШ на все 4 типа упомянутых контроллеров. Берите HX8347-D, например на стр 26 начинается описание всех возможных вариантов интерфейсов. Все очень логично. Evgeny_CD(07.12.2017 21:26)
- Не 4 их там, а как минимум 7. Но суть дела не в том, как мне помочь, а как подобного рода проблемы решать в самом общем случае. Потому-то "курить даташит" такого размера - все равно что ... писать на ассемблере код для неизвестного тебе процессора Ксения(581 знак., 07.12.2017 21:41)
- Ксения, это же логично. Человек делает устройство, выбирает под него дисплей и контроллер. Пишет драйвер под эту конфигурацию. Если ожидается несколько вариантов дисплея - пишет несколько вариантов кода. Как по-другому? "Универсальный драйвер LightElf(17 знак., 08.12.2017 10:55)
- Логично было бы иначе - когда драйвер пишет производитель дисплея! Кому, как не ему, знать все его причуды? Тем более что существуют "универсальные" языки вроде Си. Выводам дисплея можно было бы дать какие-то абстрактные имена или организовать в Ксения(878 знак., 08.12.2017 15:30)
- Вот то, о чём ты так мечтала :-) - бомж(08.12.2017 19:07, ссылка)
- Дык это же мой клиент! Я ещё удивлялся, как он без конденсаторов работает. И ведь работает, каналья! Кстати, был приятно удивлён тому, что команды рисования точно такие же, как и у того, кого он заменил (с каким-то самсунговским контроллером). SciFi(76 знак., 08.12.2017 20:20)
- А вы уверены, что мой такой же? А то у меня на схеме вот что написано: AM240320LDTNQW => - Ксения(08.12.2017 19:13, ссылка)
- Уфф... На свете существует 100500 всяких эмбеднутых библиотек GUI. Под которую из них производитель TFT дисплея (дядюшка Ляо) должен предоставить драйвер? - LightElf(08.12.2017 17:34)
- когда к дисплею тянутся 30 проводов, это означает, что он подключен по RGB и у проца, к которому он подключен, существует специализированный контроллер TFT. Во всех гуи есть шаблоны этого драйвера, адаптация к дисплею занимает пара дней с нуля. - 0men(08.12.2017 15:35)
- Ни о чём... POV_(812 знак., 08.12.2017 22:39, )
- Г это риверди с Ft81x. Использовал его. Потом перешел на те же реверди, но с RGB интерфейсом и STemWin. Драйвер писался и отлаживался 2-3 дня - 0men(11.12.2017 13:51)
- Недели и месяцы для освоения контроллера? Ну, если он первый в жизни, и программировать не умеешь, и про транзисторы и вольты впервые услышал, то да. SciFi(53 знак., 08.12.2017 22:43 - 22:45)
- Не упрощай. Впрочем, и я про месяцы перегнул. Но глянь DS на FT813x и скажи за сколько ты напишешь исчерпывающий драйвер. А потом погляди на имеющееся решение... POV_(161 знак., 08.12.2017 23:03, )
- Взглянул. Они там что-то такое изобрели, дескать, всё внутре. Сишные обёртки для этого - работа на пару дней. - SciFi(09.12.2017 16:08)
- Да какие пару дней?!... нолик забыл... POV_(138 знак., 09.12.2017 18:33, )
- поэтому FT800 нужно выкинуть и использовать нормальные вещи - 0men(11.12.2017 13:53)
- По ссылке папку FT800 глянь... POV_(84 знак., 09.12.2017 18:36, )
- Да какие пару дней?!... нолик забыл... POV_(138 знак., 09.12.2017 18:33, )
- Взглянул. Они там что-то такое изобрели, дескать, всё внутре. Сишные обёртки для этого - работа на пару дней. - SciFi(09.12.2017 16:08)
- Не упрощай. Впрочем, и я про месяцы перегнул. Но глянь DS на FT813x и скажи за сколько ты напишешь исчерпывающий драйвер. А потом погляди на имеющееся решение... POV_(161 знак., 08.12.2017 23:03, )
- Ни о чём... POV_(812 знак., 08.12.2017 22:39, )
- Вот то, о чём ты так мечтала :-) - бомж(08.12.2017 19:07, ссылка)
- >"Универсальный драйвер всего на свете?" lloyd(53 знак., 08.12.2017 11:37)
- Надо не производителей GUI и OS заставлять писать универсальные драйверы, а производителей дисплеев заставлять написать конкретный драйвер под свой дисплей. Тем более, что среде Windows и Linux такая практика давно сложилась в отношении периферии. - Ксения(08.12.2017 15:35)
- Интеловский виндовый драйвер, который это умеет (кернельная часть) весит больше 5 мегабайт. Атишный - 11 мегабайт. А так оно конечно. - LightElf(08.12.2017 12:02)
- Логично было бы иначе - когда драйвер пишет производитель дисплея! Кому, как не ему, знать все его причуды? Тем более что существуют "универсальные" языки вроде Си. Выводам дисплея можно было бы дать какие-то абстрактные имена или организовать в Ксения(878 знак., 08.12.2017 15:30)
- Не путайте совершенно разные сущности "дисплей" и "контроллер дисплея"(да, могут быть скооперированы). Дисплеи, сусчества с боле-мене стандартными интерфейсами. Существенная разница, только в размере XxY и глубине цвета(соответственно, частоте mse homjak(328 знак., 07.12.2017 21:58)
- Ксения! Вот там Вы перечислили 3 контроллера, но зачем-то 2 раза ->, один еще упомянули сами. В части USB здесь давали ссылку на очень могучий открытый USB стек LUFA -->, который формально для AVR, но на самом деле его несложно допилить под все. Evgeny_CD(279 знак., 07.12.2017 21:49, ссылка, ссылка)
- На этом разговор со мной можно закончить. - Ксения(07.12.2017 21:50)
- Ксения, это же логично. Человек делает устройство, выбирает под него дисплей и контроллер. Пишет драйвер под эту конфигурацию. Если ожидается несколько вариантов дисплея - пишет несколько вариантов кода. Как по-другому? "Универсальный драйвер LightElf(17 знак., 08.12.2017 10:55)
- Не 4 их там, а как минимум 7. Но суть дела не в том, как мне помочь, а как подобного рода проблемы решать в самом общем случае. Потому-то "курить даташит" такого размера - все равно что ... писать на ассемблере код для неизвестного тебе процессора Ксения(581 знак., 07.12.2017 21:41)
- Берете даташит на оный HX8347D - и вперед. - LightElf(07.12.2017 21:07)
- А откуда вы знаете, что он HX8347D? Я-то даже слова такого не знаю. :) - Ксения(07.12.2017 21:10)
- В приведенной вами функции эта написано :) - LightElf(07.12.2017 21:13)
- Дык это если "if( driverCode == 0x47)", а ведь бывает еще: Ксения(430 знак., 07.12.2017 21:29)
- Ксения, я выложил ДШ на ВСЕ эти контроллеры. - Evgeny_CD(07.12.2017 21:32)
- Благодарю вас за это. - Ксения(07.12.2017 21:42)
- Ксения, я выложил ДШ на ВСЕ эти контроллеры. - Evgeny_CD(07.12.2017 21:32)
- Дык это если "if( driverCode == 0x47)", а ведь бывает еще: Ксения(430 знак., 07.12.2017 21:29)
- В приведенной вами функции эта написано :) - LightElf(07.12.2017 21:13)
- А откуда вы знаете, что он HX8347D? Я-то даже слова такого не знаю. :) - Ксения(07.12.2017 21:10)
- Если у процессора/контролера нет прямого доступа к этому графическому ОЗУ, то можно считать, что его нет :). Поэтому реальность обычно выглядит так, что какое-то (обычно весьма значительное) число ножек МК присоединено к контактам дисплея, а Ксения(10633 знак., 07.12.2017 20:56)
- Обязательно. Но, только на одну строку. ;О) Ну и буфер на приём следующей. Если "дисплей", этор не ЭЛТ, канешна. - mse homjak(07.12.2017 21:47 - 22:05)
- "Дисплей всегда имеет ОЗУ" вот это совсем необязательно. Обычно как раз это озу расположено либо в проце, либо во внешней сраме, сдраме - 0men(07.12.2017 20:43)
- Ксения, иерархия всего сущего в части GUI очень простая. Evgeny_CD(1190 знак., 07.12.2017 20:33)
- Буферная память - элемент контроллера дисплея (электронно-лучевой трубки или чего иного - не суть) Скрипач(629 знак., 07.12.2017 16:21 - 16:25)
- Меня интересует самый нижний уровень, начиная от обмена через порты и кончая индикацией точки, линии и картинки на дисплее. Причем не тот случай, когда экранная память дисплея отображается в адресном пространстве МК, в виде внешней памяти, а когда Ксения(85 знак., 07.12.2017 16:47)
- С контроллером дисплея прийдется говорить на его языке. Самой писать драйвер (код перевода точек и прямых в команды записи в правильные порты с правильными таймингами). Скрипач(90 знак., 07.12.2017 16:52)
- Вот я как раз и интересовалась, входит ли набор таких драйверов в GUI, или сфера GUI ограничивается лишь дизайном, а к аппаратной области отношения не имеет. - Ксения(07.12.2017 17:22)
- если вы STM используете, то ваш дисплей прикрутить через STemWin достаточно просто - 0men(07.12.2017 17:35)
- Обычно входит "условно". Драйвера - есть, но разбираться и допиливать все равно прийдется самой, под данный конкретный дисплей. - Скрипач(07.12.2017 17:26)
- Вот я как раз и интересовалась, входит ли набор таких драйверов в GUI, или сфера GUI ограничивается лишь дизайном, а к аппаратной области отношения не имеет. - Ксения(07.12.2017 17:22)
- С контроллером дисплея прийдется говорить на его языке. Самой писать драйвер (код перевода точек и прямых в команды записи в правильные порты с правильными таймингами). Скрипач(90 знак., 07.12.2017 16:52)
- Меня интересует самый нижний уровень, начиная от обмена через порты и кончая индикацией точки, линии и картинки на дисплее. Причем не тот случай, когда экранная память дисплея отображается в адресном пространстве МК, в виде внешней памяти, а когда Ксения(85 знак., 07.12.2017 16:47)
- Типично есть драйвер, который экспортирует несколько функций: put_pixel, get_pixel, copy_pixel и т.д. Могут быть и более сложные функции, типа fill_rect, copy_rect, draw_h_line и т.д. Как именно обращаться к памяти буфера - головная боль именно LightElf(16 знак., 07.12.2017 16:18)
- Пусть так. Тогда откуда эти драйверы берутся? Их где-то делают на вынос, или они часть GUI или OS? Например, драйверы для основных периферийных устройств - чаcть Windows, несмотря на то, что производители их - изготовители периферии. В противном Ксения(626 знак., 07.12.2017 16:36)
- Для коммерческих библиотек GUI - пишет сам разработчик библиотеки. Для бесплатных - пользователи. Если под ваш дисплей нет дравера под выбранную библиотеку - вы в пролете, придется писать самостоятельно. Аналогия с Windows весьма ошибочная. - LightElf(07.12.2017 21:03)
- Это да.. помниться зимой наивно хотел сам запилить драйвер для FT812... POV_(170 знак., 07.12.2017 17:00, )
- ...а никто и не обещал что будет легко (с) - Скрипач(07.12.2017 16:55)
- Пусть так. Тогда откуда эти драйверы берутся? Их где-то делают на вынос, или они часть GUI или OS? Например, драйверы для основных периферийных устройств - чаcть Windows, несмотря на то, что производители их - изготовители периферии. В противном Ксения(626 знак., 07.12.2017 16:36)
- Тут таке... Для некого прибора, ТФТ, это есть судьба-судьбинушка. Т.е. сделал, прошёл сертификацию и усё. Можно менять только на синонимы, бо многие вещи прописаны в бумажках. Можно ваять модификации, "не ухудшающие параметры". Но с этим никто не mse homjak(435 знак., 05.12.2017 23:41)
- Примитивы это более высокий уровень абстракции, и контроллеров на самом деле не так уж много и вариантов подключения тоже. если со своей памятью - вешается на параллельную шину, если без памяти - свободы маневра еще меньше. При понимании ситуации AVF(199 знак., 05.12.2017 22:25)
- SPI -> - Evgeny_CD(05.12.2017 22:27, ссылка)
- да вообще не вопрос, при грамотном разделении уровней. Хотя тип интерфейса SPI/FSMC конечно надо знать заранее. - AVF(06.12.2017 06:47)
- Точнее, надо знать тип интерфейса и "класс команд" для управления дисплеем. - Evgeny_CD(06.12.2017 23:01)
- А если у меня другой дисплей (см. ссылку), на какую GUI мне уповать? - Ксения(05.12.2017 22:34, ссылка)
- µGFX -> --> - Evgeny_CD(05.12.2017 22:39, ссылка, ссылка)
- А если без GUI - только прямую линию между точками нарисовать? Где мне такой примитив для своего дисплея взять? Или только ради этого GUI ставить? - Ксения(05.12.2017 22:42)
- GUI это опять более высокий уровень. я бы так разделил интерфейс->HAL->примитивы->GUI. интерфейс - как обращаться к дисплею, HAL - уровень регистров контроллера дисплея, примитивы - линии/точки/заливка. GUI - текст, элементы управления - AVF(06.12.2017 06:51)
- Нарисовать любую фигуру можно и без всякого гуя. - KLIM83(05.12.2017 22:44)
- Вот мне без ГУЯ и надо. Точку я рисовать могу, но линия, как многократное повторение процедуры "точка" - слишком медленно. - Ксения(05.12.2017 23:11)
- Медленно, значит примените акселератор. Аппаратный, естественно. Скрипач(101 знак., 05.12.2017 23:15)
- В данном случае тормоза программные. Сперва делается куча приготовлений (в разные регистры пишется мура), потом ставится эта точка, затем все эти регистры откатываются назад. Т.е. природа этих тормозов ровно та же, что и под Windows, когда линия Ксения(185 знак., 05.12.2017 23:43 - 23:46, ссылка)
- Значит нужно эффективнее использовать регистры. Не перегружать.
Или взять молоток по-больше.Скрипач(71 знак., 05.12.2017 23:50)- А мне казалось, что к видеопамяти у CPU никогда не было доступа. - Ксения(06.12.2017 00:01)
- Шина памяти, по железу, не сильно отличается от пары индексный-регистр:регистр:данных. Скрипач(42 знак., 06.12.2017 00:13)
- Означает нахождение графической памяти в адресном пространстве обычной. В принципе ISA-шина позволяла это не только видеокартам, но и всему тому, что было в комп воткнуто. - Ксения(06.12.2017 00:25)
- И? Какая разница что в чем находится, если и то, и то - шина? Кэш? Так а нахрена видеоданным кэш? Частота квитирования шины? А она действительно выше? Скрипач(74 знак., 06.12.2017 09:30)
- Если видео-буфер не в памяти, то обращаться к нему придется через регистры: в один регистр пишешь адрес элемента буфера, а потом в другой регистр байт данных для него кладешь. Причем каждая из этих двух операций по сложности не проще, чем сама Ксения(110 знак., 06.12.2017 15:57)
- Повторяю, шине - все равно, памяти она или ввода-вывода :) Процесс одинаков. Скрипач(58 знак., 06.12.2017 16:28)
- а чего сложного то? для параллельной шины это вообще тривиальная операция, так как оно отображается на память. для spi чуть сложнее write_reg(regadr, adr); write_reg(regdata, data); причем разных готовых библиотек под разные экраны как грязи - AVF(06.12.2017 16:16)
- А если вспомнить, что write_reg(regadr, adr) и write_reg(regdata, data) - отдельные подпрограммы/функции, но и вовсе становится весело :) - Ксения(06.12.2017 16:28)
- ЗЫ: на самом деле основная сложность - краткость документации и всякие хитрые режимы направления разверток, ориентации и т.п., т.е. начальная инициализация, с которой приходится экспериментировать из-за краткости документации и непоняток как AVF(136 знак., 06.12.2017 16:36)
- А я вот смотрю сейчас на реализацию алгоритма Брезенхэма (проведение прямой на дискретном поле) и диву даюсь, как косолапо эта процедура для ARM'ов написана - везде, где требуется поставить следующую точку правее или выше, вызываются функции (!) Ксения(2216 знак., 06.12.2017 17:16 - 17:19, ссылка)
- Что-то я смотрю на код и нифига не понимаю. Evgeny_CD(137 знак., 06.12.2017 19:25)
- Говнокодеров спасла типизация в С. Evgeny_CD(1634 знак., 06.12.2017 21:40 - 21:50)
- Но ведь согласны же, что код - дерьмо, и что быстро работать он не может. Между тем этот код не просто "взят из интернета", а с cайта ARM. И он же в качестве образцового для данного МК приведен в examples пакета ARM MDK! Что уже очень серьезно. - Ксения(06.12.2017 21:53)
- Я категорически не могу понять, зачем в Брезенхеме, который в основе своей целочисленный алгоритм, плавучка? да еще и дабловая!? Да еще во встраиваемой системе? - Evgeny_CD(06.12.2017 21:58)
- Детский сад. Это же ARM, а роялти с ядра с плавучкой всякого выше, чем без. - she(06.12.2017 22:16)
- Тонкость в том, что только некоторые MCU имеют даблы - отдельные варианты Cortex-M7 и отдельные варианты PIC32. - Evgeny_CD(06.12.2017 22:30)
- В данном случае говнокод был написан для серии LPC17xx, которые Кортексы даже не M4, а M3. Полагаю, что плавучки у них вообще нет, даже float. Или есть? - Ксения(06.12.2017 23:17)
- Совершенно точно, LPC17xx плавучки не имеют! Evgeny_CD(06.12.2017 23:20)
- Может это часть бенчмарка под конкретный проц? Вот смотрите, ему глубоко пофигу молотить брезенхема в целых или в даблах:) - 1111111(06.12.2017 22:57)
- Тренировка самоубийц... - Evgeny_CD(06.12.2017 22:58)
- В данном случае говнокод был написан для серии LPC17xx, которые Кортексы даже не M4, а M3. Полагаю, что плавучки у них вообще нет, даже float. Или есть? - Ксения(06.12.2017 23:17)
- Я низко кланяюсь гению маркетинга и пристыженно уползаю под стол. - Evgeny_CD(06.12.2017 22:29)
- Тонкость в том, что только некоторые MCU имеют даблы - отдельные варианты Cortex-M7 и отдельные варианты PIC32. - Evgeny_CD(06.12.2017 22:30)
- Детский сад. Это же ARM, а роялти с ядра с плавучкой всякого выше, чем без. - she(06.12.2017 22:16)
- Я категорически не могу понять, зачем в Брезенхеме, который в основе своей целочисленный алгоритм, плавучка? да еще и дабловая!? Да еще во встраиваемой системе? - Evgeny_CD(06.12.2017 21:58)
- Канонический вариант Брезенхема. Работать будет, вероятно, на порядок быстрее говнокода -> - Evgeny_CD(06.12.2017 21:52, ссылка)
- Здесь уже проскакивала ссылка, где алгоритм был написан в целых числах. Этого вполне достаточно. => - Ксения(06.12.2017 22:00, ссылка)
- Но ведь согласны же, что код - дерьмо, и что быстро работать он не может. Между тем этот код не просто "взят из интернета", а с cайта ARM. И он же в качестве образцового для данного МК приведен в examples пакета ARM MDK! Что уже очень серьезно. - Ксения(06.12.2017 21:53)
- double delta, tx, ty; Код целиком по ссылке => - Ксения(06.12.2017 19:31 - 19:34, ссылка)
- Это интернет. Тут можно много какашек нарыть, особенно если специально их искать. Нужно искать перлы --> - SciFi(06.12.2017 20:07, ссылка)
- Говнокодеров спасла типизация в С. Evgeny_CD(1634 знак., 06.12.2017 21:40 - 21:50)
- не, ну криворуких то хватает :) - AVF(06.12.2017 19:15)
- Что-то я смотрю на код и нифига не понимаю. Evgeny_CD(137 знак., 06.12.2017 19:25)
- А я вот смотрю сейчас на реализацию алгоритма Брезенхэма (проведение прямой на дискретном поле) и диву даюсь, как косолапо эта процедура для ARM'ов написана - везде, где требуется поставить следующую точку правее или выше, вызываются функции (!) Ксения(2216 знак., 06.12.2017 17:16 - 17:19, ссылка)
- Можно "размотать" и оптимизировать. Только смысл? Возьмите молоток по-больше, не тратьте жизнь на ерунду :) - Скрипач(06.12.2017 16:35)
- не, ну если два байта через spi переслать проблема, то конечно, работа с индикатором неподъемная вещь - AVF(06.12.2017 16:32)
- ЗЫ: на самом деле основная сложность - краткость документации и всякие хитрые режимы направления разверток, ориентации и т.п., т.е. начальная инициализация, с которой приходится экспериментировать из-за краткости документации и непоняток как AVF(136 знак., 06.12.2017 16:36)
- А если вспомнить, что write_reg(regadr, adr) и write_reg(regdata, data) - отдельные подпрограммы/функции, но и вовсе становится весело :) - Ксения(06.12.2017 16:28)
- Если видео-буфер не в памяти, то обращаться к нему придется через регистры: в один регистр пишешь адрес элемента буфера, а потом в другой регистр байт данных для него кладешь. Причем каждая из этих двух операций по сложности не проще, чем сама Ксения(110 знак., 06.12.2017 15:57)
- И? Какая разница что в чем находится, если и то, и то - шина? Кэш? Так а нахрена видеоданным кэш? Частота квитирования шины? А она действительно выше? Скрипач(74 знак., 06.12.2017 09:30)
- Означает нахождение графической памяти в адресном пространстве обычной. В принципе ISA-шина позволяла это не только видеокартам, но и всему тому, что было в комп воткнуто. - Ксения(06.12.2017 00:25)
- о господи SciFi(42 знак., 06.12.2017 00:03)
- Шина памяти, по железу, не сильно отличается от пары индексный-регистр:регистр:данных. Скрипач(42 знак., 06.12.2017 00:13)
- А мне казалось, что к видеопамяти у CPU никогда не было доступа. - Ксения(06.12.2017 00:01)
- Значит нужно эффективнее использовать регистры. Не перегружать.
- За 1000% цены договора можно :) - Evgeny_CD(05.12.2017 23:43)
- В данном случае тормоза программные. Сперва делается куча приготовлений (в разные регистры пишется мура), потом ставится эта точка, затем все эти регистры откатываются назад. Т.е. природа этих тормозов ровно та же, что и под Windows, когда линия Ксения(185 знак., 05.12.2017 23:43 - 23:46, ссылка)
- Бывают такие с позволения сказать "драйверы", у которых точка - это до Луны и обратно. Ну а если не в это упёрлось, то точно у контроллера есть ускоренное закрашивание прямоугольника. Разбить "линию" на прямоугольники (Брезенхем не возражаэ) - и SciFi(14 знак., 05.12.2017 23:14)
- Медленно, значит примените акселератор. Аппаратный, естественно. Скрипач(101 знак., 05.12.2017 23:15)
- Вот мне без ГУЯ и надо. Точку я рисовать могу, но линия, как многократное повторение процедуры "точка" - слишком медленно. - Ксения(05.12.2017 23:11)
- А если без GUI - только прямую линию между точками нарисовать? Где мне такой примитив для своего дисплея взять? Или только ради этого GUI ставить? - Ксения(05.12.2017 22:42)
- Нанимать знающих товарищей. Я такую штуку за пару часов поднял бы, наверное, но уже трудоустроен, и звените... - SciFi(05.12.2017 22:36)
- µGFX -> --> - Evgeny_CD(05.12.2017 22:39, ссылка, ссылка)
- да вообще не вопрос, при грамотном разделении уровней. Хотя тип интерфейса SPI/FSMC конечно надо знать заранее. - AVF(06.12.2017 06:47)
- SPI -> - Evgeny_CD(05.12.2017 22:27, ссылка)
- В общем случае дисплеи реализуются просто: есть буффер экрана (в идеале - не меньше 2), который заполняется программным кросс-платформенным/аппаратно-ускоренным методом. lloyd(411 знак., 05.12.2017 21:46)
- Есть более сложный вариант -> когда память, из которой зажигают пикселы, находится в самом LCD, а нам надо при маленьком ОЗУ (< фрембуфера) изголиться отрисовать там картинку. - Evgeny_CD(05.12.2017 21:48, ссылка)
- Именно о том и речь. А тот случай, когда DMA непрерывно гонит байты из буфера на экран, банален. - Ксения(05.12.2017 22:24)
- ILI9341 з алиэкспресса делает так же. Конечно можно рисовать по отдельным пикселям, но получается чудовищно накладно по ресурсам и невыносимо медленно по времени. lloyd(226 знак., 05.12.2017 21:52)
- В покое дисплей отображает статичную картинку при 0 трафике от проца. - Evgeny_CD(05.12.2017 21:57)
- Есть более сложный вариант -> когда память, из которой зажигают пикселы, находится в самом LCD, а нам надо при маленьком ОЗУ (< фрембуфера) изголиться отрисовать там картинку. - Evgeny_CD(05.12.2017 21:48, ссылка)
- Реплик много, но ясного ответа на свой вопрос я так и не получила. Если формулировка моего вопроса кому-то кажется слишком абстрактной, конкретизирую. Кто проводит на экране линию? GUI или не GUI? Если GUI умеет рисовать только в буферной памяти, Ксения(213 знак., 07.12.2017 16:12)