Ник:
Пароль:

Контакты

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 » Отладочные платы » SK-NUC976
SK-NUC976 сконфигурировать GPIO как кнопки
skru
Добавлено 23.06.2017 13:34
0
Сообщение: 1
skru
0

Пункты: 1134
Регистрация: 28.12.2011
Здравствуйте!
Где и как сконфигурировать систему что бы при прерывании GPIO генерировался код клавиши? С /sys/class/gpio - разобрался. По другим мануалам понял что надо прописать "gpio-keys", а вот куда писать так и не понял.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 23.06.2017 15:33 Сообщение: 2
sasamy
4.70

Пункты: 79218
Регистрация: 14.08.2009
Сделайте по аналогии, например как тут

http://elixir.free-electrons.com/linux/v3.10.32/source/arch/arm/mach-omap2/board-overo.c#L320

в файле

arch/arm/mach-nuc970/dev.c
Спуститься к концу Подняться к началу
Персональная информация
skru
Добавлено 23.06.2017 18:42 Сообщение: 3
skru
0

Пункты: 1134
Регистрация: 28.12.2011
Сделал по аналогии, пересобрал ядро, cat /dev/input/event0 молчит. Как проверить-то что система зарегестрировала эти пины как клавиши?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 25.06.2017 23:54 Сообщение: 4
Jury093
4.5

Пункты: 54259
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Сделал по аналогии, пересобрал ядро, cat /dev/input/event0 молчит. Как проверить-то что система зарегестрировала эти пины как клавиши?

идете в /sys/class/gpio и через echo пробуете зарегистрировать интересующий gpio, если успешно, то где-то вы ошиблись с клавишами..
по идее, ваши пины д.б. видны в прерываниях, потыкали в кнопки и посмотрите на счетчик прерываний примерно как ниже (ButRight,ButLeft):
Код
root@arm9g45:~# cat /proc/interrupts
CPU0
1: 1565 AIC at91_tick, rtc0, ttyS0
11: 22925333 AIC atmel_mci.0
18: 848892142 AIC tc_clkevt
21: 216524 AIC at_hdmac
22: 206993330 AIC ehci_hcd:usb1, ohci_hcd:usb2
23: 0 AIC atmel_lcdfb
24: 0 AIC AC97C
25: 26268097 AIC eth0
63: 0 GPIO mmc-detect
70: 90 GPIO ButRight
71: 77 GPIO ButLeft
Err: 0

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 26.06.2017 10:01 Редактировалось 26.06.2017 10:03 Сообщение: 5
sasamy
4.70

Пункты: 79218
Регистрация: 14.08.2009
Какие конкретные пины вы используете как кнопки GPIO - они переключены на GPIO ? В этом ядре это надо смореть в файле

drivers/pinctrl/pinctrl-nuc970.c

там все пины когда инициализируется какой-то драйвер контроллера коммутируются на этот контроллер и в большинстве случаев это не GPIO.
Спуститься к концу Подняться к началу
Персональная информация
MaxiHunter
Добавлено 26.06.2017 10:53 Сообщение: 6
MaxiHunter
0

Пункты: 2257
Регистрация: 13.03.2011
В этом чипе есть контроллер матричной клавиатуры. Не легче ли его использовать? Схема подключения та же самая(просто кнопки к пинам), но возможностей гораздо больше. Правда, я сам не проверял работу этой схемы
Спуститься к концу Подняться к началу
Персональная информация
skru
Добавлено 26.06.2017 12:18 Редактировалось 26.06.2017 12:32 Сообщение: 7
skru
0

Пункты: 1134
Регистрация: 28.12.2011
Цитата
идете в /sys/class/gpio и через echo пробуете зарегистрировать интересующий gpio, если успешно, то где-то вы ошиблись с клавишами..
по идее, ваши пины д.б. видны в прерываниях, потыкали в кнопки и посмотрите на счетчик прерываний примерно как ниже (ButRight,ButLeft)

