Перейти к содержанию
    

Qt и встраиваемый Линукс - помогите разобраться

Добрый день.

Заранее извиняюсь за длинное вступление, по другому не получается объяснить вопрос.

Итак. Когда-то было разработано устройство на Линуксе собственной сборки, процессор PowerPC E300. Никакой графики там нет - чистая встраиваемая железка.

Потом потребовалось сделать панель оператора с графическим дисплеем. Недолго думая взяли ту же платформу, добавив туда Qt. Т.е. образ линукса по сути отличается только наличием библиотек Qt, никаких GTK/X11/etc не добавилось.

Ключи компиляции для Qt-фронтенда:

./configure -embedded powerpc \
	-xplatform qws/linux-powerpc-g++ \
	-qvfb -opensource -no-qt3support \
	-no-webkit -no-gif \
	-qt-libpng -no-libjpeg -no-openssl \
	-no-cups -qt-freetype -no-opengl \
	-qt-gfx-transformed -nomake examples \
	-nomake demos -nomake docs \
	-nomake translations -qt-kbd-linuxinput \
	-big-endian -silent -prefix /opt

Сама программа запускается так

export QWS_KEYBOARD="linuxinput:/dev/input/event0"
frontpanel -qws -display transformed:Rot270  -nomouse -decoration windows &

1. Правильно ли я понимаю, что в данном случае используется некий "виртуальный буфер" и отрисовка/вывод информации на дисплей производится исключительно силами самой библиотеки Qt?

2. Как можно ускорить работу графического интерфейса в рамках платформы (не меняя железо)? Сейчас процессор просто "подыхает", несмотря на то, что интерфейс представляет из себя просто набор кнопок.

3. Что нужно изменить в системе, чтобы использовать другой фреймворк, скажем wxWidgets?

Изменено пользователем Harvester

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, x893 said:

А подключить любой HMI через последовательный порт ?

А она сейчас так и подключена :)

Текущая панель оператора - это законченное устройство со своим конструктивом. Кроме дисплея там еще клавиатура, индикаторы. Как туда какой-то готовый HMI запихнуть? Плюс вопрос стоимости и независимости от других поставщиков.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 9/30/2020 at 12:31 PM, Harvester said:

1. Правильно ли я понимаю, что в данном случае используется некий "виртуальный буфер" и отрисовка/вывод информации на дисплей производится исключительно силами самой библиотеки Qt?

2. Как можно ускорить работу графического интерфейса в рамках платформы (не меняя железо)? Сейчас процессор просто "подыхает", несмотря на то, что интерфейс представляет из себя просто набор кнопок.

3. Что нужно изменить в системе, чтобы использовать другой фреймворк, скажем wxWidgets?

Сам спросил - сам ответил.

1. Qt самостоятельно пишет в Framebuffer, не требуя никаких прослоек. http://doc.crossplatform.ru/qt/en/4.4.3/qt-embedded.html

2. Похоже, только оптимизацией приложения.

3. Реализовать для данного фреймворка вывод в Framebuffer. Но вовсе не факт, что удастся как-то ускорить графический интерфейс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Harvester сказал:

1. Qt самостоятельно пишет в Framebuffer, не требуя никаких прослоек. http://doc.crossplatform.ru/qt/en/4.4.3/qt-embedded.html

2. Похоже, только оптимизацией приложения.

у вас между e300 и lcd есть какой-то промежуточный видеоконтроллер, полистайте на него спеки, если у него есть графическая турбина, то дописываете нужный функционал в составе QT и будут вам рюшечки и полупрозрачные переливы без участия e300

если GPU нет, то оптимизация мало чем поможет на сложных отрисовках софтово, особенно на высоких разрешениях

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

47 minutes ago, Jury093 said:

у вас между e300 и lcd есть какой-то промежуточный видеоконтроллер, полистайте на него спеки, если у него есть графическая турбина, то дописываете нужный функционал в составе QT и будут вам рюшечки и полупрозрачные переливы без участия e300

если GPU нет, то оптимизация мало чем поможет на сложных отрисовках софтово, особенно на высоких разрешениях

GPU нет, разрешение маленькое 480 x 272, 4.3''

Сложной отрисовки тоже нет, только стандартные элементы интерфейса

Изменено пользователем Harvester

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 часов назад, Harvester сказал:

