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

 
 
5 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> USB клавиатура, s3c2410 (ARM9) и USB клавиатура
kovigor
сообщение May 22 2014, 17:05
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Golikov A. @ May 23 2014, 00:10) *
Это я к тому, что подтягивания чужого софта и тщательный его разбор и анализ для этой конкретной задачи не так уж и трудоемок...

Для кого как. Для меня ковыряние в более-менее сложных исходниках Линукса - неподъемная задача. Даже отследить использование переменной по десятку хедеров и паре-тройке Си - файлов - уже большая проблема. У меня же в голове не ЭВМ, а обычные мозги.
Задача реализации хоста вполне подъемна, особенно если есть опыт реализации дивайсов. Еще крайне желательно наличие хоть самодельного сниффера, который бы подключался к линиям шины и позволял бы в режиме "магнитофона" записывать, что происходит на шине. Все это у меня было. И, тем не менее, запуск хоста вылился примерно в три месяца тяжелой, упорной работы ...

P.S. Не нужно ничего подстраивать. USB - клавиатуры универсальны, если вы не включаете в них всяких дополнительных плюшек, а используете только клавиши. Тогда разбор Report'ов сильно упрощается (тогда клавиатура выступает в качестве так называемого "Boot device"). Так, например, поступает BIOS, которому надо уметь работать с абсолютно любой USB - клавиатурой, и это при том, что его код сильно ограничен как по размерам, так и по сложности. Вот, см. стр. 59 ("Boot Interface Descriptors "):

http://www.usb.org/developers/devclass_docs/HID1_11.pdf

PS/2 - клавиатуры универсальны тем более.
Go to the top of the page
 
+Quote Post
undefined
сообщение May 22 2014, 17:08
Сообщение #17





Группа: Участник
Сообщений: 13
Регистрация: 6-07-05
Пользователь №: 6 577



Цитата(Golikov A. @ May 23 2014, 01:10) *
кстати клавиатуры по этому интерфейсу универсальны?


В стандартном наборе сканкодов клавиш - да.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 23 2014, 00:19
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



я пытаюсь сказать что код обслуживания OHCI очень просто, и его нетрудно разобрать чужой.
Go to the top of the page
 
+Quote Post
TrueCyrix
сообщение May 23 2014, 01:29
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 6-08-13
Пользователь №: 77 820



Ну товарищи - я в не большом шоке wacko.gif , я думал это будет несколько проще. Значит надо как-то проинициализировать USB, судя по документации для USB-host есть специальная таблица регистров с кучей адресов. Пока разбираюсь, но весьма трудно понимается. Как бы выяснить последовательность действий, что вот нужно для инициализации, как передать/получть данные? Я так понимаю, в клавиатуру надо послать некоторую команду, чтобы та выдала нужные данные. К примеру захотелось мне погасить или зажечь NumLock или CapsLock - надо дать соответствующую команду... может быть поискать какой-нибудь datasheet на клавиатуру? Для меня это очень тёмный лес. 05.gif
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 23 2014, 03:03
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Весь прикол в том что вы связались с USB - это самоописываемый интерфейс, в этом был смысл. Ведь те кто пишет виндус не читают даташиты на все клавиатурыsm.gif...
Принцип работы HID устройств такой: Они обмениваются репортами, формат репорта описан в дескрипторах. Когда происходит подключение устройства к хосту, хост инициализирует серию запросов по которым определяет что за устройство, подбирает к нему драйверы если надо, получает формат данных что оно выдает.

Для HID есть целая таблица с тем какие данные бывают, абсолютные, относительные, в репортах задаются диапазоны и так далее. Так что работая с USB клавиатурой, которая по сути HID (не берем супер навороченные), вам все равно как она устроена, у вас будет для всех все одинаково.

USB устройство надо отметить имеет несколько сущностей, то есть когда вы включаете его, в дескрипторах вам сообщается сколько ваще вариантов есть. Среди них будет обязательно один стандартный, если клава навороченная и нужен ей свой драйвер, то будет и такой вариант, и хост сможет выбрать по какому варианту работать.

