Pull to refresh

Comments 56

эта библиотека на все портируется, без шуток.

"Предположим под ваш дисплей драйвер уже написан порт LVGL и вам надо только интегрировать его в проект." — что-то не так с этим предложением

Спасибо. переделал
UFO just landed and posted this here
Библиотека приятная, но достаточно ресурсоемкая. И по флеш памяти, и по оперативной. Ей нужен во-первых видеобуфер, а во вторых куча под хранение объектов. Пробую внедрить ее на f103 с экраном 480*320 по FSMC. По факту нужно видеобуфер хотябы на 20 строк (480*20), а лучше больше. На моем не сильно замороченном интерфейсе размер данных в куче доходит до 11кб. Для МК у которого всего 64кб это проблема.
В другом проекте использую H750, у него с оперативной памятью проблем нет, но флеша всего 128кб :)

Я в код библиотеки не лазил, но судя по документации и описанию от автора, библиотека умеет перерисовывать только изменившуюся часть картинки.

Очень понравился механизм файловых систем. Мне нужно было показывать картинку из SPI флеш и картинки создаваемые «на лету» из файлов на SD карте. При помощи файловых систем удалось решить достаточно просто и прозрачно.
Вы просто не умеете портировать драйвер для дисплея.

Я в код библиотеки не лазил, но судя по документации и описанию от автора, библиотека умеет перерисовывать только изменившуюся часть картинки.

Если вам зачем-то понадобиться отрисовать весь экран заново, для этого достаточно вызвать lv_obj_invalidate(lv_scr_act()) или что-то вроде этого

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

Ну так это плюс и это логично! Зачем тратить время на перерисовывание того, что не изменилось?
Достаточно просто их не использовать, gcc сам умеет выкидывать не используемый код :)
там еще формируются структуры под тему и вообще очень замороченые взаимозависимости. поэтому не просто так там дефайны есть для отключения ненужных фич.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
ведь это gui библа. зачем рисовать линии? рисовать линии можно например с помощью tft_espi библиотеки.
UFO just landed and posted this here
да для arduino. я для примера привел. графических библиотек для esp8266 и esp32 достаточно. чисто графических. они и легче и проще по api. я просто не понимаю зачем брать полноценную gui библиотеку продвинутую и рисовать с ее помощью линии. забивание гвоздей микроскопом прямо.
UFO just landed and posted this here
Можно код в студию с глючащими линиями — а то у меня сыновья (лет 10 назад) частенько находили баги в Turbo Vision, да и в компиляторах, а на поверку оказывалось, что дело в определенном непонимании.
UFO just landed and posted this here
UFO just landed and posted this here
Если это за деньги, нафиг оно надо? Сылку приведете где можно исходники скачать?
UFO just landed and posted this here
Код самой библиотеки, внутренности фреймворка. Вы понимаете знаете слова «исходники»?
UFO just landed and posted this here
этот код закрыт

речь шла именно об этом коде
UFO just landed and posted this here
Представте себе — нельзя, если речь идет об устройствах класа C.
UFO just landed and posted this here
Вы сами написали, исходники фрейморка — закрыты… Откуда они у меня появятся? Скиньте сылку на исходники, или сгенерируйте в CubeMX небольшой проект, в котором я смогу изменить код самой TouchGFX (не гренерированные файлы, они не относятся к фреймворку). Не надо утверждать что-то без доказательств.
UFO just landed and posted this here
Так сылочка на исходники будет или нет?
UFO just landed and posted this here
dernuss сегодня в 10:52
ну исходники GUI она открывает)


не я это утверждал, я знаю другой факт — исодников бесплатно этот фреймворк не предоставляет.
UFO just landed and posted this here
Возможно речь о том что сгенерированные исходники под копирайтом фреймворка? Если был куплен TouchGFX дизайнер то можно использовать сгенерированные файлы в коммерческом проекте. Если дизайнер не куплен то нельзя
UFO just landed and posted this here

Как все таки отстает программирование на микроконтроллерах от программирования для pc.
Прежде всего отстает технологически, то чем занимались в 90х на pc, только сейчас приходит в мк.
Если посмотреть на современные интерфейсы и как предлагают их программировать я же сколько человекочасов должен потратить, чтобы добиться минимума. С таким подходом у меня устройство устареет быстрее, чем я его а серию отправлю.

UFO just landed and posted this here
Так и задачи у устройств на микроконтроллерах обычно другие, где красивые окошки рисовать не самое важное.

Но насчёт отставания вы правы, по крайней мере в культуре разработки софта разница очень заметна. Из моего опыта редкий программист встраиваемых систем пользуется системами контроля версий, например. А за всякие SOLID, паттерны и интерфейсы вообще можно хипстером-выпендрёжником прослыть. Хотя конечно может это мне просто не везёт так.
А за всякие SOLID, паттерны и интерфейсы вообще можно хипстером-выпендрёжником прослыть

