Какую магию содержит в себе LVGL, феноменально популярная платформа отображения с открытым исходным кодом?
Какую магию содержит в себе LVGL, феноменально популярная платформа отображения с открытым исходным кодом?

#01 Введение в LVGL

 Практичный велосипедный компьютер
Практичный велосипедный компьютер
Технологический трофей
Технологический трофей

За реализацией этих DIY-работ стоит тот же мощный GUI-LVGL.

Автором LVGL является Габор Кисс-Вамосикисвегабор из Венгрии. LVGL написан на языке C для достижения максимальной совместимости (совместим с C++). Симулятор может запускать встроенные графические интерфейсы на ПК без встроенного оборудования, а в качестве графической библиотеки LVGL поставляется. почти тридцать видов гаджетов для разработчиков. Эти мощные кнопки строительных блоков сочетаются с очень плавной анимацией и продвинутой графикой, обеспечивающей плавную прокрутку. В то же время они имеют низкие требования к конфигурации и атрибуты с открытым исходным кодом. Очевидные преимущества сделали LVGL популярным и популярным выбором среди разработчиков. Первый выбор при выборе графического интерфейса.

-Основные характеристики-

  • Мощные строительные блоки, такие как кнопки, диаграммы, списки, ползунки, изображения и многое другое.
  • Расширенная графическая анимация, сглаживание, непрозрачность, плавная прокрутка.
  • Различные устройства ввода, такие как сенсорные панели, мыши, клавиатуры, кодеры и т. д.
  • Поддержка нескольких языков и кодировка UTF-8.
  • Поддержка нескольких мониторов, т. е. одновременное использование большего количества монохромных TFT-мониторов.
  • Полностью настраиваемые графические элементы и стили в стиле CSS.
  • Аппаратно-независимый для использования с любым микроконтроллером или дисплеем
  • Масштабируемый, использует небольшой объем памяти (64 КБ Flash, 16 КБ RAM)
  • Операционная система, внешняя память и графический процессор поддерживаются, но не обязательны.
  • Работа с одним кадровым буфером, даже с расширенными графическими эффектами
  • Максимальная совместимость, написанная на C (совместима с C++)
  • Эмулятор для запуска разработки встроенного графического интерфейса на ПК без встроенного оборудования
  • Привязки к MicroPython
  • Учебники, примеры, темы для быстрого проектирования графического интерфейса.
  • Документация доступна онлайн и в формате PDF.
  • Бесплатный и открытый исходный код под лицензией MIT.

-Требования к конфигурации-

  • По сути, любой современный контроллер, способный управлять монитором, подходит для работы LVGL. Минимальные требования: 16, 32 или 64-битный микроконтроллер или процессор.
  • Рекомендуемая тактовая частота 16 МГц
  • флэш-память/ROM:> 64 kB для очень важных компонентов (> Рекомендуется использовать 180 kB) ОЗУ: статическая RAM Использование: 0~2 КБ, в зависимости от используемой функции и типа объекта куча: > 2kB (> Рекомендуется использовать 8 kB) Динамические данные (куча): > 2 KB (> Если вы используете несколько объектов, использовать 16 kB). существовать lv_conf.h Настроить в файле LV_MEM_SIZE Вступить в силу. буфер отображения:> “горизонтальное разрешение”Пиксель(рекомендовать> 10 × 10 × «горизонтальное разрешение») MCU или кадровый буфер во внешнем контроллере дисплея
  • C99 или более новый компилятор
  • Иметь базовые знания C (или C++).

Микроконтроллер, который может управлять дисплеем и имеет флэш-память более 64 КБ и ОЗУ более 20 КБ, может поддерживать работу LVGL. Это также показывает, что почти все микроконтроллеры, которые мы часто используем для разработки, могут поддерживать LVGL (16 бит и выше). Основная причина, по которой LVGL может поддерживаться таким количеством платформ одновременно, заключается в том, что аппаратные требования LVGL не слишком высоки.

