реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Настроить в Линуксе нормальный сплэшскрин
Polaris
сообщение Sep 27 2017, 18:51
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Доброго времени суток!

Я уже спрашивал тут совета, но безрезультатно, поэтому оформлю это как платный проект.
Мне нужно при старте системы показывать нормальный сплэшскрин (логотип).
Система - Debian9, процессор - i.MX6Q (NXP).
Проблема заключается в следующем - мне нужно показать картинку с момента старта системы до момента запуска моего приложения, которое стартует как браузер (в данный момент Qt WebView + PyQt5). Я уже перепробовал кучу всего, в итоге остановился на варианте с логотипом, встроенным в ядро. Он показывается достаточно рано, спустя примерно 2 секунды, но выключается сразу же при старте инициализации консоли (keyboard-setup.service, по-моему). Затем стартуют Иксы. До старта Иксов логотип может отображать способ 3 (см.ниже). Система у меня достаточно медленная, поэтому Иксы стартуют 3-4 секунды, потом запускается приложение, в итоге почти 10 секунд экран черный, что выглядит реально непрофессионально.
Я знаю, что есть как минимум три возможности запуска логотипа на моей системе (iMX6+Debian или Angström):

1. Включить отображение в U-boot и пропатчить ядро для сохранения картинки, данный метод включается сразу (что некритично в целом), но выключается, думаю, в тот же момент и требует немалых усилий
2. Поддержка логотипа в ядре - то, что я использую в данный момент времени.
3. Скрипт в init.d с отрисовкой через fbi - запускается позднее, чем из ядра, проблема с Иксами не решается. При запуске Иксов около 5 секунд экран черный, Иксы блокируют всю систему до окончательной инициализации, только потом скрипт что-то в состоянии снова отрисовывать.

Как вариант борьбы с поведением Иксов попробовал перейти на фреймбуфер, Qt дает такую возможность. Но первое мигание (1 секунда) этим не побарывается, плюс есть проблема с тормозами в браузере, так как запустить под фреймбуфером аппаратное ускорение мне не удалось, я даже не в состоянии этот процесс отследить как-то. С Иксами система работает нормально, но имеют место два мигания - первое и второе (инициализация Иксов, около 5 секунд).

Есть ли какая-то дополнительная возможность обойти инициализацию Иксов и сохранить картинку до момента запуска моего приложения?

Сколько это будет стоить? Город не важен, могу настроить удаленный доступ и выложить видео того, как это происходит у меня сейчас.
Задача - побороть конкретно эти оба мигания или же предложить какой-то другой работающий вариант. Не требуется прямо идеальной работы без переключений, но мигать должно не более 1 раза и коротко.
Go to the top of the page
 
+Quote Post
leocat
сообщение Sep 28 2017, 16:36
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 109
Регистрация: 12-10-16
Пользователь №: 93 727



Цитата(Polaris @ Sep 27 2017, 19:51) *
Доброго времени суток!

Я уже спрашивал тут совета, но безрезультатно, поэтому оформлю это как платный проект.
Мне нужно при старте системы показывать нормальный сплэшскрин (логотип).
Система - Debian9, процессор - i.MX6Q (NXP).
Проблема заключается в следующем - мне нужно показать картинку с момента старта системы до момента запуска моего приложения, которое стартует как браузер (в данный момент Qt WebView + PyQt5). Я уже перепробовал кучу всего, в итоге остановился на варианте с логотипом, встроенным в ядро. Он показывается достаточно рано, спустя примерно 2 секунды, но выключается сразу же при старте инициализации консоли (keyboard-setup.service, по-моему). Затем стартуют Иксы. До старта Иксов логотип может отображать способ 3 (см.ниже). Система у меня достаточно медленная, поэтому Иксы стартуют 3-4 секунды, потом запускается приложение, в итоге почти 10 секунд экран черный, что выглядит реально непрофессионально.
Я знаю, что есть как минимум три возможности запуска логотипа на моей системе (iMX6+Debian или Angström):

1. Включить отображение в U-boot и пропатчить ядро для сохранения картинки, данный метод включается сразу (что некритично в целом), но выключается, думаю, в тот же момент и требует немалых усилий
2. Поддержка логотипа в ядре - то, что я использую в данный момент времени.
3. Скрипт в init.d с отрисовкой через fbi - запускается позднее, чем из ядра, проблема с Иксами не решается. При запуске Иксов около 5 секунд экран черный, Иксы блокируют всю систему до окончательной инициализации, только потом скрипт что-то в состоянии снова отрисовывать.

Как вариант борьбы с поведением Иксов попробовал перейти на фреймбуфер, Qt дает такую возможность. Но первое мигание (1 секунда) этим не побарывается, плюс есть проблема с тормозами в браузере, так как запустить под фреймбуфером аппаратное ускорение мне не удалось, я даже не в состоянии этот процесс отследить как-то. С Иксами система работает нормально, но имеют место два мигания - первое и второе (инициализация Иксов, около 5 секунд).

Есть ли какая-то дополнительная возможность обойти инициализацию Иксов и сохранить картинку до момента запуска моего приложения?

Сколько это будет стоить? Город не важен, могу настроить удаленный доступ и выложить видео того, как это происходит у меня сейчас.
Задача - побороть конкретно эти оба мигания или же предложить какой-то другой работающий вариант. Не требуется прямо идеальной работы без переключений, но мигать должно не более 1 раза и коротко.