Так вот возвращаясь к HID
в нем определены
IN репорт, OUT репорт, Feature репорт.
В USB все всегда со стороны хоста мериют, так что OUT репорт - это передача данных в HID, в клавиатуре его может не быть
IN репорт - это данные от устройства, через них вам будут из клавиатуры слать код нажатой кнопки.

Feature - это свойства, это штука двунаправленная, ее можно как задать, так и считать, состояние feature может менять как хост так и устройство, обычно через него на клавах зажигают диодики что нажат капс лок и так далее, или же там стоит флаг что он нажат.

Чтобы это точно узнать, надо опросить клавиатуру и считать дискрипторы ее репортов.


Отчеты могут поступать в 3 режимах, по изменению состояния или по таймеру с заданным интервалом или по запросу от хоста, но это только для фичей.. In репорт запросить вроде как нельзя, если я не ошибаюсь... Также как фича отчет не придет по инициативе устройства... но тут 100% гарантии не дам, давно я с этим ковырялся...

----------
обманул маленько

InReport идет через входную интерапт точку, или через контрольную

OutReport
FeatureReport
идут через контрольную точку, или через опциональную выходную интерапт точку, если ее нет, то только через контрольную по инициации хоста.

OutReport можно только послать
InReport можно только запросить
FeatureReport можно и послать и запросить

запрашивать OutReport или посылать InReport через контрольную точку по идее не запрещено, но устройство должно их отнакать, и в стандартном драйвере винды такой опции не дали...
Go to the top of the page
 
+Quote Post
kovigor
сообщение May 23 2014, 03:20
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(TrueCyrix @ May 23 2014, 08:39) *
может быть поискать какой-нибудь datasheet на клавиатуру?

Опыт разработки устройств USB у вас есть ? Если нет, читайте спецификацию и книжки. Потом беритесь за описание OHCI и всего того, что написано по USB - подсистеме в документации на ваш МК.
Еще раз повторю. Есть серьезная, острая необходимость в использовании именно USB - клавиатуры и есть куча времени на проект ? Если да, разбирайтесь с USB. Если нет - ставьте PS/2. Это я вам говорю как человек, решивший (почти с нуля) аналогичную задачу ...
Go to the top of the page
 
+Quote Post
mantech
сообщение May 23 2014, 04:38
Сообщение #22


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(kovigor @ May 23 2014, 11:30) *
Если нет - ставьте PS/2. Это я вам говорю как человек, решивший (почти с нуля) аналогичную задачу ...


Все правильно - если усб нужен только ради клавы - целесообразно работать в режиме ps2 и не парить себе мозг на пол-года разбирательством с усб и отлаживанием и исключением глюков, а их будет и немало.
Другое дело, если есть еще требования, например работа с флешками и т.п. - тогда да - вгрызайтесь в усб, благо хост совместим с ohci. Это большой плюс в сравнении с теми-же стмками.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 23 2014, 05:15
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Ну и еще вопросы личного роста...
Go to the top of the page
 
+Quote Post
undefined
сообщение May 23 2014, 05:51
Сообщение #24





Группа: Участник
Сообщений: 13
Регистрация: 6-07-05
Пользователь №: 6 577



Цитата(TrueCyrix @ May 23 2014, 09:39) *
Я так понимаю, в клавиатуру надо послать некоторую команду, чтобы та выдала нужные данные. К примеру захотелось мне погасить или зажечь NumLock или CapsLock - надо дать соответствующую команду... может быть поискать какой-нибудь datasheet на клавиатуру? Для меня это очень тёмный лес. 05.gif


Даташит на USB клавиатуру называется The Device Class Definition for HID. Ищется на USB.org. Там же можно найти "некую команду" в документе USB Specification. В последнем вам надобно в основном 9-ю главу. Я уже запамятовал подробности, но примерная последовательность такая: установить клавиатуре адрес, запросить дескрипторы, установить конфигурацию. Вроде бы все, после этого она должна сканкоды слать.
Go to the top of the page
 
+Quote Post
TrueCyrix
сообщение May 23 2014, 07:26
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 6-08-13
Пользователь №: 77 820