-Системная основа-

LVGL сама по себе является графической библиотекой.

Наше приложение создает графический интерфейс, вызывая библиотеку LVGL. Он содержит интерфейс HAL (Hardware Abstraction Layer) для регистрации драйверов дисплея и устройств ввода. Помимо конкретного драйвера, драйвер имеет и другие функции, такие как управление графическим процессором дисплея и считывание ввода с сенсорной панели или кнопок.

Существует две типичные аппаратные настройки для микроконтроллеров. Одно периферийное устройство имеет встроенный драйвер ЖК-/TFT, а другое — периферийное устройство без встроенного драйвера ЖК-/TFT. То же самое: в обоих случаях требуется фреймбуфер для хранения текущего изображения экрана.

MCU со встроенным драйвером TFT/LCD Если MCU имеет периферийный драйвер TFT/LCD, дисплей можно подключить напрямую через интерфейс RGB. В этом случае буфер кадра может располагаться во внутренней оперативной памяти (если у MCU достаточно оперативной памяти) или во внешней оперативной памяти (если у MCU есть интерфейс памяти).

Если микроконтроллер не имеет встроенного интерфейса драйвера TFT/LCD, необходимо использовать внешний контроллер дисплея (например, SSD1963, SSD1306, ILI9341). В этом случае MCU может взаимодействовать с контроллером дисплея через параллельный порт, SPI или через I2C. Кадровый буфер обычно расположен в контроллере дисплея, что экономит много оперативной памяти для MCU.

#02 Сравнение общего графического интерфейса

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

В настоящее время, с развитием технологии MCU, производительность и характеристики MCU сильно изменились. По сравнению с прошлым, ресурсы MCU увеличились, возможности обработки расширились, рыночный спрос вырос, а функции графического интерфейса, естественно, стали более распространенными.

-LVGL-

LVGL объединяет ряд функций, таких как компактность, многоплатформенность, простая трансплантация, простота эксплуатации, открытый исходный код и бесплатность. Для пользователей LVGL предлагает более 30 виджетов, которые можно использовать в любое время, и вы даже можете настраивать элементы управления.

LVGL часто используется на устройствах уровня MCU, поскольку его можно переносить и использовать на нескольких платформах и на разных дисплеях. Он написан на C и очень подходит для MCU с ограниченными ресурсами.

-MiniGUI-

MiniGUI — это усовершенствованная оконная система и система поддержки графического пользовательского интерфейса для встраиваемых систем, соответствующая соглашению GPL. Являясь промежуточным программным обеспечением между операционными системами и приложениями, MiniGUI скрывает детали базовой операционной системы и аппаратной платформы и обеспечивает согласованный интерфейс для приложений верхнего уровня.

MiniGUI также имеет множество технических функций, в том числе возможность работать на 32-битной процессорной архитектуре, содержащей MMU; поддержку устройств отображения как низкого, так и высокого класса, а также поддержку вторичного экрана, а также удобство работы с различными операционными системами и средами; . Три режима работы и встроенные атрибуты поддержки кросс-операционных систем для разработки и отладки встроенных приложений, полный многооконный механизм и механизм передачи сообщений;

  • преимущество Поддерживает несколько встроенных операционных систем и обладает высокой портативностью; Масштабируемая архитектура системы, легко расширяемая; Богатый функционал и гибкая настройка; Легкий вес, меньшее потребление ресурсов; Высокая производительность, высокая надежность.
  • недостаток Уровень абстракции графических устройств слишком высок.

-Qt(Qt for MCUs)-

Qt для микроконтроллеров — это полноценная графическая среда и набор инструментов, который содержит все необходимое для настройки, разработки и развертывания графических интерфейсов на микроконтроллерах. Вы можете запускать приложения на «голом железе» или в операционной системе реального времени.

