
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.3] |
![]() |
|
Страницы: (14) « Первая ... 2 3 [4] 5 6 ... 13 14 все ( Перейти к последнему сообщению ) |
Сообщ.
#46
,
|
|
|
cppasm, рекомендую тебе купить ohci-usb контроллер. Стоит всего 200-300руб, зато тестить драйвер будешь на своей машине...
|
Сообщ.
#47
,
|
|
|
Да есть такие мысли
![]() А как насчёт результатов? Я сегодня у друга попробовал - вроди работает. |
Сообщ.
#48
,
|
|
|
Попробовал прогу! Вот результаты:
![]() ![]() Detecting OHCI USB Controllers... 1 OHCI USB Controller(s) detected OHCI USB Controller 0: VENDOR ID = 1039h, DEVICE ID = 7001h PCI BUS = 0, PCI DEV = 1, PCI FN = 2 MM BASE = DFFFB000h, IRQ = 5 OHCI 0: rev 1.0, no legacy support. Reset Host Controller Host controller state: UsbOperational Reset Host Controller 0. Return control to SMM. SMM did not responce. Host controller state: UsbReset Ты, к стати, не пробовал еще с прерываниями от него работать? |
Сообщ.
#49
,
|
|
|
Я тож попробывал
![]() ![]() ![]() Detecting OHCI USB Controllers... 3 OHCI USB Controller(s) detected OHCI USB Controller 0: VENDOR ID = 1039h, DEVICE ID = 7001h PCI BUS = 0, PCI DEV = 3, PCI FN = 0 MM BASE = EF001000h, IRQ = 11 OHCI USB Controller 1: VENDOR ID = 1039h, DEVICE ID = 7001h PCI BUS = 0, PCI DEV = 3, PCI FN = 1 MM BASE = EF002000h, IRQ = 9 OHCI USB Controller 2: VENDOR ID = 1039h, DEVICE ID = 7001h PCI BUS = 0, PCI DEV = 3, PCI FN = 2 MM BASE = EF003000h, IRQ = 5 OHCI 0: rev 1.0, no legacy support. SMM active, request ownership change. Reset Host Controller. Host controller state: UsbOperational OHCI 1: rev 1.0, no legacy support. SMM active, request ownership change. Reset Host Controller. Host controller state: UsbOperational OHCI 2: rev 1.0, no legacy support. SMM active, request ownership change. Reset Host Controller. Host controller state: UsbOperational Reset Host Controller 0. Return control to SMM. SMM did not responce. Host controller state: UsbReset Reset Host Controller 1. Return control to SMM. SMM did not responce. Host controller state: UsbReset Reset Host Controller 2. Return control to SMM. SMM did not responce. Host controller state: UsbReset |
Сообщ.
#50
,
|
|
|
Всем спасибо - буду двигаться дальше.
С прерываниями ещё не работал. Ещё блин одна проблемма объявилась - при запуске проги я управление контроллером у SMM забираю, а при выходе пытаюсь вернуть. А обработчик SMM (чмо) назад управление брать не хочет - что ему не нравится блин ![]() Так что у кого USB клавиатура или мышь лучше не запускать, возможно она повиснет просто до перезагрузки. Ну клавиатура так точно повиснет ![]() Управление то программой с клавиатуры происходит, а эмуляция отключается (USB драйвера ясен пень нет пока). Единственное можно запустить на создание лога - там от клавиатуры ничего не требуется. |
Сообщ.
#51
,
|
|
|
Прикольно - у вас обоих материнка SiS, ну или по крайней мере USB контроллер
![]() Такс, ну типа апдейт. Должен подключённые устройства детектить (только детектить). Вроди исправил баг с SMM. В общем просьба ещё раз потестировать. Прикреплённый файл ![]() |
Сообщ.
#52
,
|
|
|
Держи
![]() ![]() Detecting OHCI USB Controllers... 1 OHCI USB Controller(s) detected OHCI USB Controller 0: VENDOR ID = 1039h, DEVICE ID = 7001h PCI BUS = 0, PCI DEV = 1, PCI FN = 2 MM BASE = DFFFB000h, IRQ = 5 OHCI 0: rev 1.0, legacy support. Reset Host Controller. Host controller state: UsbOperational Detecting USB Devices... OHCI HC 0, NumberDownstreamPorts=3. Port 0, PortStatus=00000100h Device not connected. Port 1, PortStatus=00010101h Device connected. Port 2, PortStatus=00000100h Device not connected. 1 USB Device(s) detected Reset Host Controller 0. Return control to SMM. SMM did not responce. Host controller state: UsbReset А ты как возврщаешь управление SMM? просто еще раз Owenership change делаешь повторно? Добавлено О! я нашел возможную ошибку с передачей управления обратно SMM: ты делаешь ресет перед сменой владельца. Как я понял из описания: Цитата The OS driver should deconfigure all the devices on the USB, clear all interrupt masks, and disable all list processing. The OS driver should then write a one to the OwnershipChangeRequest bit in the HcCommandStatus register... ресет делать не надо. |
Сообщ.
#53
,
|
|
|
Да, делаю ещё раз OwnershipChange.
Может и не надо ресетить ![]() Там ещё ко всему надо чтоб прерывание по OwnershipChange было разрешено - это я поправил. Как видно не помогло. А не ресетить стрёмно как-то - вдруг BIOS SMM нет вообще, а хостконтроллер и дальше будет в рабочем состоянии и в HCCA писать будет. Конфликты возможны с himem например. PS: а это правда хоть что одно устройство подключено? ![]() |
Сообщ.
#54
,
|
|
|
Цитата cppasm @ а это правда хоть что одно устройство подключено? А как же ![]() Цитата cppasm @ А не ресетить стрёмно как-то - вдруг BIOS SMM нет вообще, а хостконтроллер и дальше будет в рабочем состоянии и в HCCA писать будет. Так ты сбрасывай все адреса, в том числе HCCA. Если адрес 0, то туда ничего не пишется... |
Сообщ.
#55
,
|
|
|
Так-с. Ещё одна попытка.
Там в архиве 2 ехе-шника. Больше надежда на второй ![]() Может какой будет всё-таки работать. Я во втором сделал так - вернуть управление, подождать 10мс, если SMM не отвечает - тогда ресет. Вроди должно быть всё ок. Если не будет работать, тогда наверно ну его, этот SMM вместе с эмуляцией ![]() Прикреплённый файл ![]() |
Сообщ.
#56
,
|
|
|
LOG 1
![]() ![]() Detecting OHCI USB Controllers... 1 OHCI USB Controller(s) detected OHCI USB Controller 0: VENDOR ID = 1039h, DEVICE ID = 7001h PCI BUS = 0, PCI DEV = 1, PCI FN = 2 MM BASE = DFFFB000h, IRQ = 5 OHCI 0: rev 1.0, legacy support. Reset Host Controller. Host controller state: UsbOperational Detecting USB Devices... OHCI HC 0, NumberDownstreamPorts=3. Port 0, PortStatus=00000100h Device not connected. Port 1, PortStatus=00010101h Device connected. Port 2, PortStatus=00000100h Device not connected. 1 USB Device(s) detected Reset Host Controller 0. Return control to SMM. SMM did not responce. Host controller state: UsbReset LOG 2 ![]() ![]() Detecting OHCI USB Controllers... 1 OHCI USB Controller(s) detected OHCI USB Controller 0: VENDOR ID = 1039h, DEVICE ID = 7001h PCI BUS = 0, PCI DEV = 1, PCI FN = 2 MM BASE = DFFFB000h, IRQ = 5 OHCI 0: rev 1.0, legacy support. Reset Host Controller. Host controller state: UsbOperational Detecting USB Devices... OHCI HC 0, NumberDownstreamPorts=3. Port 0, PortStatus=00000100h Device not connected. Port 1, PortStatus=00010101h Device connected. Port 2, PortStatus=00000100h Device not connected. 1 USB Device(s) detected Return control to SMM. SMM did not responce, resetting. Host controller state: UsbReset |
Сообщ.
#57
,
|
|
|
Ну и фиг с ним
![]() Попробуй ещё это - тут уже должны транзакции проходить. Если всё ок - должна выводиться информация о подключённых устройствах. Надеюсь работает. Завтра сам попробую. Спасибо за содействие. Прикреплённый файл ![]() |
Сообщ.
#58
,
|
|
|
Странная тема получается... Если я запускаю программу из под ДОС-Навигатора, то я вижу:
![]() ![]() ============================================================================ ENDPOINT DESCRIPTOR ============================================================================ EndpointAddress : E8h (08h IN) Attributes : 62h (Bulk pipe) MaxPacketSize : EB05h Interval : 246ms причем это я вижу 2-а раза... И как ты сам видишь, значения не коректные! А вот если я выхожу из навигатора и запускаю ее просто из командной строки, то кроме информации о контроллере и о том, что есть подключенное устройство, больше ничего не показывается... лог создавать пробовал, но в нем тоже только про контроллер... Я посмотрел ту область памяти, куда указывают HcHCCA и HcControlHeadED, там у меня что-то лежит... но ни как не дескрипторы передачи! Да, к стати, не очищай после своей программы регистры контроллера (ресет не делай), а то сложно понять, была ли вообще транзакция. И еще, я тут ставлю експерименты по поводу полноценного драйвера (даже нечто получается) и вот если мой драйвер загружен, то при запуске твоей программы комп ребутится... с предыдущими версиями такого не было! P.S. Я тут чисто случайно наткнулся на странную возможность программно защитить флешку от записи ![]() ![]() |
Сообщ.
#59
,
|
|
|
Насчёт защиты от записи - ничего такого не знаю...
У меня блин уже голова кругом идёт ![]() У тебя на машине случайно EHCI нет, или только OHCI? Сегодня попробовал на машине с EHCI - полный капец. Короче система такая - думаю как EHCI работает знаешь. Ну вкратце - он всегда стоит с компаньёном - OHCI или UHCI. EHCI обрабатывает только Highspeed устройства, остальные отдаёт компаньёнам. После ресета все порты отданы компаньёнам, безразлично какое устройство подключено. Точнее наоборот - он не отдаёт, а забирает себе только Highspeed устройства, но для этого его надо сконфигурировать. Это типа круто - если в системе нет дров EHCI, но есть дрова для компаньёна всё работать будет - только скорость ниже. Так вот втыкаю я сегодня флэшку, запускаю прогу - нет устройства... Все порты перепробовал. Грешил на BIOS, что вмешивается - но эмуляция отключена. Чё за нафиг??? По поводу программы - убрал ресет в конце, добавил дамп дескрипторов после транзакции. Надеюсь что-то прояснится. Если можешь скинь мне на мыло процедуру транзакции, например control_read. Прикреплённый файл ![]() |
Сообщ.
#60
,
|
|
|
Цитата cppasm @ У тебя на машине случайно EHCI нет, или только OHCI? Нет, на той машине, где я эксперименты ставлю, только OHC. Цитата cppasm @ Сегодня попробовал на машине с EHCI - полный капец. Ага, у меня была похожая история. Я начинал разбираться с USB с контроллера UHC... так вот мне удалось заставить его получать дескриптор устройства с мого MP3 плеера (USB 1.1), а когда я к нему подключал любую флешку с USB 2.0, то все транзакции заканчивались, типа, устройство не отвечает, хотя на порте определялось наличие устройства. Ух долго я с этим бился... пока не прочитал про EHC и не отключил его в биосе. Я до понедельника не смогу проверить твою прогу, машина с OHC на работе. Да и с процедурой транзакции тоже самое, все исходники на той же машине ![]() ![]() |