Ник:
Пароль:

Контакты

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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Отладочные платы » SK-MAT91SAM9XXXXX
Подключение usb устройств
sasamy
Добавлено 18.05.2010 00:34 Сообщение: 11
sasamy
4.70

Пункты: 77235
Регистрация: 14.08.2009
Цитата
цель этой темы не просто разобраться с подключением отдельно взятого девайса, а подобрать универсальный механизм для работы с любым устройством в своей самописной программе, поддерживающим usb интерфейс


Как вы себе представляете это ? Что значит универсальнй механизм - что может быть общего между мышью, флэш накопителем и wi-fi сетевым адаптером кроме того что они подключены через usb ? Для консольных программ есть универсальное понятие терминала - там вообще не нужно знать по какому интерфейсу и через какой порт подключено устройство ввода, для мышей в терминале есть библиотека gpm, в x11 есть xlib, есть тулкиты и виджеты со своими абстракциями типа gtk, qt.
Спуститься к концу Подняться к началу
Персональная информация
KakTyzzz
Добавлено 18.05.2010 10:38 Сообщение: 12
KakTyzzz
5

Пункты: 86
Регистрация: 28.01.2010
Пол: Мужчина
Из: Орёл
Думаю тучи вопросов не последует. Вы недооцениваете мои знания)
Под механизмом я понимаю примерную последовательность действий для достижения результата. Если такой не существует, то это наверное не есть хорошо.
Я тупо не пойму как из программы взаимодействовать с драйвером.
и наверное про иксы речь не идёт, хотя если там уже включена поддержка большинства устройств и "наш алгоритм" упрощается, то может стоит и Хы ставить

Учение - свет, а неучение - чуть свет и на работу
Спуститься к концу Подняться к началу
Персональная информация
Strijar
Добавлено 18.05.2010 11:36 Редактировалось 18.05.2010 11:39 Сообщение: 13
Strijar
Ранг
5

Группа: Клиенты
Пункты: 1618
Регистрация: 21.04.2009
Пол: Мужчина
Цитата
Я тупо не пойму как из программы взаимодействовать с драйвером.


Вам же уже объяснили. Ладно, сами напросились - читайте доку к libusb! Ну и до кучи раздел 37 документации на at91sam9260. Без нее никак!
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 18.05.2010 12:30 Редактировалось 18.05.2010 12:30 Сообщение: 14
sasamy
4.70

Пункты: 77235
Регистрация: 14.08.2009
Цитата
Тоесть Вы хотите сказать, что если я сейчас подоткну usb клавиатуру, и буду в программе запрашивать ввод с клавиатуры, то будет работать??


Если в ядре есть все необходимые модули - то именно так и будет - пользуйтесь всеми posix ф-ми ввода наздоровье. Все драйверы есть в ядре - их нужно только подключить/пересобрать ядро если этого еще не сделано (я например понятия не имею что есть в ашем ядре). Конкретно для usb клав, мышей нужно включить:
USB Human Interface Device (full HID) support
Location:
-> Device Drivers
-> HID Devices

еще рекомендую включить:
Event interface
Location:
-> Device Drivers
-> Input device support
Спуститься к концу Подняться к началу
Персональная информация
KakTyzzz
Добавлено 21.05.2010 21:52 Редактировалось 21.05.2010 22:07 Сообщение: 15
KakTyzzz
5

Пункты: 86
Регистрация: 28.01.2010
Пол: Мужчина
Из: Орёл
И так, разбираемся с ядром.
Имеем:
Код

# Input device support
#
CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set
# CONFIG_INPUT_POLLDEV is not set
#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_EVDEV is not set
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

# USB Input Devices
#
CONFIG_USB_HID=y
# CONFIG_USB_HIDINPUT_POWERBOOK is not set
# CONFIG_HID_FF is not set
# CONFIG_USB_HIDDEV is not set
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
# CONFIG_USB_ARCH_HAS_EHCI is not set
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set

это всё что я отыскал касаемо HID
думаю надо изменить следующим образом
Код

# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_INPUT_MOUSE=y
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

остальное оставим без изменений
usb клавы пока не имею, она появиться попозже. О результатах испытаний отпишусь при наступлении таковых.

Мышь.
Предполагаю самый стандартный способ, который бы сработал для большого linux - использовать прерывания.
Алгоритм асм вставки для включения курсора:
-mov ax,1
-генерируем прерывание 33h

При переводе в Си алгоритм не канает(не компилится), так архитектура камня не имеет регистров ax и т.п. Полагаю номер прерывания тоже не тот

Читаю доку libusb

Учение - свет, а неучение - чуть свет и на работу
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-MAT91SAM9XXXXX