1) при экспорте /sys/class/gpio получил ошибку "порт используется" - как я понимаю код в ядре отработал и пин был зарегестирирован как GPIO-кнопка
2) счетчик cat /proc/interrupts по нужному пину работает, но cat /dev/input/event0 продолжает молчать

Достаточно ли этого что бы в Qt-программе поймать QKeyEvent?
Или надо делать что-то еще?

PS: по идее и в консоле как бы должны печататься назначенные символы
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 26.06.2017 16:33 Редактировалось 26.06.2017 16:34 Сообщение: 8
Jury093
4.5

Пункты: 54259
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
1) при экспорте /sys/class/gpio получил ошибку "порт используется" - как я понимаю код в ядре отработал и пин был зарегестирирован как GPIO-кнопка

скорее, факт, что пин занял какой-то драйвер, возможно и gpio-key..

Цитата
2) счетчик cat /proc/interrupts по нужному пину работает, но cat /dev/input/event0 продолжает молчать

а кроме кнопок еще что-то задействовано? что выводит:

Код
dmesg | grep input


Код
root@imx6q-es:~# dmesg |grep input
input: gpio-keys as /devices/platform/gpio-keys/input/input0
input: rotary-encoder as /devices/platform/rotary-encoder.0/input/input1
input: USB Keyboard as /devices/platform/fsl-ehci.0/usb1/1-1/1-1.1/1-1.1:1.0/input/input2
generic-usb 0003:04D9:1603.0001: input,hidraw0: USB HID v1.10 Keyboard [ USB Keyboard] on usb-fsl-ehci.0-1.1/input0
input: USB Keyboard as /devices/platform/fsl-ehci.0/usb1/1-1/1-1.1/1-1.1:1.1/input/input3
generic-usb 0003:04D9:1603.0002: input,hidraw1: USB HID v1.10 Device [ USB Keyboard] on usb-fsl-ehci.0-1.1/input1
input: PS/2+USB Mouse as /devices/platform/fsl-ehci.0/usb1/1-1/1-1.4/1-1.4:1.0/input/input4
generic-usb 0003:1267:0201.0003: input,hidraw2: USB HID v1.10 Mouse [PS/2+USB Mouse] on usb-fsl-ehci.0-1.4/input0
input: b45bat-keys as /devices/virtual/input/input5


Цитата
Достаточно ли этого что бы в Qt-программе поймать QKeyEvent?

для QT я кнопки не использовал - ничего не смогу подсказать..

Цитата
PS: по идее и в консоле как бы должны печататься назначенные символы

если подключен экран и код кнопки больше 0x20, то должен выводится на экран
в обычную консоль нет..

Цитата
В этом чипе есть контроллер матричной клавиатуры. Не легче ли его использовать? Схема подключения та же самая(просто кнопки к пинам), но возможностей гораздо больше. Правда, я сам не проверял работу этой схемы

не факт, что он нормально поддержан в ядре, там в чипе дохрена всего расписано, да вот использовать не получится из-за отсуствия софтовой поддержки..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
skru
Добавлено 26.06.2017 17:25 Редактировалось 26.06.2017 18:15 Сообщение: 9
skru
0

Пункты: 1134
Регистрация: 28.12.2011
Вот эта тема Qt keyPressEvent и GPIO Buttons помогла решить мой вопрос. В итоге мне надо было дополнительно установить опцию: gpio generic-mapped.
Спуститься к концу Подняться к началу
Персональная информация
skru
Добавлено 27.06.2017 12:50 Редактировалось 27.06.2017 12:51 Сообщение: 10
skru
0

Пункты: 1134
Регистрация: 28.12.2011
Продолжим.
А как мне в программе, Qt не Qt или что-то еще другое, получить нажатие не прибегая к чтению из /dev... или /sys... ? Что бы оно было таким же естественным как в терминале.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-NUC976