Jump to content
    

Настроить в Линуксе нормальный сплэшскрин

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

 

Я уже спрашивал тут совета, но безрезультатно, поэтому оформлю это как платный проект.

Мне нужно при старте системы показывать нормальный сплэшскрин (логотип).

Система - 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 раза и коротко.

Share this post


Link to post
Share on other sites

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

 

Я уже спрашивал тут совета, но безрезультатно, поэтому оформлю это как платный проект.

Мне нужно при старте системы показывать нормальный сплэшскрин (логотип).

Система - 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

Edited by leocat

Share this post


Link to post
Share on other sites

- Ядро "грузится медленно" по причине таймаута 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 секунд.

Share this post


Link to post
Share on other sites

- Ядро "грузится медленно" по причине таймаута UBOOT, по умочанию вроде как 3 сек. Поставить таймаут=0, логотип увидите практически мгновенно, по включению питания.

- Не обязательно гасить логотип при инициализации консоли.

- Что за Х-ы? Если tinyX, то инициализация проходит практически мгновенно. Если полноценный Х-клиент + Х-сервер, то вопрос: а нафига такое на встраиваемой системе?

Не знаю, что вы там "наворотили", но на подобных МК iMX5; iMX6 у меня все полностью ( включая приложение использующее Х ) загружается за 5-6 сек. Причем за это же время успевает получить IP от DHCP...

Да и ничто не мешает написать простенькую задачку, которая будет стартовать самой первой и с какой либо частотой что-то будет рисовать напрямую в FB ( как вариант ). Конфликтов при этом не возникнет. В основной задаче, после полноценного старта всего, выставить флаг/мьютекс посредством механизмов IPC или SHM, сигнализирующей задачке-картинке прекратить работу.

 

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

 

Там не сплеш скрин ядра. Проблема, что сплешскрин ядра гаснет, когда Х сервер стартует. Надо настроить Х сервер, чтобы он показывал сплеш скрин.

Писать напрямую в frame buffer некрасиво. Нет никакой гарантии, что все окно будет перерисовано если делать в обход Х сервера.

Х-ы это стандартный Х сервер: X11, xorg ...

 

Share this post


Link to post
Share on other sites

Можно включить оверлейный FB, сделать его непрозрачным через IPU, в драйвере есть соотв. IOCTL, нарисовать там что нужно, а после загрузки приложения выключить.

Или в драйверах это сделать, или скриптами при инициализации.

Чтобы выключить консоль нужно ядро пересобрать. Она выключается в графических драйверах.

И UART консоль вырубить можно, быстрее будет.

У меня приложение на QUAD через 11-12 сек стартует.

 

Share this post


Link to post
Share on other sites

Можно включить оверлейный FB, сделать его непрозрачным через IPU, в драйвере есть соотв. IOCTL, нарисовать там что нужно, а после загрузки приложения выключить.

Или в драйверах это сделать, или скриптами при инициализации.

Чтобы выключить консоль нужно ядро пересобрать. Она выключается в графических драйверах.

И UART консоль вырубить можно, быстрее будет.

У меня приложение на QUAD через 11-12 сек стартует.

После выключения консоли перестает отображать лого из ядра, так что секунд 5-6 при старте вообще ничего не показывается. Это еще хуже, чем кратковременное мигание.

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.

×
×
  • Create New...