Всем большое спасибо за ответы! Я понял, что раньше ничего не понимал. Конечно же меня интересует только клавиатура, а что Вы имеете ввиду под PS/2 ? Взять клавиатуру PS/2 и воткнуть её в USB через переходник PS/2-USB? А работать будет?
Ладно... я пока почитаю документ The Device Class Definition for HID который на USB.org, но весьма интересно... значит задаём адрес, запрашиваем дескрипторы, устанвливаем конфигурацию и читаем коды кнопок... - надо как-то всё это осознать. Уверен, у меня будет куча вопросов. sad.gif Только не бросайте меня.
Go to the top of the page
 
+Quote Post
undefined
сообщение May 23 2014, 07:36
Сообщение #26





Группа: Участник
Сообщений: 13
Регистрация: 6-07-05
Пользователь №: 6 577



Цитата(TrueCyrix @ May 23 2014, 15:36) *
Всем большое спасибо за ответы! Я понял, что раньше ничего не понимал. Конечно же меня интересует только клавиатура, а что Вы имеете ввиду под PS/2 ? Взять клавиатуру PS/2 и воткнуть её в USB через переходник PS/2-USB?


Для PS2 нужен другой аппаратный интерфейс. Реализуется ногодрыгом портами контроллера общего назначения. Гуглим что нить в духе PS/2 интерфейс.
Go to the top of the page
 
+Quote Post
kovigor
сообщение May 23 2014, 08:24
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(TrueCyrix @ May 23 2014, 14:36) *
Взять клавиатуру PS/2 и воткнуть её в USB через переходник PS/2-USB?

Ладно... я пока почитаю документ The Device Class Definition for HID который на USB.org

1. Наоборот, берем клавиатуру USB и через переходник включаем ее в разъем PS/2.

2. Не нужен вам сейчас этот документ. Вам до HID как до неба. Сначала надо хост поднять. Читайте спецификацию USB, спецификацию OHCI и описания на ваш контроллер ...
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 23 2014, 11:04
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(kovigor @ May 23 2014, 18:34) *
1. Наоборот, берем клавиатуру USB и через переходник включаем ее в разъем PS/2.

Сомневаюсь, что таковой существует. Ибо называться он будет: "USB-хост" wink.gif

Цитата(kovigor @ May 23 2014, 18:34) *
2. Не нужен вам сейчас этот документ. Вам до HID как до неба. Сначала надо хост поднять. Читайте спецификацию USB, спецификацию OHCI и описания на ваш контроллер ...

Не нужен ТСу хост. Как тут уже здраво посоветовали - ему нужно использовать PS/2.
Не уверен, но где-то мельком слышал, что клавы "USB"/"PS/2" при втыкании их в один из этих интерфейсов, определяют куда их воткнули и
начинают работать по соотв. интерфейсу. Хотя это надо проверить.
В любом случае - PS/2 много проще будет и, если автору надо решать практическую задачу, а не чтобы "наработаться",
то имеет смысл остановиться на PS/2.
Go to the top of the page
 
+Quote Post
undefined
сообщение May 23 2014, 11:34
Сообщение #29





Группа: Участник
Сообщений: 13
Регистрация: 6-07-05
Пользователь №: 6 577



Цитата(jcxz @ May 23 2014, 19:14) *
Не уверен, но где-то мельком слышал, что клавы "USB"/"PS/2" при втыкании их в один из этих интерфейсов, определяют куда их воткнули и начинают работать по соотв. интерфейсу.

Это про мышки. Они действительно так умеют. Клавиатур с такими переходниками в комплекте не встречал. PS отдельно, USB отдельно.
Go to the top of the page
 
+Quote Post
mantech
сообщение May 23 2014, 13:36
Сообщение #30


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(undefined @ May 23 2014, 18:44) *
Это про мышки. Они действительно так умеют. Клавиатур с такими переходниками в комплекте не встречал. PS отдельно, USB отдельно.

Дак нет ничего проще - берете переходник от мышки, усб клаву и втыкаете в разъем ps2 на материнке (розовый). Работает - значит режим поддерживается.
Go to the top of the page
 
+Quote Post

5 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:56
Рейтинг@Mail.ru


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