Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
Qt embedded & keyboard
Stlkr_19
Добавлено 15.03.2016 13:35
0
Сообщение: 1
Stlkr_19
0

Пункты: 433
Регистрация: 10.03.2016
Всем доброго времени!

Мал-помалу разобравшись с фреймбуфером, перехожу к клавиатуре.
Пытаюсь настроить Qt-embedded для работы со встроенной клавиатурой изделия.

Собрал простую программку в Qt: счетчик, который увеличивается при каждом нажатии кнопки.
Запускаю на изделии - счетчик не увеличивается!
При этом кнопки работают (смотрю с помощью cat /proc/interrupts)
Этот же исх. код, откомпилированный под десктоп, работает как ожидается.

Железо:
9g45 + norflash + TFEL-дисплей (160х120 mono, шина 4 бита)
Клавиатура на max7360

Софт:
linux-2.6.36-rc6
qt-4.8.6 (собран в систему при помощи Buildroot-2015.11.1)
Кросс-компилятор CodeSourcery 2014.05

Программа

Цитата
main.cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.showFullScreen();
return a.exec();
}

widget.cpp
Widget::Widget(QWidget *parent) :
QWidget(parent)
{
plabel = new QLabel(this);
setCounter(0);
}

void Widget::keyPressEvent(QKeyEvent *)
{
setCounter(++cnt);
}

void Widget::setCounter(quint8 c)
{
QString s = QString("Counter = %1").arg( c );
plabel->setText(s);
}


Вывод env
Цитата
# env
USER=root
SHLVL=1
OLDPWD=/root
HOME=/root
PAGER=/bin/more
PS1=#
QWS_KEYBOARD=LinuxInput:/dev/input/event1
LOGNAME=root
TERM=vt100
PATH=/bin:/sbin:/usr/bin:/usr/sbin
SHELL=/bin/sh
PWD=/tmp
EDITOR=/bin/vi


Вывод evtest
Цитата
# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0: gpio-keys
/dev/input/event1: max7360
Select the device event number [0-1]: 1
Input driver version is 1.0.0
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
Input device name: "max7360"
Supported events:
Event type 0 (EV_SYN)
Event type 1 (EV_KEY)
Event type 4 (EV_MSC)
Event code 1 (MSC_PULSELED)
Event code 3 (MSC_RAW)
Event code 4 (MSC_SCAN)
Key repeat handling:
Repeat type 20 (EV_REP)
Repeat code 0 (REP_DELAY)
Value 250
Repeat code 1 (REP_PERIOD)
Value 33
Properties:
Testing ... (interrupt to exit)
Event: time 232.315370, type 4 (EV_MSC), code 4 (MSC_SCAN), value 33
Event: time 232.315444, -------------- SYN_REPORT ------------
Event: time 232.493945, type 4 (EV_MSC), code 4 (MSC_SCAN), value 33
Event: time 232.493960, -------------- SYN_REPORT ------------


Подскажите, где и что тут не срастается...
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.03.2016 13:49 Редактировалось 15.03.2016 13:53 Сообщение: 2
sasamy
4.70

Пункты: 76914
Регистрация: 14.08.2009
Консоль включена на фреймбуфере ? Если есть что-то подобное в /etc/inittab

...
tty1::respawn:/sbin/getty 38400 tty1 linux
...

закоментируйте (# в начале строки) или удалите

только не перепутайте с консолью на отладочном уарте ttyS0 - ее лучше оставить
Спуститься к концу Подняться к началу
Персональная информация
Stlkr_19
Добавлено 15.03.2016 14:32 Сообщение: 3
Stlkr_19
0

Пункты: 433
Регистрация: 10.03.2016
посмотрел inittab - в нем только одна строка, касающаяся консоли:
Цитата
console::respawn:/sbin/getty -L console 0 vt100 #GENERIC_SERIAL

Пробовал ее комментировать - выключается консоль на ttyS0 (а она очень нужна).

В тоже время консоль на фреймбуфере все-таки включена.
Команда
Цитата
echo "13241234231" > /dev/tty1

выводит эту надпись на экран через фреймбуфер.

Где тогда отключить консоль tty1?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.03.2016 15:02 Редактировалось 15.03.2016 15:02 Сообщение: 4
sasamy
4.70

Пункты: 76914
Регистрация: 14.08.2009
Укажите уарт вместо console (это кстати настраивается при конфигурировании буилдрута)

ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100

смысл в том что если есть у вас приглашение ввода на экране (buildroot login:) то он перехватывает ввод с клавиатуры.
Спуститься к концу Подняться к началу
Персональная информация
Stlkr_19
Добавлено 16.03.2016 07:24 Редактировалось 16.03.2016 07:48 Сообщение: 5
Stlkr_19
0

Пункты: 433
Регистрация: 10.03.2016
Поправил настройки билдрута, залил ФС, теперь в иниттабе:
Цитата
ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL

Строчек про tty0 tty1 в инитабе нет вообще.
Счетчик нажатий в программе по-прежнему не увеличивается :(

Куда еще можно посмотреть?
Спуститься к концу Подняться к началу
Персональная информация
Stlkr_19
Добавлено 16.03.2016 07:46 Редактировалось 16.03.2016 07:47 Сообщение: 6
Stlkr_19
0

Пункты: 433
Регистрация: 10.03.2016
Может что-то в конфигурации Qt не так?

Qt configure выполнил с ключами: - qt-kbd-tty -qt-kbd-linuxinput
В билдруте при сборке ФС поставил кыржики в "Qt kbd drivers": tty, linuxinput

Перед запуском программы в консоли набираю: export QWS_KEYBOARD=LinuxInput:/dev/input/event1
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 16.03.2016 09:33 Сообщение: 7
sasamy
4.70

Пункты: 76914
Регистрация: 14.08.2009
Цитата

Может что-то в конфигурации Qt не так?


для начала посмотрите - работает ли клавиатура вообще в любой программе - хоть в том же терминале

tty1::respawn:/sbin/getty 38400 tty1 linux

evtest это конечно прекрасно но я не вижу причин почему не работают именно Qt программы.
Спуститься к концу Подняться к началу
Персональная информация
Stlkr_19
Добавлено 16.03.2016 10:57 Редактировалось 16.03.2016 10:58 Сообщение: 8
Stlkr_19
0

Пункты: 433
Регистрация: 10.03.2016
Включил tty1.
При запуске выводится:
- Welcome to buildroot
- buildroot login:

Нажимаю кнопки - ничего не выводится...

Но!
Запускаю evtest на десктопе (ubuntu 14.04).

На нажатие и отжатие кнопки (например 'r') выводится следующее:
Цитата
type 4 (EV_MSC), code 4(MSC_SCAN), value 13
type 1 (EV_KEY), code 19(KEY_R), value 0
-------------- SYN_REPORT ------------
type 4 (EV_MSC), code 4(MSC_SCAN), value 13
type 1 (EV_KEY), code 19(KEY_R), value 1
-------------- SYN_REPORT ------------


А в изделии выводится так:
Цитата
type 4 (EV_MSC), code 4 (MSC_SCAN), value 33
-------------- SYN_REPORT ------------
type 4 (EV_MSC), code 4 (MSC_SCAN), value 33
-------------- SYN_REPORT ------------


Видимо, проблема на уровне драйвера.
Пойду к драйверописателю - расскажу ему про это....

Огромное спасибо за помощь!
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux