|
|
  |
USB клавиатура, s3c2410 (ARM9) и USB клавиатура |
|
|
|
Jun 3 2014, 06:14
|
Участник

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

|
По моему у меня уже начинается сдвиг... Объясните мне, что такое виртуальные адреса? Что такое ассоциативная память? Что ещё за буфер ассоциативной трансляции? Как из физического адреса 0х30000000 получается виртуальный 0х80000000 ? А зачем??? Я писал программы для MCS-51 и никогда не встречал подобного ужаса.
|
|
|
|
|
Jun 3 2014, 07:02
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
вы сейчас с кем говорите  ? У меня возникает устойчивое подозрение что не один USB виноват в ваших бедах  ... вы куда и зачем в виртуальные адреса то полезли? Это все из раздела операционных систем вроде как, где приложениям выделяется своя память (страничка), внутри приложения обращаются по внутренним адресам, а операционка уже эти страницы памяти раскладывает по реальной памяти. ассоциативная память - это ваще крутая штука, как бы память с адресацией по содержимому, в ней очень быстро, фактически в 1 такт можно найти данные, если они там сохранены... Только каким это все боком к USB?
|
|
|
|
|
Jun 3 2014, 08:12
|
Участник

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

|
Цитата(Golikov A. @ Jun 3 2014, 15:12)  Только каким это все боком к USB? Ну тут были советы поставить WinCE, потому как там уже реализована поддержка USB клавиатур и прочего, ну вот я и написал свой загрузчик, который копирует содержимое из flash в ОЗУ, а потом звонит по адресу в ОЗУ и запускает программу. Примитивную программу, выводящую картинку из nand в экран я написал, впринципе работает, только медленно - видно как прорисовываются пиксели. Так вот пробовал я загрузить таким образом eboot для последующей загрузки самого ядра nk.bin и получил сбой, посмотрел дебаггером и увидел, что eboot работает совсем в другой области адресов в озу 0x8c200000... и иже с ними, как я понял - это виртуальные адреса. Вот теперь я окончательно запутался. Даже не знаю, толи проще копать дальше и добиваться загрузки wince, а потом писать своё приложение на базе этой CE или же пойти в другую сторону и написать свою программу обработки hid устройства по USB.
|
|
|
|
|
Jun 3 2014, 10:55
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(TrueCyrix @ Jun 3 2014, 15:22)  Даже не знаю, толи проще копать дальше и добиваться загрузки wince, а потом писать своё приложение на базе этой CE или же пойти в другую сторону и написать свою программу обработки hid устройства по USB. IMHO, с linux или WinCe Вы получите еще и ethernet и другие плюшки. Там где ось не нужна, она не нужна, но здесь думаю, подняв ось, далее будет проще общаться с дисплеем, клавиатурой, мышой и пр. здесь смотрели? http://www.mt-system.ru/catalog/samsung-semiconductors Там и u-boot и загрузчик из NOR/NAND приводятся.
|
|
|
|
|
Jun 4 2014, 03:36
|
Участник

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

|
Цитата(DmitryM @ Jun 4 2014, 09:58)  Перечитал еще раз Ваши сообщения и возник у меня вопрос: а нужна ли Вам вообще клавиатура? Может просто повесить несколько кнопок на IO и опрашивать их. Несколько - это маловато. Все 102 кнопки нужны. Это будет терминал ввода данных. Не ужели s3c2410 настолько редкий процессор, что для него нет ни одного примера работы с USB клавиатурой?
|
|
|
|
|
Jun 4 2014, 04:29
|
Участник

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

|
1) включение питания клавиатуры 2) клавиатура - AAh (я готова) 3) компьютер - EDh (сброс индикаторов) 4) клавиатура - FAh (приняла/поняла/подтверждаю) 5) компьютер - F2h (дай мне свой ID) 6) клавиатура - FAh (приняла/поняла/сейчас дам) 7) клавиатура - ABh (послала первый байт ID) .... ну и т.д. и т.п. компьютер слушает clock от клавиатуры и читает данные, или сам посылает - это всё для PS/2 а как общаться с USB клавиатурой? Примеров нет, вот что плохо.
|
|
|
|
|
Jun 4 2014, 05:37
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата а как общаться с USB клавиатурой? Примеров нет, вот что плохо. ходим по кругу. USB - клавиатура - такой штуки нет. Есть HID клавиатура. И общение (в ваших терминах) такое 1) клавиатура - потребляю я включилась 2) компьютер ты кто? 3) клавиатура - я HID клавиатура 4) компьютер - ну давай работай 5) клавиатура, ОК - работаю все дальше все само, если глубже там компьютер будет раз в 1 мСек или 125 мкСек зависит от режима опрашивать клавиатуру нет ли у нее данных, а та будет сообщать коды нажатых кнопок если есть такие... я тут придумал для вас хорошее решение! вам надо взять промежуточное устройство которое USB-HID переделает в UART, а на целевом проце уже обрабатывать UART передачу...
|
|
|
|
|
Jun 4 2014, 06:29
|
Участник

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

|
Вы хотите сказать, что хост постоянно "клюёт" HID устройство с целью узнать нет ли там данных и если есть, то заклочить (clock) устройство и получить данные побитно? А зачем постоянно то? На это ведь уходит время и ресурсы.
По 8 бит читать пакеты через uart? В принципе возможно, надо попробовать, только как быть с прерыванием?
|
|
|
|
|
Jun 4 2014, 07:09
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата Вы хотите сказать, что хост постоянно "клюёт" HID устройство с целью узнать нет ли там данных и если есть, то заклочить (clock) устройство и получить данные побитно? А зачем постоянно то? На это ведь уходит время и ресурсы. Не один я это хочу это сказать. Это принцип работы USB в целом. Все обмены по шине инициируются хостом, для LS,FS устройств величина кадра 1 мСек, для HS 125 мкСек. Обмены HID устройства идут по iterrupt конечной точке, которая отправляет данные фактически в ближайший фрейм. Это все делается на железном уровне и само. Клавиатура получив нажатие кнопки формирует отчет входной отчет (отчет в хост) с кодом кнопки, отчет будет забран хостом в ближайший фрейм. Фрейм его обработает, выставить ACK, NACK или что ему понадобиться, проверит суммы, выделит данные и поставит флаг что пришли данные. Вы их считаете и обработаете. преобразование HID - UART нету, те преобразователи USB-UART что есть это CDC класс, он клавиатуру не обработает. Но если вы возьмете что-то на базе LPC1768, то я вам давал ссылку на готовый стэк что обработает клавиатуру. Наверняка можно найти что-то и поменьше что сможет обработать клавиатуру и выдать вам данные в каком-то понятном виде, UART или что-то типа. Это близко к идее использовать PS/2, только интерфейс будет стандартный...
|
|
|
|
|
Jun 4 2014, 07:26
|
Участник

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

|
Да уж... не всё так просто. Ладно, я ещё немного побадаюсь с USB-хостом и если уж совсем ничего не получится, попробую собрать промежуточное устройство. Мне бы не хотелось тратить на это целый uart, он мне нужен для других целей.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|