-
- А если без 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)