Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
Автозапуск приложение и чтение клавиатуры
elsid
Добавлено 28.10.2015 13:43 Редактировалось 28.10.2015 13:46
0
Сообщение: 1
elsid
5

Пункты: 929
Регистрация: 28.05.2015
Здравствуйте.

Есть один проект для ПК, в котором есть отображение графики и работа с клавиатурой. Этот проект переносится под работу на плате с i.mx6Solo.
Работать всё будет на buildroot.
Изначально в проекте отображение графики работало через SDL, но на i.mx в таком случае не использовалось ускорение графики (в моём случае блиттинга). Переписал функции отрисовки графики с использованием g2d (спасибо sasamy за версию buildroot с подержкой g2d), теперь изображение с помощью блиттинга отрисовывается напрямую в /dev/fb0.
В связи с этим возникла проблема, что на экране (который /dev/fb0) отображается пригашение логина и вообще консоль /dev/tty0. Таким образом при нажатии на клавиши клавиатуры из под выполняемого графического приложения проскакивают вводимые знаки, которые затем закрашиваются после перерисовки в приложении.
Нашёл, что решить эту проблему можно в общем двумя способами: либо закомментить вызов getty на /dev/tty1 в /etc/inittab, либо при сборке ядра отключить поддержку fbcon. В итоге с графикой всё решилось, но возникла проблема с вводом с клавиатуры - приложение подразумевает работу с ней.
Если раньше за обработку клавиатуры отвечала SDL, то теперь она это делать не может: либо я не разобрался, либо SDL не может инициализировать клавиатуру без инициализации видео, а инициализация видео в SDL мне мешает напрямую отрисовывать графику в fb0.
В итоге решил читать клавиатуру проще, как описано здесь
Настроил автологин в консоль, в которой при старте запускается keyboard-test, ожидающий нажатие кнопки в асинхронном режиме. И тут наступает проблема, с которой я сейчас бьюсь - приложение получает нажатие кнопки только из консоли-терминала (отладочный интерфейс UART), но никак не с клавиатуры, которая подключена по USB к плате.

Я не очень ещё разобрался с работой tty в Linux, поэтому не могу понять, что нужно сделать. Может кто-лио подсказать, как захватывать нажатия клавиатуры в моей ситуации, либо подсказать, где я ошибся раньше и сделал всё изначально неправильно, из-за чего и создал сам себе такие сложности (у меня такие подозрения есть).
Спуститься к концу Подняться к началу
Персональная информация
elsid
Добавлено 28.10.2015 16:01 Сообщение: 2
elsid
5

Пункты: 929
Регистрация: 28.05.2015
Вопрос решён.

Перед задаванием вопроса не проверил, что будет, если запускать ядро без поддержки fbcon и запуском getty на /dev/tty1 (при включенном fbcon при это происходил вывод на монитор). А будет всё верно, автологин произойдёт на tty1, который не выводится на монитор из-за отсутствия fbcon, при этом нет никаких проблем с клавиатурой.
Другое дело, что отлаживать такое приложение непросто - нужно как-то запускать его на tty1, при том, что управление у меня есть только на ttymxc0 (UART) и ssh.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux