Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.126.11] |
|
Страницы: (14) « Первая ... 9 10 [11] 12 13 ... Последняя » все ( Перейти к последнему сообщению ) |
Сообщ.
#151
,
|
|
|
Бинарников сегодня больше не будет...
Зато будет две просьбы Но всё по порядку. Я тут пару экспериментов поставил Дела такие: если устройству послать неправильный запрос (на несуществующую конечную точку или просто запрос не поддерживаемый устройством) - оно лочится, причём намертво. Не помагает даже перезагрузка машины. Помогает только переподключить устройство. Это халтится нулевая конечная точка. А Clear Halt Feature для Endpoint0 сделать по понятным причинам нельзя - запрос через эту же конечную точку и пересылается. Так что скорее всего здесь я сделать ничего не смогу - SMM лочит устройство и прийдётся его переподключать. А теперь просьбы. Ну первая - не мог бы ты привести дамп дескрипторов с которыми работает SMM и сам USB Request. Интересно взглянуть - может что прояснится. А вторая наверное даже слишком наглая, но всё же... Ты сказал, что на машине Windows нет, и я понимаю что ради эксперимента её инсталить - это ну его нафиг Но в природе существует Live CD WindowsXP (~200Mb). Если у тебя есть возможность его слить, то можно было бы загрузиться с CD. Просто если Windows с мышью работать не сможет, то я окончательно успокоюсь Хотя я понимаю что это уже полный наглёж... |
Сообщ.
#152
,
|
|
|
Видать просьба действительно наглая получилась
|
Сообщ.
#153
,
|
|
|
да нет, дело не в просьбе
Просто я в отпуск ушел, а комп тот на работе так что все это может случится только через 2 недели еще |
Сообщ.
#154
,
|
|
|
Я вернулся
С Live CD WinXP не получилось не нашел я его... А вот дамп, который удалось вытянуть из SMM Дескриптор конечной точки 000EC220: 00 60 40 50 00 00 00 00 C1 C4 0E 00 00 00 00 00 Дескрипторы передачи 000EC4A0: 00 00 E4 5E B8 C4 0E 00 00 00 00 00 BF C4 0E 00 000EC4C0: 00 00 14 F3 FB CA 0E 00 E0 C4 0E 00 02 CB 0E 00 USB Request 000EC4B8: 80 06 00 01 00 00 08 00 Вот правда не удалось узнать, сколько всего запросов он произвел... но он, тоже не смог достучатся до мыши |
Сообщ.
#155
,
|
|
|
С возвращением
Хотя это может и грустно, как-никак отпуск закончился... Спасибо за логи, буду смотреть. Но скорее всего дело не в проге. Насчёт WinXP - ну и ладно. А какая там вообще ОС стоит, или кроме DOS нет ничего? Ну в смысле можно и с Linux или FreeBSD попробовать. |
Сообщ.
#156
,
|
|
|
Кроме доса, там больше ничего нет
|
Сообщ.
#157
,
|
|
|
Я вроди глюк нашёл
Вот лог от той мыши но на UHCI: Detecting UHCI USB Controllers... 1 UHCI USB Controller(s) detected UHCI USB Controller 0: VENDOR ID = 8086h, DEVICE ID = 7112h PCI BUS = 0, PCI DEV = 7, PCI FN = 2 IO BASE = FFE0h, IRQ = 11 Detecting USB Devices... 1 USB Device(s) detected ======================================================================== DEVICE DESCRIPTOR ======================================================================== USB version : 1.0 Device Class : 00h Device SubClass : 00h Device Protocol : 00h Endpoint Zero Max Packet Size : 08h VendorID : 1241h ProductID : 1122h Device version : 1.0 iManufacturer : 00h iProduct : 00h iSerialNumber : 00h NumConfigurations : 01h ======================================================================== CONFIGURATION DESCRIPTOR ======================================================================== NumInterfaces : 01h ConfigurationValue : 01h iConfiguration : 00h Remote Wakeup : YES Self Powered : NO MaxPower : 100 mA ======================================================================== INTERFACE DESCRIPTOR ======================================================================== Interface Number : 00h Alternate Setting : 00h NumEndpoints : 01h Interface Class : 03h Interface SubClass : 01h Interface Protocol : 02h iInterface : 00h ======================================================================== ENDPOINT DESCRIPTOR ======================================================================== EndpointAddress : 81h (01h, IN) Attributes : 03h (Interrupt pipe) MaxPacketSize : 08h Interval : 8 ms А вот разбор Endpoint Descriptor: Endpoint Descriptor 0: 50406000 1: 00000000 2: 000EC4C1 3: 00000000 RES = 0Ah=10 Ok: From Spec: Fields containing '--' are not interpreted or modified by the Host Controller and are available for use by the Host Controller Driver for any purpose. MPS = 64 ERROR: This Mouse and all LS devices have MPS=8 F = 0 OK: General TD K = 1 ??: Skip this ED S = 1 OK: Speed=LS D = 00 OK: Get direction from TD EN = 0 OK: Endpoint0 FA = 0 OK: Device0 Там размер пакета устанавливается равным 64 байта, а у мыши и у всех LS устройств размер пакета равен 8 байт. Вот мышь и лочится. WinXP я тоже найти не смог, может попозже на ftp выложу, а может просто ну его нафиг Если есть возможность слить, попробуй Linux: BLinux (~183Mb) Тоже LiveCD |
Сообщ.
#158
,
|
|
|
Цитата Supervisor @ cppasm, рекомендую тебе купить ohci-usb контроллер. Стоит всего 200-300руб, зато тестить драйвер будешь на своей машине... Облазил половину магазинов в городе, в и-нете смотрел, никак не получается найти PCI-USB с OHCI. Уже пару плат расширения вернул в магазины, на них были UHCI компаньоны Могли бы вы подсказать, как можно купить плату расширения с ohci ? Добавлено И ещё. Что значит: (обратная) совместимость с OHCI 1.0a ? На той плате расширения, которую я покупал, было так написано. Но там был в кач-ве компаньона UHCI...покрайней мере, Windows именно так определила. |
Сообщ.
#159
,
|
|
|
OHCI чаще в embedded-процессорах встречается. Например в Atmel-овских ARM-ах, вроде AT91SAM9260.
Для него существует linux и winCE. http://atmel.com/dyn/products/product_card.asp?part_id=3870 |
Сообщ.
#160
,
|
|
|
Цитата whoIS @ Могли бы вы подсказать, как можно купить плату расширения с ohci ? NEC ищи, он работает стабильно даже с относительно старыми материнками и у них OHCI компаньоны. Будеш покупать смотри внимательно, есть контроллеры которые требуют PCI 2.2 и на старых материнках с PCI 2.1 не работают (в частности VIA, но у VIA UHCI компаньоны). Цитата whoIS @ И ещё. Что значит: (обратная) совместимость с OHCI 1.0a ? Значит что должен быть OHCI... Они может хотели написать что совместимость с USB1.1 |
Сообщ.
#161
,
|
|
|
Купил плату расширения PCI USB Maxxtro с чипсетом Nec на 5 портов.
Так вот там OHCI контроллер в кач-ве компаньона к EHCI. (купил за 14 у.е.) Плата расширения на VIA чипсете (10 у.е.) на 2 порта (на коробке от неё тоже было написано "совместимость с ohci 1.0a"), там в качестве компаньона к ehci стоит uhci. |
Сообщ.
#162
,
|
|
|
Помогите
Что-то я запутался с этими регистрами %) Сделал сброс контроллера, ресет порта, задетектил девайс (HcRhPortStatus = 0x110103) Теперь пишу Control транзакцию, и уже голова кругом от количества этих регистров. HCCA фактически нужен только для Interrupt Transaction? Каша в голове ... зачем так усложнять интерфейс было Схему с ED0 -> TD(Set_Address) -> TD(acknowledge) это я понял. всмысле расставил указатели, заполнил поля структур. А как собственно запустить транзакцию? Вообщем ... |
Сообщ.
#163
,
|
|
|
Здравствуйте
С Control транзакциями я разобрался. Но вот как я думал у меня не получилось... Вообщем, у меня возник вопрос. Схема таже. Устройство, имеет одну конечную точку с типом передачи по прерываниям. Необходимо реализовать HID протокол. Я пытался повторить схему с UHCI в лоб. Не получилось Сейчас я пытаюсь делать следующее, но пока не получается получить ответа от устройства: Посылаю на нулевую конечную точку запрос устройству, т.е. обрабатываю очередь TD присоединенных к HcEndpointDescriptor0 (ED_FullSpeed,FunctionAddress,ED_Direction_TD,EP_NUM_ZERO): Set_Report (bufferRounding = 1, TD_SETUP,DelayInterrupt=111b,DataToggle = 10, buffersize = 8 bytes) Report (bufferRounding = 1, TD_OUT,DelayInterrupt=111b,DataToggle = 11, buffersize = 64 bytes) HandShake (bufferRounding = 1, TD_IN,DelayInterrupt=111b,DataToggle = 11, buffersize = 0 bytes) вроде бы проходит без ошибок, сверяя ED0.HeadP = ED0.TailP. Алгоритм правильный? А как реализовать приём ответа с конечной точки? Я пробовал прикрепить такие дескрипторы передачи в EndpointDescr1: GetResponse (bufferRounding = 1, TD_IN,DelayInterrupt=111b,DataToggle = 10, buffersize = 64 bytes) HandShake (bufferRounding = 1, TD_OUT,DelayInterrupt=111b,DataToggle = 11, buffersize = 0 bytes) А куда собственно записывать адрес этой конечной точки? Сейчас пробую через HCCA. Для этого заполняю все 32 указателя на конечную точку 1. Устанавливаю Master Interrupt Enable, WDH enable. Но почему-то WD в InterruptStatus не устанавливается. Подскажите, плиз, алгоритм. |
Сообщ.
#164
,
|
|
|
Неужели ни у кого нет никаких идей?
или я слишком глупые вопросы задаю? вообщем ещё такую вещь заметил... при SetReport-e возникает ошибка 0xB. В спецификации на ohci reserved. И Status Interrupt Register устанавливается в 0. Ещё один момент. Если я пишу еденицу в бит WritebackDoneHead в InterruptStatus перед приёмом данных с устройства - то бит WDH не устанавливается. Имею ввиду, что по окончании обработки очереди из HCCA устанавливается бит WDH, так?! Хотя при чтении регистра InterruptStatus бит не установлен. Однако, если же я не делаю этого, то вроде бы как транзакция проходит и в HccaDoneHead содержится указатель на первый TD. Вообщем я уже не совсем понимаю чего делать уж... Попробую через Bulk Транзакции...но не уверен что получится...ведь конечная точка то по прерываниям... Неужели ни у кого ни каких идей, соображений? |
Сообщ.
#165
,
|
|
|
У меня есть код работы с OHCI т.е виды транзакций: controll и bulk но они только для изхронного режима. В том числе запуск транзакции. Если нужно могу дать.
Добавлено Вообще схема control-транзакции такая: 1. Подготовка дескиптора EP 2. Формирование дескриптора передачи для SETUP-пакета 3. Подготовка дескрипторов передачи данных и формирование очереди 4. Устанавливаем заголовок очереди в HCCONTROLHEAD_ED 5. Запус контроллера на обработку: 2 в OHCI_HCCOMMANDSTATUS |