GPU нет, разрешение маленькое 480 x 272, 4.3''

Сложной отрисовки тоже нет, только стандартные элементы интерфейса

ну раз проц "подыхает" на таком разрешение и простой графике, значит все же где-то есть узкое место. есть смысл напрячь программиста, который писал ГУЙ, на предмет поиска ошибок в формах вывода, как пример где-то случайно вызывается 1000 в сек вывод картинки или кнопки или кайма кнопок переливается радугой, всякое бывает..

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

можно для теста сплодить простейшую программу с одной кнопкой на предмет "как сильно грузит процессор" - в демках QT есть тестовый пример с тачем и тараканами на экране, у меня 20-30 тараканов бодро двигались по экрану, а вот 100 уже приводила к слайдшоу (проц АРМ, 800 МГц)

если вышенаписанное не помогло или не устраивает, то пора разбираться с видеоконтроллером, ваш e300 похоже проц общего назначения и на его шину прицеплен какой-то видеочип, значит надо искать ему замену с GPU и сразу искать с поддержкой в QT (если такие существуют) или писать прослойку в QT самому. тогда ваш e300 будет заниматься другими задачами, а видеоконтроллер обработкой графики (переливы, наложения, затемнения и прочей шелухой)

я запускал QT на разных экранах с примерно одной и той же программой - вывод часов и штук 5-6 картинок и всякого по мелочи в статике и динамике..

- 480х270 вполне тянул в софт режиме АРМ на 200 МГц

- 800х480 - АРМы от 400 до 800 МГц

- 800x600, 1280х1024 - АРМ на 800 МГц

вполне все работали без лагов и процы имели кучу времени на свои задачи не связанные с QT

ЗЫ и да, как вы сами себе ответили, все делается чисто софтово. поддержка аппаратной графики это отдельные ветки в фремйворке QT..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

02.10.2020 в 11:42, Harvester сказал:

GPU нет, разрешение маленькое 480 x 272, 4.3''

Разрешение "детское", такое вполне тянет даже нежирный СТМ32. Рекомендую посмотреть в сторону более "легковесных" гуев, Qt - довольно тяжелая софтина для устаревших процов...

02.10.2020 в 11:42, Harvester сказал:

Сложной отрисовки тоже нет, только стандартные элементы интерфейса

Тем более, зачем тут Qt..

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас исходные файлы есть. Посмотрите в каком месте "тормозит".

Кроме Qt есть и другие - например LittleVGL.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 hours ago, x893 said:

Кроме Qt есть и другие - например LittleVGL.

Основная проблема - TFT без контроллера и CPU без контроллера.

Но спасибо за наводку, посмотрю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Harvester said:

Основная проблема - TFT без контроллера и CPU без контроллера.

Как тогда появляется изображение на дисплее ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, x893 said:

Как тогда появляется изображение на дисплее ?

А слона-то я и не заметил. :)))
Я почему-то уверил себя, что в процессоре нет контроллера. Думал, что просто ногодрыгом выводится.

На самом деле контроллер TFT есть. Спасибо.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Harvester said:

На самом деле контроллер TFT есть. Спасибо.

Так - основная проблема решена !

Теперь дело за малым. Делаете измерение времени (profiling) для своей программы и смотрите где время тратится. И дальше исправляете как надо.

 

https://percepio.com/tz/tracealyzer-for-linux/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, Harvester сказал:

А слона-то я и не заметил. :)))
Я почему-то уверил себя, что в процессоре нет контроллера. Думал, что просто ногодрыгом выводится.

На самом деле контроллер TFT есть. Спасибо.

раз уж вы полное имя процессора не приводите, то вот картинка в аттаче - пальцем покажите, где там "контроллер TFT". в семействе е300 есть пять вариантов процессора, ваш чьих будет:

• Integrated PowerPC Host Processors
• Integrated PowerPC Communications Processors

e300.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 hours ago, Jury093 said:

раз уж вы полное имя процессора не приводите, то вот картинка в аттаче - пальцем покажите, где там "контроллер TFT". в семействе е300 есть пять вариантов процессора, ваш чьих будет:

• Integrated PowerPC Host Processors
• Integrated PowerPC Communications Processors

Я не знал, думал, что "e300" будет достаточно.

MPC5125YVN400:

1312374401_.thumb.png.067776ec27ffb0bce48c8ed99ac9c569.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...