В этом документе будет представлена оконная система, портированная в Allwinner Tina Linux, и способы ее использования, включая MiniGUI, QT5, EFL, GTK+ (WebkitGtk, Midori), DirectFB, Wayland, общая структура следующее:
[Передача изображения по внешней ссылке не удалась. Исходный сайт может иметь механизм защиты от кражи. Рекомендуется сохранить изображение и загрузить его напрямую (img-HxqCAORu-1677205148391) (C:\Users\livel\Downloads\OpenRemoved_Tina_Linux_Graphics_system_development_Guide-image1). .jpg)]
Область применения: Tina Linux v3.5 и выше. Соответствующий персонал: Персонал, связанный с разработкой программы пользовательского интерфейса.
В настоящее время основная библиотека MiniGUI3.2 и ее компоненты перенесены в Tina. В следующей таблице приведены описания пакетов, связанных с MiniGUI:
Таблица 2-1: Описание пакета, связанного с MiniGUI
имя пакета | иллюстрировать |
---|---|
cell-phone-ux-demo | Приложение мобильного интерфейса MiniGUI |
libminigui-gpl | Основная библиотека MiniGUI |
minigui-res-be | Библиотека ресурсов MiniGUI |
mg-samples | Пример приложения MiniGUI |
libmdolphin | Основная библиотека браузера MiniGUI |
mdolphin-release-home | Браузерное приложение MiniGUI |
mdolphin-release-tv | Браузерное приложение MiniGUI |
mdolphin-samples | Браузерное приложение MiniGUI |
libmg3d | MiniGUI предоставляет компоненты 3D-интерфейса. |
libmgeff | Фреймворк анимации MiniGUI |
libmgi | Компонент метода ввода MiniGUI |
libmgncs | Новый набор элементов управления MiniGUI |
libmgp | MiniGUI предоставляет компоненты функции печати. |
libmgplus | Улучшение интерфейса графического рисования MiniGUI. |
libmgutils | MiniGUI предоставляет шаблоны диалогов. |
Таблица 2-2: Приложения, разработанные на основе MiniGUI
имя пакета | иллюстрировать |
---|---|
multimedia-test | Тестовая демонстрация мультимедиа, включая предварительный просмотр камеры, фотосъемку, запись видео, воспроизведение аудио и видео, а также функции просмотра изображений. |
r11-board | Демо-версия умной стиральной машины, включая некоторые эффекты скольжения интерфейса, элементы управления выбором и другие распространенные функции. |
smart-music-player | Демо-версия интеллектуального музыкального проигрывателя, включая реализацию скользящего списка, адаптированная для R328 и R329. |
Ниже приведен скриншот приложения мультимедиа-тест:
Нажмите на значки SD-карты и U-диска, чтобы отформатировать SD-карту и U-диск. При съемке и записи требуется правильный формат, иначе запись будет невозможна. Синие SD-карта и USB-накопитель указывают на то, что SD-карта и USB-накопитель установлены правильно, а серые — на то, что они установлены неправильно. Если SD-карта и U-диск установлены одновременно, SD-карта используется по умолчанию. Щелкните соответствующий значок, чтобы войти в соответствующий функциональный интерфейс.
Ниже приведен снимок экрана приложения r11-board:
Три страницы на главной странице можно провести пальцем влево или вправо, чтобы перейти на следующую страницу, и щелкнуть различные изображения белья, чтобы войти в интерфейс конкретной функции стирки.
Нажмите кнопку «Стирка», «Полоскание» и «Обезвоживание» внизу, чтобы открыть скользящий список для выбора различных параметров. Нажмите кнопку «Функция +», чтобы запустить вращающуюся анимацию.
Ниже приведен скриншот приложения smart-music-player:
source build/envsetup.sh
lunch XXX название платформы
make menuconfig
Gui --->
Minigui --->
<*> libminigui-gpl --->
[*] Enabel truetype font support (Поддерживает векторные шрифты TTF)
[*] Enabel tslib support for MiniGUI (Поддерживает сенсорный экран)
[ ] Enabel g2d support for MiniGUI (Поддерживается аппаратное обеспечение G2D, требуется механизм отображения sunxifb, в настоящее время поддерживается только на R528/D1)
[ ] Enabel g2drotate support for MiniGUI (Для поддержки вращения G2D вам необходимо использовать механизм отображения sunxifb, который в настоящее время поддерживается только на R528/D1)
[ ] Enabel sunxifb support for MiniGUI (Обработчик отображения, аналогичный fbcon, длина кадрового буфера больше, чем 3, переключиться на кольцевой буфер)
[ ] Enabel sunxifbion support for MiniGUI (Механизм отображения, применение буфера отображения через libuapi)
[ ] Enabel coortrans cw support for MiniGUI (поворот пользовательского интерфейса 90 степень)
[ ] Enabel reduce size for MiniGUI (Вырезаем несколько ненужных модулей)
-*- minigui-res-be
<*> mg-samples
Некоторым примерам программ MiniGUI необходимо скомпилировать основную библиотеку MiniGUI в многопроцессный режим, поэтому требуется следующая конфигурация: Параметр:
Gui --->
Minigui --->
<*> libminigui-gpl --->
Preferred Minigui Run Mode (ths) ---> proc
Несколько различий иллюстрируем:
tina/package/minigui/libminigui-gpl/Makefile
Измените –enable-cursor=no на yes, чтобы использовать мышь.
Параметры конфигурации MiniGUI платформы V853
source build/envsetup.sh
Обед выберите v853_perf1-tina
make menuconfig
CONFIG_PACKAGE_eyesee-minigui:
eyesee-minigui is a GUILib for eyesee project.
Symbol: PACKAGE_eyesee-minigui [=y]
Type : tristate
Prompt: eyesee-minigui............................. eyesee-minigui for Tina Linux
Путь к коду: external/minigui/
После успешного программирования прошивки для использования MiniGUI на небольшом компьютере необходимо выполнить следующие шаги:
Емкостный экран не нуждается в калибровке. Если касание емкостного экрана является неточным, необходимо удалить файл /etc/pointercal.
Для резистивных экранов сначала необходимо убедиться, что драйвер сенсорного экрана работает правильно и создается сенсорный узел, например /dev/input/event1, который можно выполнить Выполните следующую команду, а затем коснитесь экрана, чтобы проверить, печатает ли последовательный порт.
cat /dev/input/event
Установите следующие переменные на маленьком компьютере:
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb
// TSLIB_TSDEVICE Конфигурация на основе узла устройства, созданного сенсорным экраном.
export TSLIB_TSDEVICE=/dev/input/event
ts_calibrate
Обратите внимание, что TSLIB_TSDEVICE должен быть сгенерированным сенсорным узлом. Следуйте инструкциям на экране и щелкните, чтобы завершить калибровку. Калибровка завершена.
После создания файла /etc/pointerca сохраните этот файл калибровки, чтобы не требовалось калибровать каждый продукт.
Файл MiniGUI/usr/local/etc/MiniGUI.cfg:
vim usr/local/etc/MiniGUI.cfg
Настройте механизмы ial и gal MiniGUI. Файлы конфигурации используются следующим образом:
[system]
// GAL engine and default options
gal_engine=fbcon
// defaultmode устанавливает размер дисплея
defaultmode=800x480-32bpp
[fbcon]
// defaultmode устанавливает размер дисплея
defaultmode=800x480-32bpp
[sunxifb]
defaultmode=800x480-32bpp
// Flipbuffer=1 заменяет исходный экспорт. MG_DOUBLEBUFFER=1
flipbuffer=1
// cacheflag=1 позволяет кэшу fb быстрее копировать буфер. В R328/R329 fb не имеет функции кэширования, и его необходимо установить в 0.
cacheflag=1
// Rotateда управляет углом поворота. Действует после включения вращения G2D. Когда угол поворота равен 0 и 180 градусам, режим по умолчанию менять не нужно.
// Когда угол поворота составляет 90 и 270 градусов, режим systemèsunxifb по умолчанию должен быть изменен на 480x800-32bpp.
rotate=0
При использовании сенсорного экрана обратите внимание, что mdev необходимо настроить как сгенерированный сенсорный узел. Конфигурация механизма ввода следующая:
// IAL engine
ial_engine=tslib
mdev=/dev/input/event1
mtype=none
С помощью мыши механизм ввода настраивается следующим образом:
// IAL engine
ial_engine=console
mdev=/dev/input/mouse0
mtype=IMPS
Основная цель двойной буферизации — предотвратить разрывы и мерцания экрана.
Измените файл tina/lichee/linux-3.4/drivers/video/sunxi/disp2/disp/dev_disp.c.
Примечание. Путь к коду платформы V853: lichee/linux-4.9/drivers/video/fbdev/sunxi/disp2/disp/dev_disp.c.
//fb0, обратите внимание, что назначение 3 Или Когда их будет больше, движок sunxifb переключится на циклический буфер, что может увеличить частоту кадров при быстром скольжении.
init_para->buffer_num[0] = 2;
export MG_DOUBLEBUFFER=1
Обратите внимание, что эту переменную среды необходимо импортировать только при использовании механизма fbcon. Механизм sunxifb указывается в поле флипбуфера.
После выполнения шагов 1 и 2 MiniGUI будет использовать внутреннюю двойную буферизацию, чтобы решить проблему мерцания при переключении интерфейсов.
Фреймбуфер не имеет кеша при запуске. При запуске программы minigui, если выполняется экспорт. MG_DOUBLEBUFFER=1 или флипбуфер=1 и кэш-флаг=1, кадровый буфер переключится на диапазон Кэш, по умолчанию кеш будет сбрасываться при смене страниц.
Таблица 2-3: DoubleBufferEnableфункцияиллюстрировать
функция | иллюстрировать |
---|---|
DoubleBufferEnable(FALSE) | Фреймбуфер будет переключен на буфер без кеша, поэтому очищать кеш не нужно. |
DoubleBufferEnable(TRUE) | Фреймбуфер будет переключен на буфер с кешем. По умолчанию кеш будет очищаться при смене страниц. |
DoubleBufferEnable необходимо выполнить перед экспортом MG_DOUBLEBUFFER=1 или флипбуфер=1 Его можно вызвать только после того, как DoubleBufferEnable вернет 0, что означает, что вызов успешен. Если он возвращает -1, это означает, что вызов не выполнен. Если кэш не удается закрыть, это также может быть связано с сбоем фреймбуфера mmap. Уровень приложения должен снова вызвать интерфейс, в противном случае будет отображено исключение. Нормально или неправильно.
В настоящее время версия QT5.10.1 перенесена в Tina. Для настройки Qt см. следующую иллюстрацию:
source build/envsetup.sh
lunch XXX название платформы
make menuconfig
Global build settings
Binary stripping method (strip) ---> strip
Gui --->
Qt --->
-*- qt5-core
<*> qt5-examples
Это урезает информацию о символах табуляции исходной библиотеки, чтобы уменьшить ее размер. Некоторым библиотекам Qt необходимо использовать strtab с информацией заголовка библиотеки. Это таблица символов, поэтому выберите в качестве легкого разреза полосу, оставив в качестве таблицы символов strtab. Выбор по умолчанию — sstrip.
Чтобы ускорить компиляцию, предоставляются пакеты QT, предварительно скомпилированные с помощью различных цепочек инструментов компиляции:
tina/dl/qt-everywhere-opensource-src-5.12.9-prebuilt_glibc_32bit.tar.gz
tina/dl/qt-everywhere-opensource-src-5.12.9-prebuilt_glibc_64bit.tar.gz
tina/dl/qt-everywhere-opensource-src-5.12.9-prebuilt_musl_32bit.tar.gz
tina/dl/qt-everywhere-opensource-src-5.12.9-prebuilt_musl_64bit.tar.gz
tina/dl/qt-everywhere-opensource-src-5.12.9.tar.xz
Если есть проблемы с компиляцией исходного кода, проверьте, выбрана ли конфигурация alsa-lib.
делая menuconfigВыбиратьQt–> qt5 use предварительно созданный, чтобы определить, какой метод компиляции использовать.
make menuconfig
Libraries --->
-*- alsa-lib
Gui --->
Qt --->
[*] qt5 use prebuilt
Значение qt5 use prebuilt будет использоваться в файле tina/package/qt/qt5/Makefile.
ifeq ($(CONFIG_QT5_USE_PREBUILT),y)
ifeq ($(CONFIG_USE_GLIBC),y)
ifeq ($(TARGET_ARCH),aarch64)
PKG_MD5SUM:=b96ae8d2d55983911b7bf46896d516bc
PKG_SOURCE:=qt-everywhere-opensource-src-$(PKG_VERSION)-prebuilt_glibc_64bit.tar.gz
PKG_BUILD_DIR=$(COMPILE_DIR)/qt-everywhere-opensource-src-$(PKG_VERSION)-
prebuilt_glibc_64bit
else
PKG_MD5SUM:=6fc40f289dd51ad2bf2403ad2da85bf
PKG_SOURCE:=qt-everywhere-opensource-src-$(PKG_VERSION)-prebuilt_glibc_32bit.tar.gz
PKG_BUILD_DIR=$(COMPILE_DIR)/qt-everywhere-opensource-src-$(PKG_VERSION)-
prebuilt_glibc_32bit
endif
else ifeq ($(CONFIG_USE_MUSL),y)
ifeq ($(TARGET_ARCH),aarch64)
PKG_MD5SUM:=b7859b3fc75a28f10047cc63f8bb
PKG_SOURCE:=qt-everywhere-opensource-src-$(PKG_VERSION)-prebuilt_musl_64bit.tar.gz
PKG_BUILD_DIR=$(COMPILE_DIR)/qt-everywhere-opensource-src-$(PKG_VERSION)-
prebuilt_musl_64bit
else
PKG_MD5SUM:=9d1e2d3b5673976b3277142f047d2c
PKG_SOURCE:=qt-everywhere-opensource-src-$(PKG_VERSION)-prebuilt_musl_32bit.tar.gz
PKG_BUILD_DIR=$(COMPILE_DIR)/qt-everywhere-opensource-src-$(PKG_VERSION)-
prebuilt_musl_32bit
endif
endif
else
PKG_MD5SUM:=f177284b4d3d572aa46a34ac8f5a7f
PKG_SOURCE:=qt-everywhere-opensource-src-$(PKG_VERSION).tar.xz
PKG_BUILD_DIR=$(COMPILE_DIR)/qt-everywhere-opensource-src-$(PKG_VERSION)
endif
Параметры плагина платформы настраиваются в package/qt/qt5/files/qt-env.sh. Этот файл, как показано ниже, по умолчанию имеет значение plat- formdaeglfs, в которых эффект переменной окружения MALI_NOCLEAR не очищает экран при вызове eglInitializeфункции, В противном случае после отображения логотипа запуска экран в течение некоторого времени будет черным, что приведет к ухудшению пользовательского опыта.
#!/bin/sh
export QT_QPA_PLATFORM=eglfs:size=800x
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/qt5/plugins
export QT_QPA_FONTDIR=/usr/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib
export QT_QPA_GENERIC_PLUGINS=evdevmouse:/dev/input/event
export QT_QPA_GENERIC_PLUGINS=evdevkeyboard:/dev/input/event
export MALI_NOCLEAR=
Плагины платформы обычно создаются на стороне небольшого компьютера:
/usr/lib/qt5/plugins/platforms/libqeglfs.so
Динамическая библиотека плагина платформы linuxfb — libqlinuxfb.so.
Если вы хотите перейти на linuxfb, вам необходимо изменить содержимое файла tina/package/qt/qt5/files/qt-env.sh и сделать Menuconfig выбирает qt5-drivers-linuxfb, как показано ниже:
Gui --->
Qt --->
-*- qt5-core
<*> qt5-drivers-linuxfb
<*> qt5-examples
linuxfb можно настроить с помощью следующих переменных среды:
#!/bin/sh
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=800x480:mmSize=800x480:offset=0x0:tty=/dev/tty1
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/qt5/plugins
export QT_QPA_FONTDIR=/usr/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib
export QT_QPA_GENERIC_PLUGINS=evdevmouse:/dev/input/event1
export QT_QPA_GENERIC_PLUGINS=evdevkeyboard:/dev/input/event2
fb=/dev/fbN //Указываем устройство кадрового буфера;
size=<width>x<height> //Указываем размер экрана в пикселях;
mmsize=<width>x<height> //Физическая ширина и высота;
offset=<width>x<height> //смещение пикселя в левом верхнем углу экрана
nographicsmodeswitch- //Не переводить виртуальный терминал в графический режим;
tty=/dev/ttyN //Переопределить виртуальную консоль, используется только в том случае, если nographicsmodeswitch не установлен;
eglfs можно настроить с помощью следующих переменных среды:
export QT_QPA_EGLFS_WIDTH=800 // Содержит ширину экрана в пикселях
export QT_QPA_EGLFS_HEIGHT=480 // Содержит высоту экрана в пикселях
export QT_QPA_EGLFS_FB=/dev/fb0 //Перезаписываем устройство кадрового буфера, по умолчанию да/dev/fb0
export QT_QPA_EGLFS_DEPTH=32 //Глубина цвета наложенного экрана, значение по умолчанию: 32
Чтобы использовать мышь в Qt, вам нужно запустить udev, пометить устройство мыши как устройство ввода, а затем использовать libinput Qt для обработки ввода. событие, чтобы иметь возможность распознавать мышь. Установите для udev автозапуск по умолчанию.
Экран является сенсорным, поэтому вам нужно выбрать сенсорный модуль Qt qt5-drivers-touchscreen в make менюconfig, например Как показано ниже:
Gui --->
Qt --->
-*- qt5-core
<*> qt5-drivers-touchscreen
<*> qt5-examples
Драйвер сенсорного экрана для небольших компьютеров:
/usr/lib/qt5/plugins/generic/libqtslibplugin.so
Если касание не имеет эффекта, выполните следующие переменные среды:
export QT_QPA_GENERIC_PLUGINS=tslib
После успешного программирования прошивки используйте QT на маленьком компьютере. Если вы используете резистивный сенсорный экран, вам необходимо откалибровать сенсорный экран. См. раздел 2.3.1 данного документа.
Пример применения QT на маленьком компьютере выглядит следующим образом:
usr/share/qt5/examples /Это тестовое приложение, поставляемое с даQT/
make menuconfig
Gui --->
Qt --->
<*> qt-easing.
<*> qt-textures
<*> qt-washing-machine
//Это три недавно добавленных приложения QT. Если при запуске этого приложения возникнут проблемы, обратитесь к документу package/qt/qt-washing-machine/src/doc.
Чтобы запустить приложение qt, вам необходимо указать платформу подключаемого модуля. В настоящее время QT поддерживает следующие платформы подключаемых модулей: eglfs или linuxfb. Рабочий пример выглядит следующим образом. Показано:
./application -platform eglfs
./application -platform linuxfb
Или сначала выполните следующую команду, импортируйте переменные среды QT, а затем запустите программу.
./etc/qt-env.sh
Приложения, работающие под управлением QT, будут иметь следующие проблемы, и библиотеку libqeglfs.so необходимо вернуть обратно в /usr/lib/qt5/plugins/platforms. под дорожкой. Если эта проблема возникает в нескольких библиотеках подключаемых платформ, это может быть связано с тем, что скомпилированные и сгенерированные библиотеки импортированы в систему Tina. Обрезка строки, чтобы сделать ее меньше. Когда Qt загружается динамически, ему необходимо найти символ табуляции strtab в информации заголовка библиотеки, поэтому Выберите режим легкой обрезки -strip в make менюconfig.
Если возникает следующая ошибка и не удается применить собственное окно, возможно, библиотека libqeglfs-mali-integration.so отсутствует. Вам необходимо загрузить ее с помощью adb по пути /usr/lib/qt5/plugins/egldeviceintegrations. маленький компьютер.
Возникает следующая ошибка при передаче переменных среды:
export QT_QPA_EGLFS_INTEGRATION=none
export XDG_RUNTIME_DIR=/dev/shm
Это может произойти из-за следующих шагов:
Подробную информацию о калибровке см. в разделе «2.3.1 Калибровка сенсорного экрана»/etc/ts_activate.
Ссылка《3.2 Выбор платформы QT5》。
export QT_QPA_GENERIC_PLUGINS=tslib
Enlightenment Foundation Libraries (EFL) с поддержкой Просвещения, их также можно использовать автономно или Используйте другие библиотеки для предоставления полезных функций и создания мощных приложений.
Основная библиотека EFL более эффективна с точки зрения скорости и размера, чем ее аналоги, такие как GTK+ и Qt, и требует меньше памяти. количество.
EFL в настоящее время переезжает в Тайн. Основная библиотека версии 1.20.6 и ее компоненты перечислены ниже для иллюстрации пакетов, связанных с EFL.
Таблица 4-1: EFLСвязанные пакетыиллюстрировать
имя пакета | иллюстрировать |
---|---|
efl | Функция EFL Библиотека функций |
ephoto | Приложение для фотоальбомов, зависящее от EFL |
terminology | Эмулятор терминала, основанный на EFL |
Ниже скриншот приложения:
EFL может использовать Framebuffer или Wayland для отображения изображений. Если вы используете Wayland, вам необходимо следовать разделу 8 этого документа. В этом разделе настраиваются Wayland. В системе Tina Framebuffer настроен по умолчанию. Выполните следующую конфигурацию команды ЭФЛ:
source build/envsetup.sh
lunch XXX название платформы
make menuconfig
Gui --->
EFL --->
-*- efl
<*> ephoto
<*> terminology
efl — это основная библиотека, а ephoto — приложение для фотоальбомов. Это приложение может выбирать изображения на доске для просмотра и слайд-шоу. terminology — это эмулятор терминала, аналогичный терминалу в Ubuntu. Войдите в интерфейс конфигурации efl для настройки. Функции, поддерживаемые efl. Как показано ниже:
В основном сосредоточьтесь на следующих конфигурациях:
Таблица 4-2: EFLКонфигурацияиллюстрировать
Конфигурация | иллюстрировать |
---|---|
Enable raw Framebuffer access | Использовать фреймбуфер для отображения интерфейса efl |
Enabel wayland display server | Используйте Wayland для отображения интерфейса efl |
Enabel sunxi-mali opengl es support | используя OpenGL |
Enable bidirectional text support | Поддерживать ли двунаправленный текст, отображать текст слева направо или справа налево |
Enable tslib for touchscreen events | Поддерживать ли сенсорный ввод |
если Использовать фреймбуфер для отображения интерфейса efl, больше ничего делать не нужно, потому что в Тине он включен по умолчанию кадровый буфер, если вы используете Wayland, вам необходимо обратиться к главе 1 этого документа. 8 Раздел Конфигурация — Wayland。
Если после успешного программирования прошивки вы используете Wayland, вам необходимо убедиться, что Weston работает, и использовать EFL на небольшой машине. Выполните следующую команду для запуска тестовой программы:
elementary_test
элементарный_тест — официальный апплет, содержащий примеры использования различных элементов управления в efl. То же самое касается и двух других тестовых программ. Выполните следующим образом:
ephoto
terminology
Вы также можете выполнить элементарную_конфигурацию, чтобы перейти к Конфигурацияelf.,Режимы, которые можно отобразить с помощью интерфейса Конфигурация,Шрифт, размер элемента управления и т. д. ждать.
elementary_config
Вы также можете вручную указать механизм рендеринга, например:
ECORE_EVAS_ENGINE=wayland_egl elementary_test
//или
ELM_ACCEL=gl elementary_test
//или
ELM_DISPLAY=wl elementary_test
Если вы хотите просмотреть отладочную информацию efl, вы можете добавить: перед запуском программы:
EINA_LOG_LEVEL=4 elementary_test
Если вы используете Wayland для отображения интерфейса efl и хотите протестировать OpenGL, выполните:
ELM_ACCEL=gl elementary_test
Затем нажмите GLView Gears, GLView Many Gears, GLViewSimple, чтобы просмотреть результаты, и выполните элементы. Во время tary_test интерфейс может быть темным. Переместите интерфейс, прокрутите интерфейс или разверните интерфейс, чтобы отобразить его. Если элементарный_тест не отвечает, вы можете завершить процесс и повторить попытку. Используйте команду kill -9 PID для завершения. пучок.
GTK+ — это библиотека для создания графических интерфейсов, которая может работать во многих UNIX-подобных системах, Windows и OSX. ГТК+ Выпущено под лицензией GNU LGPL, которая является относительно либеральной для программы. GTK+ имеет интерфейс на основе C для Гибкая архитектура для слона, имеет версии для многих других языков, включая C++, Objective-C, Guile/Scheme, Perl, Python, TOM, Ada95, Free Pascal и Eiffel. GTK+ зависит от следующих библиотек:
БолееGTKПрограммирование приложений может относиться к:Пример
Gtk+ (GIMP Tool Kit, GIMP Tool Kit) — это графическая библиотека для создания графических пользовательских интерфейсов. Ниже приведен снимок экрана GIMP в GNU/Linux:
В систему Tina пересажена библиотека GTK+3 и ее компоненты, соответствующие пакетам GTK и зависимостям:
gtk±3.22.10.tar.xz: соответствующий исходный код Gtk+3.
Pkgconf, gettext-full, atk, glib2, libcairo, pango, gdk-pixbuf, libepoxy, libxkb-common, libpixman, libinput, wayland, wayland-protocols, udev, libdrm, sunxi-mali: Openwrt system Gtk+3 имя зависимости пакет соответствующий Makefile находится в package/libs/libgtk3/.
GTK основан только на проверке системной платформы R18, другие платформы не проверяются. Конфигурация GTK по умолчанию становиться порт Wayland, теория; GTK может работать на всех платформах, поддерживающих Wayland R40, используя Wayland+FBDEV в качестве дисплея; С другой стороны, R18 использует Wayland+DRM.
source build/envsetup.sh
lunch XXX название платформы
make menuconfig
Если взять в качестве примера платформу R18, то основными элементами являются:
Gui --->
Libs --->
-*- libcairo --->
[*] Enable cairo postscript support
[*] Enable cairo pdf support
[*] Enable cairo png support
[ ] Enable script support
[*] Enable cairo svg support
[ ] Enable cairo tee support
[ ] Enable cairo xml support
Gtk --->
<*> libgtk3 --->
[*] Broadway GDK backend
[*] Wayland GDK backend
[*] Install libgtk3 demo program
Потому что Gtk+3 зависит от Wayland,Wayland использует синтезатор Weston,Конфигурациякогда это необходимо ВыбиратьWestonи Wayland, вам необходимо следовать инструкциям в этом документе. 8 Раздел Конфигурация — Wayland。
После успешного программирования прошивки, если вы используете Wayland, вам необходимо убедиться, что Weston запущен, а затем запустить его на небольшом компьютерном терминале:
/usr/bin/gdk-pixbuf-query-loaders --update-cache
gdk-pixbuf-query-loaders > /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
Затем запустите gtk3-demo:
gtk3-demo
#include <gtk/gtk.h>
int main( int argc, char *argv[] ){
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main ();
return(0);
}
В систему Tina пересажена библиотека WebKitGtk и ее компоненты, соответствующие пакету WebKitGtk и зависимостям, иллюстрировать ниже:
webkitgtk-2.18.6.tar.xz, Midori_0.5.11_all_.tar.bz2, package/libs/webkitgtk, package/utils/midori: соответствующий исходный код браузера WebKitGtk и Midori и Makefile.
ruby/host、flex/host、bison/host、gperf/host、enchant、harfbuzz、icu、libjpeg、libgtk3、libsecret、libsoup、libxml2、libxslt、libsqlite3、libegl、libgles、libwebp libgles、lcms2、libtasn1、gstreamer1、gst1-libav , gst1-plugins-bas, gst1-plugins-good, gst1-plugins-ugly, gst1-plugins-bad: Система Openwrt WebkitGtk зависит от имени пакетасказать。
Ниже приведен скриншот WebKitGtk:
WebKitGtk проверен только на основе системной платформы R18, другие платформы еще не проверены. Конфигурация WebKitGtk по умолчанию — это путь. сухопутный порт, R18 использует Wayland+DRM.
source build/envsetup.sh
lunch XXX название платформы
make menuconfig
Gui --->
Gtk --->
<*> webkitgtk
<*> midori
Потому что WebKitGtk зависит от Gtk+3иWayland,Wayland использует синтезатор Weston,Конфигурациякогда это необходимо ВыбиратьGtk+3、WestonиWayland, вам необходимо следовать инструкциям в этом документе. 5 и 8 Подраздел Конфигурация хорошая Gtk+3иWayland.
После успешного программирования прошивки, если вы используете Wayland, вам необходимо убедиться, что Weston запущен, а затем запустить его на небольшом компьютерном терминале:
/usr/bin/gdk-pixbuf-query-loaders --update-cache
gdk-pixbuf-query-loaders > /usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
Затем запустите Midori или минибраузер:
midori
или:
minibrowser
Сообщается об ошибке:
error: Package `gee-0.8' not found in specified Vala API directories or GObject-Introspection GIR directories
Причина в том, что инструмент Vala установлен в среде хоста, но необходим инструмент, скомпилированный в tina. Просто удалите инструмент Vala с хоста.
DirectFB (Direct Frame Buffer) — это набор графических API, реализованных поверх уровня абстракции кадрового буфера Linux (fbdev).
На данный момент в Тине графический процессор не подключен.
В настоящее время основная библиотека DirectFB и ее демо-версия перенесены в Tina. В следующей таблице перечислены пакеты, связанные с DirectFB:
Таблица 7-1: DirectFBСвязанные пакетыиллюстрировать
имя пакета | иллюстрировать |
---|---|
directfb | Основная библиотека DirectFB |
directfb-examples | directfb demo |
source build/envsetup.sh
lunch XXX название платформы
make menuconfig
Gui --->
Directfb --->
-*- directfb
<*> directfb-examples
На маленьком компьютере вы можете выполнить некоторые тестовые примеры, начинающиеся с df_, например df_andi, df_dok:
df_andi
Wayland — это набор протоколов связи между сервером отображения (композитором Wayland) и клиентом, а Weston — эталонная реализация компоновщика Wayland, предназначенная для замены графической системы X в Linux.
В настоящее время основная библиотека Wayland и ее компоненты перенесены в Tina. В следующей таблице перечислены пакеты, связанные с Wayland:
![Таблица 8-1: WaylandСвязанные пакетыиллюстрировать]
имя пакета | эффект |
---|---|
glmark2 | Используйте Wayland в качестве программы тестирования графического процессора для запуска серверной части или используйте FBDEV для отображения. |
wayland | Инструменты на стороне хоста, необходимые для компиляции Weston |
wayland-protocols | Протокол Wayland, эквивалент плагина |
weston | основная библиотека |
В настоящее время Wayland может работать на R18 и R40. Другие платформы еще не тестировались. На R40 можно использовать только FBDEV. В качестве работающего бэкэнда на R18 вы можете использовать ДРМ и ФБДЕВ. Чтобы продолжить, выполните следующую команду:
source build/envsetup.sh
lunch XXX название платформы
make menuconfig
Gui --->
Wayland --->
< > glmark2
[ ] Enabel fbdev support
[*] Enabel wayland support
-*- wayland
-*- wayland-protocols
<*> weston --->
[ ] Enabel dbus support
[ ] Enabel weston-launch linux pam support
[*] Enabel opengl es support
[ ] Enabel fbdev compositor support
[*] Enabel drm compositor support
[ ] Enabel lcms supports support
[ ] Enabel junit xml support
[ ] Enabel demo clients install
Как показано ниже:
glmark2 — это программа эталонного тестирования, использующая графический процессор. Ее можно использовать при использовании DRM в качестве бэкэнда Wayland на R18. Кроме того, вы также можете использовать FBDEV для отображения и тестирования производительности графического процессора. Wayland, Wayland-протоколы Используется при компиляции Weston. Войдите в интерфейс Конфигурация Weston, чтобы использовать функции, поддерживаемые Конфигурацияweston. следующее Как показано на рисунке:
В основном сосредоточьтесь на следующих конфигурациях:
Таблица 8-2: WaylandКонфигурацияиллюстрировать
Параметры | иллюстрировать |
---|---|
Enabel opengl es support | Может быть выбран только при использовании DRM в качестве серверной части Weston, поддерживает ускорение графического процессора OpenGL. |
Enabel fbdev compositor support | Использовать фреймбуфер в качестве механизма отображения |
Enabel drm compositor support | Используйте DRM в качестве механизма отображения |
Enabel demo clients install | Скомпилируйте тестовую демонстрацию Wayland |
Если вы используете FBDEV, вам нужно выбрать kmod-mali-utgard-km и kmod-sunxi-disp:
Kernel modules --->
Video Support --->
<*> kmod-mali-utgard-km
<*> kmod-sunxi-disp
< > kmod-sunxi-drm
Если вы используете DRM и ускорение графического процессора, вам нужно выбрать kmod-mali-utgard-km и kmod-sunxi-drm:
Kernel modules --->
Video Support --->
<*> kmod-mali-utgard-km
< > kmod-sunxi-disp
<*> kmod-sunxi-drm
выбиратьDRMиGPUускорятьсяиз Как показано ниже:
Обратите внимание, что FBDEV и DRM являются взаимоисключающими и не могут быть выбраны одновременно.
Если вам нужно, чтобы Weston запускался автоматически при загрузке, вам необходимо его изменить. Сделать - в каталоге tina/package/wayland/weston file,Пучок(CP) ./weston (1) Просто удалите комментарии в /etc/init.d.
Если выбрано DRM механизм отображения, можно также поставить DRM Тестовая демонстрация Давать Выбирать,Параметрыследующее:
Gui --->
Libs --->
libdrm --->
[*] install libdrm test programs
[ ] Enable support for vc4's API
westonполагатьсяиз БиблиотекаcairoХОРОШОКонфигурация,вEnable cairo pdf поддержка и Включить cairo png Поддержка должна быть выбрана, иначе во время компиляции будет сообщено об ошибке. Если вы компилируете GTK+, вам нужно выбрать больше, см. Ознакомьтесь с разделом 5.2 этого документа.
Gui --->
Libs --->
-*- libcairo --->
[ ] Enable cairo postscript support
[*] Enable cairo pdf support
[*] Enable cairo png support
[ ] Enable script support
[ ] Enable cairo svg support
[ ] Enable cairo tee support
[ ] Enable cairo xml support
Если в менюconfig выбрано использование FBDEV в качестве серверной части и выбран kmod-sunxi-disp, платформа R18 будет Параметры при автоматической настройке, нет необходимости выполнять действия, описанные в этом разделе. На другой платформе еще не реализована автоматическая конфигурация, основная информация приведена ниже. Для документации по использованию FBDEV в качестве серверной части требуется Конфигурация ядра. В ядре другой платформы по умолчанию используется Конфигурация с использованием FBDEV.
Выполните следующую команду на примере R18:
make kernel_menuconfig
Выбирать Поддержка консоли кадрового буфера (sunxi), поддержка драйвера DISP (sunxi-disp2), поддержка консоли кадрового буфера, поддержка драйвера преобразования (sunxi):
Device Drivers --->
Graphics support --->
Frame buffer Devices --->
<*> Support for frame buffer devices --->
Video support for sunxi --->
[*] Framebuffer Console Support(sunxi)
<*> DISP Driver Support(sunxi-disp2)
Console display driver support --->
<*> Framebuffer Console support
Character devices --->
<*> Transform Driver Support(sunxi)
Как показано ниже:
Если менюconfig выбирает да Использовать DRM как серверная часть,Так как в ядре по умолчанию используется FBDEV,Итак, сначала нам нужно отменить исходную Конфигурацию.,Затем выберите Конфигурация с DRM.,Отмените kmod-sunxi-disp в меню Конфигурация.,Выбиратьkmod-sunxi-drm,Платформа R18 автоматически настроит следующие параметры.,Нет необходимости выполнять действия, описанные в этом разделе.,На другой платформе еще не реализована автоматическая конфигурация.。
Выполните следующую команду, взяв в качестве примера R18. На данном этапе только R18 поддерживает DRM:
make kernel_menuconfig
Отмените выбор поддержки консоли кадрового буфера (sunxi), поддержки драйвера DISP (sunxi-disp2), поддержки консоли кадрового буфера и поддержки драйвера преобразования (sunxi):
Device Drivers --->
Graphics support --->
Frame buffer Devices --->
< > Support for frame buffer devices --->
Video support for sunxi --->
[ ] Framebuffer Console Support(sunxi)
< > DISP Driver Support(sunxi-disp2)
Console display driver support --->
< > Framebuffer Console support
Character devices --->
< > Transform Driver Support(sunxi)
ВыбиратьDRMКонфигурация:
Device Drivers --->
Graphics support --->
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
<*> DRM Support for Allwinnertech SoC A and R Series
Как показано ниже:
После того, как DRM готов, возможно, он еще не был скомпилирован. Прошивку DRM необходимо сначала удалить и очистить. Файлы, скомпилированные предыдущим ядром, иначе могут возникнуть проблемы с компиляцией, выполняйте в каталоге ядра:
make clean
После успешного программирования прошивки для использования Wayland на маленьком компьютере необходимо выполнить следующие команды:
chmod 0700 /dev/shm/
export XDG_RUNTIME_DIR=/dev/shm
export XDG_CONFIG_HOME=/etc/xdg
weston --backend=drm-backend.so --tty=1 --idle-time=0 &
//или
weston --backend=fbdev-backend.so --tty=1 --idle-time=0 &
Если папки /dev/shm/ нет, просто создайте ее вручную:
mkdir /dev/shm/
Если вам нужно включить отладку, перед запуском weston выполните следующую команду:
export MESA_DEBUG=1
export EGL_LOG_LEVEL=debug
export LIBGL_DEBUG=verbose
export WAYLAND_DEBUG=1
Если Wayland Demo скомпилирована, после запуска Weston вы можете запустить Demo в /usr/bin:
wayland-scanner、weston-calibrator、weston-clickdot、weston-cliptest、weston-confine、weston-dnd、weston-eventdemo、weston-flower、weston-fullscreen、weston-image、weston-info、weston-multi-resource、weston-presentation-shm、weston-resizor、weston-scaler、weston-simple-damage、weston-simple-dmabuf-intel、weston-simple-dmabuf-v4l、weston-simple-egl、weston-simple-shm、weston-simple-touch、weston-smoke、weston-stacking、weston-subsurfaces、weston-terminal、weston-transformed。
Программа тестирования производительности графического процессора может выполнять следующие команды при условии, что glmark2 скомпилирован:
glmark2-es2-wayland
Устройства ввода, такие как мыши и клавиатуры, можно использовать, просто подключив их. Если ответа нет, проверьте, скомпилированы ли драйверы мыши и клавиатуры.
weston.ini да Wayland Файл конфигурации рабочего стола. Например, если вы хотите удалить фон и строку состояния, вы можете изменить его на значения параметров ниже. Комментировать background-image,background-color Сменить на черный 0xff000000, Измените положение панели на none:
vi /etc/xdg/weston.ini
[shell]
# background-image=/usr/share/weston/background.png
background-color=0xff000000
panel-position=none
Если вам нужно повернуть экран:
# [output]
[output]
# name=LVDS1,экран мипи DSI-1
имя=DSI-1
# режим=1680x1050,Изменить до соответствующего разрешения
mode=480*800
# Transform=90, угол поворота
transform=90
Более конкретные параметры,Пожалуйста, обратитесь кweston.ini(5) — справочная страница Arch。
Сообщается об ошибке:
no "wayland-egl" found
Причина может быть в том, что да уже был скомпилирован раньше? wayland графическая система, графический процессор Библиотека была скомпилирована так, чтобы не поддерживать wayland Библиотека, в Конфигурации weston обязательно Enabel opengl es support Выберите и выполните mm в каталоге tina/package/libs/gpu-um/. -B перекомпилировать библиотеку графического процессора, если она по-прежнему сообщает «нет». “wayland-egl” найден, вы можете удалить каталог tina/out/ и перекомпилировать.
LVGLда — бесплатная графическая библиотека с открытым исходным кодом.,Предоставляет все необходимое для создания встроенного графического интерфейса.,Имеет простые в использовании графические элементы.,Красивые визуальные эффекты и низкое использование памяти.,Принято лицензионное соглашение MIT,Вы можете посетить LittlevGL для получения дополнительной информации.
LVGL в настоящее время преобразован из основных компонентов 8.1.0 и демо-версии, в следующей таблице перечислены библиотеки, связанные с LVGL:
Таблица 9-1: LVGLСвязанные библиотекииллюстрировать
имя пакета | иллюстрировать |
---|---|
lv_demos | официальная демо-версия lvgl |
lv_drivers | lvglизчиновникоборудованиеводитель,Интегрированный sunxifb, sunxig2dиsunximem |
lv_examples | тестовый пример lvgl,Функция в dalv_demos наконец-то вызвана |
lvgl | lvglосновная библиотека |
lv_g2d_test | Тестовый пример g2d, в частности тестирование подключенного интерфейса g2d |
lv_monitor | Программное обеспечение для стресс-тестирования и мониторинга состояния |
sunxifb.mk | Публичные файлы конфигурации,Его необходимо включить при написании Makefile приложения. |
Ниже приведен скриншот приложения lv_examples:
Ниже приведен скриншот приложения lv_monitor:
source build/envsetup.sh
lunch XXX название платформы
make menuconfig
Gui --->
Littlevgl --->
< > lv_demo
<*> lv_examples (официальная демо-версия lvgl)
-*- lvgl-8.1.0 use sunxifb double buffer (Включите двойную буферизацию, чтобы решить проблему разрыва)
[*] lvgl-8.1.0 use sunxifb cache (включить ФБ cache)
[ ] lvgl-8.1.0 use sunxifb g2d (Включить аппаратное обеспечение G2D)
[ ] lvgl-8.1.0 use sunxifb g2d rotate (Включить ротацию оборудования G2D)
[ ] lvgl-8.1.0 use freetype (автоматически связывается с FreeType)
<*> lv_g2d_test (тестовый пример g2dинтерфейса)
<*> lv_monitor (Программное обеспечение для стресс-тестирования и мониторинга данных)
< > smartva
< > smartva_ota
лвгл путь:
tina/package/gui/littlevgl-8
В sunxifb мы предоставляем следующий набор интерфейсов:
Таблица 9-2: sunxifbСвязанныйинтерфейсиллюстрировать
интерфейс | иллюстрировать |
---|---|
sunxifb_init | Функция main инициализирует механизм отображения. с параметром вращения,Если включено вращение g2d,Просто используйте этот параметр, чтобы указать направление вращения. |
sunxifb_exit | Функция относительно проста,Реализовать закрытие кеша,Закрыть g2d,Освободить буфер вращения,закрыть fb0 |
sunxifb_flush | Функция более важная и отвечает за отрисовку скопировать буфер обратно буфер, и после отрисовки последнего кадра поменять местами frontback буфер. Приложения не вызывают эту функцию |
sunxifb_get_sizes | Функция получения разрешения экрана,Таким образом, приложению не нужно жестко запрограммировать разрешение инициализации. |
sunxifb_alloc | Функция в основном используется для применения к памяти чертежей системы.,После включения некоторых функций G2D,Будет применяться для непрерывной физической памяти |
sunxifb_free | Функция используется для освобождения памяти, запрошенной sunxifb_alloc. |
Расположение кода следующее:
tina/package/gui/littlevgl-8/lv_drivers/display/sunxifb.c
В sunxifb_init(rotated) значения Rotated — LV_DISP_ROT_NONE, LV_DISP_ROT_90, LV_DISP_ROT_180, LV_DISP_ROT_270.
Наконец, есть назначение disp_drv.rotated=rotated. Если ротация g2d отсутствует, вы также можете указать disp_drv.sw_rotate = 1, чтобы использовать программную ротацию.
В sunxig2d реализован пакет g2d ioctl,Ни одна из этих функций не требует вызовов приложений.,следующее:
Таблица 9-3: sunxig2dСвязанныйинтерфейсиллюстрировать
интерфейс | иллюстрировать |
---|---|
sunxifb_g2d_init | функция инициализации модуля g2d,Откройте узел /dev/g2d.,Установите g_format. Во время инициализации,На основе включенных макросов,Распечатайте соответствующий журнал |
sunxifb_g2d_deinit | Долженфункция Закрыть g2dоборудование |
интерфейс | иллюстрировать |
---|---|
sunxifb_g2d_get_limit | Функция получает порог использования g2d. |
sunxifb_g2d_blit_to_fb | Долженфункцияиспользуется для копированияfb0изfrontиback Эти два буфера также можно вращать. Повернуть буфер назад buffer |
sunxifb_g2d_fill | Функция использует g2d для заполнения цветного прямоугольника.,Цвета могут иметь прозрачность |
sunxifb_g2d_blit | Функция используется для копирования изображений,Невозможно смешать изображения |
sunxifb_g2d_blend | Функция может смешивать изображения |
sunxifb_g2d_scale | Функция используется для масштабирования изображения. |
Расположение кода следующее:
tina/package/gui/littlevgl-8/lv_drivers/display/sunxig2d.c
Больше, чем функция g2d,Все они подключены к фреймворку рисования lvgl.,Вы можете использовать функции lv_draw_map и lv_img_set_zoomиlv_canvas_draw_img от lvgl.
В приложении lv_g2d_test есть полные примеры использования.
в Сунксимеме,Реализована инкапсуляция для управления физической памятью.,Ни одна из этих функций не требует вызовов приложений.,следующее:
Таблица 9-4: sunximemСвязанныйинтерфейсиллюстрировать
интерфейс | иллюстрировать |
---|---|
sunxifb_mem_init | Функция будет вызвана в sunxifb_init.,Инициализация интерфейса приложения физической памяти,используемое промежуточное программное обеспечение далибуапи |
sunxifb_mem_deinit | Функция передается путем вызова SunxiMemClose.,Освободите запрошенные ресурсы интерфейса |
sunxifb_mem_alloc | Функция важнее,Используется во многих местах,Количество байтов, которые необходимо передать приложению и использовать, иллюстрировать |
sunxifb_mem_free | Функция используется для освобождения памяти, запрошенной путем вызова sunxifb_mem_alloc. |
sunxifb_mem_get_phyaddr | Функция преобразует виртуальный адрес памяти, запрошенный sunxifb_mem_alloc, в физический адрес.,Драйвер g2d принимает только физический адрес буфера или fd. |
sunxifb_mem_flush_cache | Эта функция используется для очистки sunxifb_mem_alloc для применения буферного кеша. |
Расположение кода следующее:
tina/package/gui/littlevgl-8/lv_drivers/display/sunxigmem.c
Поскольку драйвер g2d может использовать только физическую непрерывную память, при декодировании изображений его необходимо применять через sunxifb_mem_alloc. Пожалуйста, помните.
иллюстрировать:В настоящее время только реализовано bmp 、 png и gif Приложение памяти изображений, jpeg Фотографии пока недоступны.
При использовании lv_canvas_set_buffer входящий буфер нуждается в буфере, примененном даsunxifb_alloc, sunx- Ifb_alloc определит, нужно ли обращаться к физической непрерывной памяти.
иллюстрировать: холст на заказ lv_canvas Еще не подключен g2d Функция масштабирования.
Коснитесь официального evdev dalvgl, который мы используем.
Расположение кода следующее:
tina/package/gui/littlevgl-8/lv_drivers/indev/evdev.c
в приложении lv_drv_conf.h Средняя модификация EVDEV_NAME Создано для переписки с сенсорным экраном event узел, например lv_examplesиз Конфигурациядокумент:
tina/package/gui/littlevgl-8/lv_examples/src/lv_drv_conf.h
Кроме того, вы также можете использовать команду для создания сенсорного экрана с программным подключением, который будет напрямую использовать сенсорный экран в качестве сенсорного узла для легкой настройки. пытаться. Команда выглядит следующим образом:
ln -s /dev/input/eventX /dev/input/touchscreen
Если в disp_drv.rotated указан поворот на 90 или 180 градусов, lvgl будет внутренне вращать координаты касания, не касаясь его. Драйвер внутренне вращает координаты касания.
Рекомендуется использовать lv_g2d_test в качестве шаблона для копирования нового проекта:
tina/package/gui/littlevgl-8/lv_g2d_test
В Makefile,Необходимо включить sunxifb.mk в публичную конфигурацию,При компиляции приложения Пучок Макроспройти дальше。Способследующее:
tina/package/gui/littlevgl-8/lv_g2d_test/Makefile
include ../sunxifb.mk
Кроме того, можно отметить, что имеются следующие Конфигурации.,Эти конфигурации необходимо включать по требованию.,На некоторых чипах да не поддерживает G2D_BLEND и т.п.
Операция поддерживает только простую функцию вращения:
ifeq ($(CONFIG_LVGL8_USE_SUNXIFB_G2D),y)
TARGET_CFLAGS+=-DLV_USE_SUNXIFB_G2D_FILL \
-DLV_USE_SUNXIFB_G2D_BLEND \
-DLV_USE_SUNXIFB_G2D_BLIT \
-DLV_USE_SUNXIFB_G2D_SCALE
endif
в В реальном Makefile, скомпилированном приложением, вы можете скомпилировать только необходимые файлы и уменьшить размер исполняемого файла, как показано в следующем примере. Только да не компилируйте папку примеров:
tina/package/gui/littlevgl-8/lv_g2d_test/src/Makefile
include $(LVGL_DIR)/lvgl/lvgl.mk
include $(LVGL_DIR)/lv_drivers/lv_drivers.mk
#Do not compile the example
EXCSRCS += $(shell find -L $(LVGL_DIR)/$(LVGL_DIR_NAME)/examples -name \*.c)
CSRCS := $(filter-out $(EXCSRCS),$(CSRCS))
О файле конфигурации lvgl,Также рекомендуется использовать lv_g2d_test,Можно сравнить с оригинальной неизмененной Конфигурация.,Затем root В соответствии с фактическим переключением сцены соответствующая Конфигурация. Файл конфигурации следующий:
tina/package/gui/littlevgl-8/lv_g2d_test/src/lv_conf.h
tina/package/gui/littlevgl-8/lv_g2d_test/src/lv_drv_conf.h
tina/package/gui/littlevgl-8/lvgl/lv_conf_template.h
tina/package/gui/littlevgl-8/lv_drivers/lv_drv_conf_template.h.h
Наконец, инициализация приложения да,в lv_g2d_test,Существует более понятный процесс вызова.,нужно вниманиеиздаsunx- ifb_init необходимо передать параметр вращения и sunxifb_alloc, чтобы подать заявку на использование памяти.
Мы предоставляем несколько тестовых случаев, команды выполнения следующие:
lv_examples 0
lv_examples 0, is lv_demo_widgets
lv_examples 1, is lv_demo_music
lv_examples 2, is lv_demo_benchmark
lv_examples 3, is lv_demo_keypad_encoder
lv_examples 4, is lv_demo_stress
lv_g2d_test
lv_g2d_test 0 5 0 1
one num is rotate, range is 0~3
tow num is gif, range is 0~11, 11 is no show gif
three num is bmp, range is 0~2, 2 is no show bmp
four num is png, range is 0~3, 3 is no show png
lv_monitor
во время инициализации,Следующее будет напечатано,Будут различия в зависимости от конфигурации.,Указывает, что что-то открыто:
wh=1280x800, vwh=1280x1600, bpp=32, rotated=0
Turn on double buffering.
Turn on 2d hardware acceleration.
Turn on 2d hardware acceleration fill.
Turn on 2d hardware acceleration blit.
Turn on 2d hardware acceleration blend.
Turn on 2d hardware acceleration scale.
Turn on 2d hardware acceleration rotate.
Flutter привносит инновации в разработку приложений: всего одна база кода,Готово к постройке, Тестирование и выпуск для мобильных устройств、Web、стол Изысканные приложения для встраиваемых платформ. Особенности Flutter:
Флаттер в настоящее время трансплантирован Тине. 2.10.4 и Demo, обратите внимание, что приложения Flutter можно запускать только с помощью цепочки инструментов компиляции glibc. ХОРОШО。Перечислено нижеFlutterСвязанные библиотекииллюстрировать:
Таблица 10-1: FlutterСвязанные библиотекииллюстрировать
имя пакета | иллюстрировать |
---|---|
complex_layout | Приложение для тестирования скользящего списка |
gallery flutter | официальное масштабное приложение,Интегрированы различные эффекты управления и общие сценарии применения. |
video_player | Приложение для тестирования воспроизведения видео |
flutter_eglfs | Предварительная компиляция и загрузка приложений Flutter, использование графического процессора для рендеринга, поддержка вращения |
flutter_fbdev | Приложения, которые предварительно компилируют и загружают приложение Flutter, обрабатываются с использованием ЦП, и в настоящее время вращение не поддерживается. |
flutter-client | Предварительная компиляция и загрузка приложений Flutter, использование графического процессора для рендеринга, поддержка телефонс воспроизведением видео |
libvideo_player_plugin.so | Плагин воспроизведения видео,Пока только в целях тестирования,Видео будет заменено позже. |
libflutter_elinux_eglfs.so | Если вам нужен собственный плагин, вам нужно дать ссылку на эту библиотеку. |
libflutter_engine.so | flutterосновная библиотека |
gen_snapshot flutter | Инструменты, необходимые для компиляции приложения AOT |
Ниже приведен скриншот приложения complex_layout:
Ниже приведен скриншот галереи приложений:
source build/envsetup.sh
lunch XXX название платформы
make menuconfig
Gui --->
Flutter --->
flutter-sunxi --->
--- flutter-sunxi
-*- flutter use fbdev
[*] flutter use eglfs
[ ] flutter use client
[ ] flutter use elinux so
[*] flutter demo complex layout
[*] flutter demo gallery
[ ] flutter demo video player
Путь флаттера следующий:
tina/package/gui/flutter/flutter-sunxi
tina/dl/flutter-sunxi-1.0.7.tar.gz
когда Конфигурацияначальствоflutterпосле,поставлю flutter_fbdev,complex_layout и т. д. размещаются в каталоге /usr/bin.,libflut- ter_engine.so и т. д. помещаются в каталог /usr/lib и выполняют следующую команду:
flutter_eglfs /usr/bin/bundle_complex_layout/
flutter_eglfs /usr/bin/usr/bin/bundle_gallery/
flutter_fbdev /usr/bin/bundle_complex_layout/
flutter_fbdev /usr/bin/usr/bin/bundle_gallery/
flutter-client -b /usr/bin/bundle_complex_layout/
flutter-client -b /usr/bin/bundle_gallery/
Некоторая информация будет выведена во время инициализации и обнаружения узлов касания, лог следующий:
root@TinaLinux:/# flutter_eglfs /usr/bin/bundle_gallery/
flutter: egl version: 1.4 (1.4 build 1.11@5516664)
flutter: egl vendor: Imagination Technologies
flutter: red OK: 8
flutter: green OK: 8
flutter: blue OK: 8
flutter: alpha OK: 8
flutter: found input device <sunxi-keyboard>
flutter: input props: <none>
flutter: found input device <axp806-pek>
flutter: input props: <none>
flutter: found input device <gt82x>
flutter: input props: <INPUT_PROP_DIRECT>
Если INPUT_PROP_DIRECT не распознан, необходимо добавить в драйвер сенсорного экрана следующий код:
set_bit(INPUT_PROP_DIRECT, ts->input_dev->propbit);
Кроме того, вы также можете использовать команду для создания сенсорного экрана с программным подключением, который будет напрямую использовать сенсорный экран в качестве сенсорного узла для легкой настройки. пытаться. Команда выглядит следующим образом:
ln -s /dev/input/eventX /dev/input/touchscreen
Вы также можете просмотреть более подробную информацию и добавить параметры вращения. Команда выглядит следующим образом:
root@TinaLinux:/# flutter_eglfs -h
flutter_eglfs - run flutter apps on your device.
USAGE:
flutter_eglfs [options] <bundle path>
OPTIONS:
-f, --fps-print Print frame rates.
-p, --touch-print Print touch points.
-r, --rotate-screen Rotate the screen, the values are 0, 90, 180, 270.
-v, --version Show flutter_eglfs version and exit.
-h, --help Show this help and exit.
BUNDLE PATH TREE:
./app_bundle/data/flutter_assets
./app_bundle/data/icudtl.dat
./app_bundle/lib/libapp.so
EXAMPLES:
flutter_eglfs ./app_bundle
flutter_eglfs -r 90 ./app_bundle
LD_LIBRARY_PATH=./ flutter_eglfs ./app_bundle
LD_LIBRARY_PATH can ensure that libflutter_engine.so is found.
OTHER:
Some applications may require system information.
export LANG="en_US.UTF-8"
О том, как компилировать флаттер-приложения,Посмотреть иллюстрировать можно в readme.txt.,путьследующее:
tina/out/имя проекта/compile_dir/target/flutter-sunxi-1.0.7/readme.txt