Qt для MCU поставляется с тремя инструментами разработки, включая IDE (Qt Creator), оснащенную полноценным редактором кода, контролем версий и другими функциями; помощник, написанный на языке Qt QML, для быстрого проектирования и создания приложений с нуля или на основе пространства пользовательского интерфейса Xianheng. Компонентный редактор WYS|WYG (Qt Quick Designer); графическая среда Qt Quick Ultralite предоставляет богатый набор API-интерфейсов QML для создания плавных графических интерфейсов и механизмов рендеринга.

  • преимущество Повторно использовать имеющиеся навыки на существующем микроконтроллере; Сократите затраты на техническое обслуживание за счет технической согласованности всех устройств, от высококачественных до устройств массового рынка; существуют переход на микроконтроллеры для снижения затрат на оборудование без ущерба для графической производительности; Обновите устаревшие решения до современного кроссплатформенного графического инструментария.

-emWin-

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

emWin совместим с одно- и многозадачными средами, может использовать собственные операционные системы, а также совместим с любой коммерческой RTOS. Он предоставляется в исходном коде на языке C, что делает его профессиональным и универсальным графическим интерфейсом для рынка встраиваемых систем, который можно использовать во многих различных сценариях.

  • преимущество Создавайте потрясающую графику с помощью мощного и простого в использовании API. Работает с любым дисплеем и микроконтроллером. Работает с любым ANSI среда разработки C/C++ Испытайте надежные графические решения Встроенные графические решения

Последняя картинка сравнения более интуитивно понятна!

#03 Д1 Нежа & LVGL

легкий Атрибуты LVGL привлекли к LVGL бесчисленное количество поклонников. При использовании различных небольших плат для разработки с низкой конфигурацией большинство разработчиков сразу же думают о LVGL, что также подчеркивает еще одну его характеристику. Легко пересаживать

Также с открытым исходным кодом、оптимизировать、легкийсорт,Концепции проектирования RISC-V и LVGLсуществовать просто совпадают.,Они могут стать основным направлением технологического развития в ближайшие десять лет.

В настоящее время чип RISC-V Allwinner, основанный на процессоре Alibaba C906, уже поддерживает LVGL. Придерживаясь одной и той же концепции дизайна, две черные технологии интернет-знаменитостей расцвели чудесный фейерверк на чипах Quanzhi.

На форуме интернет-сообщества Allwinner друг разместил пост о пересадке LVGL на Нежа Д1, что вызвало широкое обсуждение. Без лишних слов, посмотрим видео, чтобы увидеть эффект.

В видео используется Д1. Нежа-макетная плата, оснащенная 7-дюймовым сенсорным MIPI-экраном. Вы можете увидеть пересаженный LVGL. DEMO работает плавно на чипе с набором команд RISC-V без какого-либо давления.

Еще одно видео.

Благодаря функции двухэкранного дисплея чипа D1 может использовать LVGL для взаимодействия с пользовательским интерфейсом с одной стороны, а также декодирования и воспроизведения видео с другой стороны, что решает проблему, с которой телевизионные фанаты испытывают трудности с одновременной работой во время просмотра телевизионных драм. и не занимает выход на экран HDMI. Хотя LVGL требует слишком много ресурсов, он также помогает плавно выводить содержимое экрана на mipi, успешно обеспечивая дифференциальное отображение на двух экранах.

Играть в LVGL на Nezha также очень просто. Вам нужно только скачать исходный код и использовать команду компиляции для компиляции исходного кода:

Язык кода:javascript
копировать
CC=/xxxx/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/riscv64-unknown-linux-gnu-gcc make

Затем используйте adb, который поставляется с Tina Linux, чтобы перенести демо-версию на плату разработки, и вы можете начать играть. Если экран MIPI отсутствует, также поддерживается использование монитора HDMI + мыши.

Конечно, LVGL может добиться гораздо большего. Быстро развивайте свое воображение и создавайте больше шедевров! ! !

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода