Jump to content

    
Harvester

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

Recommended Posts

Добрый день.

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

Итак. Когда-то было разработано устройство на Линуксе собственной сборки, процессор 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?

Edited by Harvester

Share this post


Link to post
Share on other sites
7 minutes ago, x893 said:

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

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

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

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

Share this post


Link to post
Share on other sites
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. Но вовсе не факт, что удастся как-то ускорить графический интерфейс.

Share this post


Link to post
Share on other sites
1 час назад, Harvester сказал:

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

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

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

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

Share this post


Link to post
Share on other sites
47 minutes ago, Jury093 said:

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

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

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

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

Edited by Harvester

Share this post


Link to post
Share on other sites
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..

Share this post


Link to post
Share on other sites
02.10.2020 в 11:42, Harvester сказал:

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

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

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

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

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

Edited by mantech

Share this post


Link to post
Share on other sites
23 hours ago, x893 said:

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

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

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

Share this post


Link to post
Share on other sites
2 hours ago, Harvester said:

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

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

Share this post


Link to post
Share on other sites
2 hours ago, x893 said:

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

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

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

 

Share this post


Link to post
Share on other sites
1 hour ago, Harvester said:

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

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

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

 

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

Share this post


Link to post
Share on other sites
2 часа назад, Harvester сказал:

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

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

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

• Integrated PowerPC Host Processors
• Integrated PowerPC Communications Processors

e300.jpg

Share this post


Link to post
Share on other sites
13 hours ago, Jury093 said:

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

• Integrated PowerPC Host Processors
• Integrated PowerPC Communications Processors

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

MPC5125YVN400:

1312374401_.thumb.png.067776ec27ffb0bce48c8ed99ac9c569.png

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.