- Ядро "грузится медленно" по причине таймаута UBOOT, по умочанию вроде как 3 сек. Поставить таймаут=0, логотип увидите практически мгновенно, по включению питания.
- Не обязательно гасить логотип при инициализации консоли.
- Что за Х-ы? Если tinyX, то инициализация проходит практически мгновенно. Если полноценный Х-клиент + Х-сервер, то вопрос: а нафига такое на встраиваемой системе?
Не знаю, что вы там "наворотили", но на подобных МК iMX5; iMX6 у меня все полностью ( включая приложение использующее Х ) загружается за 5-6 сек. Причем за это же время успевает получить IP от DHCP...
Да и ничто не мешает написать простенькую задачку, которая будет стартовать самой первой и с какой либо частотой что-то будет рисовать напрямую в FB ( как вариант ). Конфликтов при этом не возникнет. В основной задаче, после полноценного старта всего, выставить флаг/мьютекс посредством механизмов IPC или SHM, сигнализирующей задачке-картинке прекратить работу.

https://leocat3.github.io/linux_plc.html

Сообщение отредактировал leocat - Sep 28 2017, 16:44
Go to the top of the page
 
+Quote Post
Polaris
сообщение Sep 29 2017, 19:06
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Цитата(leocat @ Sep 28 2017, 18:36) *
- Ядро "грузится медленно" по причине таймаута UBOOT, по умочанию вроде как 3 сек. Поставить таймаут=0, логотип увидите практически мгновенно, по включению питания.
- Не обязательно гасить логотип при инициализации консоли.
- Что за Х-ы? Если tinyX, то инициализация проходит практически мгновенно. Если полноценный Х-клиент + Х-сервер, то вопрос: а нафига такое на встраиваемой системе?
Не знаю, что вы там "наворотили", но на подобных МК iMX5; iMX6 у меня все полностью ( включая приложение использующее Х ) загружается за 5-6 сек. Причем за это же время успевает получить IP от DHCP...
Да и ничто не мешает написать простенькую задачку, которая будет стартовать самой первой и с какой либо частотой что-то будет рисовать напрямую в FB ( как вариант ). Конфликтов при этом не возникнет. В основной задаче, после полноценного старта всего, выставить флаг/мьютекс посредством механизмов IPC или SHM, сигнализирующей задачке-картинке прекратить работу.

https://leocat3.github.io/linux_plc.html

С убутом это никак не связано, там стоит пауза 1 секунда, и я ее не беру во внимание.
Иксы полноценные, это так.
По поводу задачки, рисующей в FB - я так и делаю, но иксы на время инициализации перебивают эту задачу.
По поводу инициализации консоли - я не знаю, как это можно изменить.
И да, вся система стартует достаточно быстро, в районе 20 секунд, потому как подсоединяется журналируемый винт и запускаются сервера HTTP/MariaDB, без них и без иксов тоже уложились бы в 7-8 секунд.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Sep 30 2017, 04:37
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(leocat @ Sep 28 2017, 20:36) *
- Ядро "грузится медленно" по причине таймаута UBOOT, по умочанию вроде как 3 сек. Поставить таймаут=0, логотип увидите практически мгновенно, по включению питания.
- Не обязательно гасить логотип при инициализации консоли.
- Что за Х-ы? Если tinyX, то инициализация проходит практически мгновенно. Если полноценный Х-клиент + Х-сервер, то вопрос: а нафига такое на встраиваемой системе?
Не знаю, что вы там "наворотили", но на подобных МК iMX5; iMX6 у меня все полностью ( включая приложение использующее Х ) загружается за 5-6 сек. Причем за это же время успевает получить IP от DHCP...
Да и ничто не мешает написать простенькую задачку, которая будет стартовать самой первой и с какой либо частотой что-то будет рисовать напрямую в FB ( как вариант ). Конфликтов при этом не возникнет. В основной задаче, после полноценного старта всего, выставить флаг/мьютекс посредством механизмов IPC или SHM, сигнализирующей задачке-картинке прекратить работу.

https://leocat3.github.io/linux_plc.html


Там не сплеш скрин ядра. Проблема, что сплешскрин ядра гаснет, когда Х сервер стартует. Надо настроить Х сервер, чтобы он показывал сплеш скрин.
Писать напрямую в frame buffer некрасиво. Нет никакой гарантии, что все окно будет перерисовано если делать в обход Х сервера.
Х-ы это стандартный Х сервер: X11, xorg ...
Go to the top of the page
 
+Quote Post
koljakh
сообщение Oct 3 2017, 10:43
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 108
Регистрация: 14-07-09
Из: Украина, Киев
Пользователь №: 51 248



Можно включить оверлейный FB, сделать его непрозрачным через IPU, в драйвере есть соотв. IOCTL, нарисовать там что нужно, а после загрузки приложения выключить.
Или в драйверах это сделать, или скриптами при инициализации.
Чтобы выключить консоль нужно ядро пересобрать. Она выключается в графических драйверах.
И UART консоль вырубить можно, быстрее будет.
У меня приложение на QUAD через 11-12 сек стартует.
Go to the top of the page
 
+Quote Post
Polaris
сообщение Oct 4 2017, 13:03
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Цитата(koljakh @ Oct 3 2017, 12:43) *
Можно включить оверлейный FB, сделать его непрозрачным через IPU, в драйвере есть соотв. IOCTL, нарисовать там что нужно, а после загрузки приложения выключить.
Или в драйверах это сделать, или скриптами при инициализации.
Чтобы выключить консоль нужно ядро пересобрать. Она выключается в графических драйверах.
И UART консоль вырубить можно, быстрее будет.
У меня приложение на QUAD через 11-12 сек стартует.

После выключения консоли перестает отображать лого из ядра, так что секунд 5-6 при старте вообще ничего не показывается. Это еще хуже, чем кратковременное мигание.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 05:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01323 секунд с 7
ELECTRONIX ©2004-2016