
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.52] |
![]() |
|
Страницы: (51) « Первая ... 11 12 [13] 14 15 ... 50 51 ( Перейти к последнему сообщению ) |
Сообщ.
#181
,
|
|
|
PRT попробовал новую версию проги.
Стало лучше ![]() Работает на всех UHCI контроллерах, информацию пишет правильно, создаёт папку TEMP с файлом 000.000 внутри. Файл пустой - нулевой длинны. Не определила только подключение флешки к OHCI. Правда я не знаю должна-ли... А насчёт TEST_UNIT_READY я погорячился... Всё равно не помогло ![]() Надо дальше раскопками заниматься. Такой вопрос, а при конфигурировании устройства надо SET_INTERFACE делать? А то у меня только SET_ADDRESS+SET_CONFIGURATION - вроди со всеми устройствами работает. Да и с плеером работает, вот только чего экран не светится ![]() |
Сообщ.
#182
,
|
|
|
Цитата cppasm @ Не определила только подключение флешки к OHCI. А должна была... Вообще-то у меня одна ошибка есть, которая не дает программе нормально работать в случае с vmp, может из за нее и проблемы и тебя. Она связана с требованием универсальности проекта. Скоро решу ее тоже. Цитата cppasm @ Такой вопрос, а при конфигурировании устройства надо SET_INTERFACE делать? А то у меня только SET_ADDRESS+SET_CONFIGURATION - вроди со всеми устройствами работает. Насчет с SET_INTERFACE мои наблюдения такие: На большинстве устроиств она проходит, но даже если не делать, ничего страшного не происходит. Хотя один кардридер ее не воспринимает виснет, не помогает ресет ни контроллера ни порта, надо питание выключить и включить. Так что пришлось работать по следующему алгоритму: если кол-во интерфеисов 0, то SET_INTERFACE не делаю. если кол-во интерфеисов >0, то SET_INTERFACE(N) Кстати после SET_CONFIGURATION приходится ждать 100ms. |
Сообщ.
#183
,
|
|
|
vmp - если не трудно, можеш сделать лог конфигурирования любой флешки под Windows.
Именно конфигурирование, до обмена данными... |
Сообщ.
#184
,
|
|
|
Пара логов.
W98SE, не помню чьи драйвера, full speed. XP SP1 (!!!), high speed. Флешка была неформатированная, так что на данные можно не смотреть. Прикреплённый файл ![]() |
Сообщ.
#185
,
|
|
|
Спасибо, пошёл изучать логи.
--------------------------------------------- Прочитал. Как я и думал SET_INTERFACE там нету... Значит вся штука в какой-то SCSI команде, может PREVENT MEDIA REMOVAL. Буду разбираться. |
Сообщ.
#186
,
|
|
|
Разобрался. Лучше б сразу забил
![]() Просто в случае с Windows происходит Hot Plug, а у меня устройство до инициализации подключено было, т.е. сброс контроллера происходит с подключённым устройством. А система там такая. Плеер при подключении включает подсветку и она потом просто горит. А во время сброса контроллера он её гасит, а при повторной подаче питания не включает потому что при сбросе контроллера питание не полностью снимается... Попробовал у себя Hot Plug - тоже горит всё время. Да и в Windows если на начальной стадии до загрузки драйвера подключить устройство, то потом во время инициализации драйвера подсветка тоже гаснет во время сброса контроллера. Лучше бы включение подсветки по SET ADDRESS сделали... Ну да ладно, это уже ерунда. Хотя поддержку Bulk Only Reset могли бы и сделать ![]() |
Сообщ.
#187
,
|
|
|
Привет всем! Давно не виделись.
Я естественно с вопросом. Как работать с хабом? Насколько я понимаю деиствия должны быть следующими: 1)Определяем что подключенное устроиство это хаб (ClassCode-9, SubClassCode-0, ProtocolCode-0,1,2). 2)Считываем дескриптор хаба, откуда узнаем количество портов. 3)Запитываем порты и сбрасываем их используя запрос SetPortFeature (RequestType-0x23,Request-0x3,Value-Feature,Index-Portnum,Length-0). 4)По Interrupt конечной точке периодически проверяем состояния портов и при изменении состояния определяем подключено или отключено устроиство. 5)После этого подключенное к порту устроиство должно отвечать на стандартные запросы с адресом 0, чего и не происходит. И еще я никак не могу понять как использовать поле LowSpeed в транзакциях, так как устроиство подключено к хабу и нет никакой возможности узнать оно низкоскоростное или нет. |
Сообщ.
#188
,
|
|
|
Всем здравствуйте!
![]() Я вот тоже мучаюсь с OHCI. Было у кого-нибудь такое, что при обращении к девайсу по нулевому адресу возникала ошибка "Устройство не отвечает" (0101b)? Порядок действий такой. Появляется девайс, делаю резет порта. Жду пока отрезетится, затем читаю дескриптор устройства. При чтении возникает эта ошибка. Такое происходит только с флешкой Transcend. А с устройствами версии 1.10 другая фигня. Первый раз дескриптор устройства читается нормально. Затем делаю снова резет порта. Назначаю адрес на шине. Ошибок нет. Но когда пытаюсь снова прочитать дескриптор устройства уже по установленному адресу, возникает та же самая ошибка. Уже перепробовал все что можно ![]() ![]() |
Сообщ.
#189
,
|
|
|
Насчет LowSpeed-понял. Оказывается оно возвращается в запросе GetStatus(PortNumber). А с ресетом порта хаба проблема все еще стоит.
Добавлено Цитата Melas @ Было у кого-нибудь такое, что при обращении к девайсу по нулевому адресу возникала ошибка "Устройство не отвечает" (0101b)? Было. Некоторые устроиства в нулевом адресе дают возможность считывать только 8 баита дескриптора. А ты сколько считываешь? Цитата Melas @ Затем делаю снова резет порта А смысл второго ресета какой? Я понимаю что Windows так делает, но зачем? А может причина и в первом и во втором случае одна - надо увеличить паузу после ресета порта? |
Сообщ.
#190
,
|
|
|
С хабами разобрался сам.
|
Сообщ.
#191
,
|
|
|
Цитата PRT @ Некоторые устроиства в нулевом адресе дают возможность считывать только 8 баита дескриптора. А ты сколько считываешь? Считывал стандартно, 18 байт. Девайс присылал 8 или все, если это 2.0. Пока работало. Сейчас поменял чтобы в первом запросе было 8. Один фиг. С флешкой Transcend не работает. Может ей надо на шине повисеть, освоиться, с компом подружиться? ![]() Цитата PRT @ Цитата Melas @ Затем делаю снова резет порта А смысл второго ресета какой? Я понимаю что Windows так делает, но зачем? Так в книжке написано, Агурова ![]() |
Сообщ.
#192
,
|
|
|
Цитата Melas @ Сейчас поменял чтобы в первом запросе было 8. Один фиг. С флешкой Transcend не работает. Ну не знаю... Может ресет порта неправильный, можешь его показать? Я делю так: ![]() ![]() delay(100); Port[portnum].Reset=1; WriteDWORD(0x54+portnum*4,Port[portnum]); delay(15); Port[portnum].Enable=1; //Некоторые контроллеры вопреки спецификации этот бит сбрасывают WriteDWORD(0x54+portnum*4,Port[portnum]); delay(15); |
Сообщ.
#193
,
|
|
|
Спасибо тебе! Бооольшое!!! Дело все было с Enable. Бит вроде высвечивался. Сделал принудительную запись, и помогло. Восемь байт выслал.
|
Сообщ.
#194
,
|
|
|
Привет!
У меня еще одна проблема. После назначения адреса устройство по этому самому адресу не отвечает, хотя ошибок при установке адреса нет. Что здесь может быть? |
Сообщ.
#195
,
|
|
|
На какой запрос не отвечает?
|