А они часто и не нужны, если устройство однозадачное и код необновляемый и сопровождаемый одним человеком. Если что-то хитрое (сборочный робот или микроволновка с кучей рецептов), то вот тут-то приёмы, ориентированные на читаемость и расширяемость, и вылезают.
Что именно? Насколько я помню, МК, которые могут сразу несколько вещей в условиях реального времени, появились относительно недавно, до этого в сложном оборудовании ставили несколько МК, связанных между собой, т.е. микросервисы и паттерн Наблюдатель были хардварные :)

Это шутка была, к тому что Ваш комментарий удачно подтвердил мой тезис.


Конкретно на Ваш комментарий можно ответить так — не обязательно применять что-то просто потому что ты это знаешь, но важно знать чтобы иметь возможность понять когда надо применить и чтобы иметь возможность это сделать. Тут точно так-же как с инструментами для ручной работы — если у вас есть молоток, то не обязательно делать им вообще всё подряд — но вот когда нужно забить гвоздь то плохо когда молотка у вас нету. Но я серьёзно не вижу смысла продолжать спорить.


Почти никогда не выходит продуктивного разговора на эту тему, понимаете? Стоит хоть мельком упомянуть хоть что-то из теории программирования, наработанной за последние пару десятилетий — как в половине случаев собеседник-эмбеддер тут-же бросается доказывать что то, о чём ты упомянул, либо в принципе ерунда никчёмная, либо в его конкретном случае не нужно, либо конкретно ему не нужно, либо ещё десяток причин почему его это не должно касаться.


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


Или проекты, где все *.с файлы кроме одного исключены из компиляции, и заинклужены (не заголовочники, а *.с файлы) в этот самый единственный, что фактически даёт один юнит компиляции длиной в 7+ тысяч строк. Ключевого слова static там принципиально нет, всё что не локальное у функции — то глобальное. Всё может обращаться ко всему. А переменная с говорящим названием TFM отвечает — очевидно же — за логику работы пищалки.


Конечно это всё полные случайности — на самом деле все всё делали хорошо, оно само плохо получилось. Никакое понимание какой-либо теории здесь бы не помогло, да.


А если серьёзно — на мой взгляд в таких спорах сильнее всего влияет недоверие к чужому опыту (в лучшем случае) и/или банальная лень (в худшем случае). Иногда ещё примешивается свойственное всем людям желание ощущать себя особенным, избранным, дивергентом, довакином, Бэтменом. Мол "Это хипстерам в их вебе паттерны нужны, они просто не знают что такое настоящее программирование — без права на ошибку и по локоть в хлорном железе. Нам, гордым и могучим эмбеддерам, вся эта детская возня ни к чему.". А приводимые в споре аргументы — просто рационализация.


В общем что я хочу сказать. Скромнее надо быть, и не чураться перенимать чужой опыт.

Да я с вами по сути не спорю, просто мне вспомнилось, как знакомый джавист обозвал мой код (да, метеостанция :) ) приветом из 70х, а когда я предложил ему написать правильно, родил что-то за 20 метров. Многие не понимают, что писать в эмбедде как под десктоп просто нельзя: классы с накладными расходами, динамическая линковка, исключения, динамическое выделение памяти — всё это дорого и часто просто не позволяет закрыть ТЗ на выбранном МК. Ну не понимают многие хипстеры веб-программисты, что 100 тактов — это долго, а 1Мб оперативки — офигеть как много. Так что вместо паттернов эмбеддер лучше потратит время на изучение схемотехники.

Другой вопрос про организацию работы: svn/гит это просто удобно, тесты полезны (несмотря на то, что в эмбедде часто разводит плату, пишет код и гоняет тесты один человек), а doxygen экономит время. Тут просто надо любить, уметь, практиковать.
UFO just landed and posted this here
Дык то на флеше, а в буфер обычно откусываем кусочками единицами-десятками кил)
UFO just landed and posted this here
Дело-то в том, что именно подцепляется отдельной схемой. Писать контроллер дисплея, чтобы он хранил два фрейма целиком, когда этого не требуется, это как продавать программу, где вместе с диском лежат две плашки оперативки на 16 гиг :)

Можете подсказать по области видимости виджетов?

Допустим, в одной функции я создаю метку с одним текстом. А в другой функции меняю её текст. У меня всё крашится при этом. Видимо, область видимости метки ограничена первой функцией, и вторая функция творит дичь в ОЗУ. Но как сделать правильно?

Посмотрите логи компиляции на предмет предупреждения. Возможно ваша строка const

Какая ошибка при падении?

Менять строку по указателю

Если ограничено областью видимости, как тогда это собралось компилятором?

Sign up to leave a comment.

Articles