
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.218] |
![]() |
|
Страницы: (51) « Первая ... 5 6 [7] 8 9 ... 50 51 ( Перейти к последнему сообщению ) |
Сообщ.
#91
,
|
|
|
Ну и заодно вот это тоже
![]() Запускать батник, лог будет в pcilog.txt. Тоже сюда закинь... Прикреплённый файл ![]() |
Сообщ.
#92
,
|
|
|
vpm: Спасибо, большое спасибо. Хоть одной проблемой меньше стало, оказывается 23 и 25 это почти одно и тоже, наверное зависит от версии Windows-а.
cppasm: это лог от pci.exe, остальное где то через час. Прикреплённый файл ![]() |
Сообщ.
#93
,
|
|
|
Это лог от ohci.exe
Detecting OHCI USB Controllers... 1 OHCI USB Controller(s) detected OHCI 0: PCI 00-13-0, VID=0E11h, DID=A0F8h, MM_BASE=E0004000h, IRQ=11 -= Initializing Host Controller #0=- Reset HC: Ok Start HC, turn on power Detecting USB Devices... Device Enumeration HC #0, nports=92 port=2906, no device [00000100] port=2906, no device [00000100] >>> 0 devices detected <<< USB Device not detected. И зависает... А иногда дает такой лог: Detecting OHCI USB Controllers... 1 OHCI USB Controller(s) detected OHCI 0: PCI 00-13-0, VID=0E11h, DID=A0F8h, MM_BASE=E0004000h, IRQ=11 -= Initializing Host Controller #0=- Reset HC: Ok Start HC, turn on power Detecting USB Devices... Device Enumeration HC #0, nports=92 port=2906, no device [00000100] port=2906, port=22 [00010101], reset=OK set addr =>50000000 50000000 50000000 no answer, abort >>> 0 devices detected <<< USB Device not detected. И опять зависает... |
Сообщ.
#94
,
|
|
|
Прощу прощения за вторжение. Нужна помощь в следующем вопросе. Пишу драйвер USB-host для philips isp1161A, на не-intel архитектуре, планирую читать USB-flash. С микросхемой разобрался, документацию с usb.org и t10.org прочел, с протоколами тоже вроде разобрался, флешки опознаю, дескрипторы читаю. Столкнулся с неожиданной проблемой - на стадии bulk only transfer нормально не проходит больше одной транзакции (то есть CBW - данные - CSW). При попытке следующей запись в out_endpoint проходит нормально, а чтение из in_endpoint - все время NAK. на одной из флешей, с которыми экспериментировал, помогает постоянная (после каждой транзакции) разблокировка out_endpoint(!) с помощью clear_feature(halt), на других и это не помогает. форматы всех пакетов проверял сто раз, вроде все правильно, никаких замечаний, все поля соответствуют - но отакое ощущение, что где-то чего-то не хватает. Анализатора пакетов под рукой (и вообще где-бы то ни было) нету
Может у кого-то есть идеи на этот счет? |
Сообщ.
#95
,
|
|
|
Идея есть, у меня была похожая трабла, пока (благодаря cppasm'у) я не разобрался с триггером посылок! триггер должен меняться постоянно и для каждой точки отдельно. Т.е. прошла посылка CBW из 3 пакетов, начальный триггер был DATA0 (DATA0-DATA1-DATA0), тогда следующая посылка начнется с триггера DATA1. И так для IN и OUT точек отдельно.
|
Сообщ.
#96
,
|
|
|
Цитата sergik_vrn @ форматы всех пакетов проверял сто раз Проверь в 101-й раз биты DATA0/DATA1. И ещё правильность всех полей в CBW. У меня ISP1760. |
Сообщ.
#97
,
|
|
|
да вроде бы все-таки не в этом дело, т.к. триггеры-то я считаю, причем когда data toggle не совпадает, хост ругается понятным образом - ошибку возвращает. а тут ваще фигня какая-то...
да, кстати. при посылке CBW toggle должен быть обнулен или взят из предыдущего OUT-пакета? то есть, все они тупо toggle-атся до бесконечности? |
Сообщ.
#98
,
|
|
|
из предыдущего пакета!
|
Сообщ.
#99
,
|
|
|
щас попробовал. похоже, я чего-то не понимаю, но out_endpoint ваще плевала на toggle. если я первую посылку (CBW) отправляю c toggle = 1 она все равно ведет себя так же. отвечает нормально, отдает все вплоть до CSW, а потом затыкается. странно. еще раз уточню на всякий случай. независимо от протокола (CBW, CSW) toggle-биты должны строго чередоваться по порядку по каждой контрольной точке bulk отдельно, я правильно понял?
|
Сообщ.
#100
,
|
|
|
да
|
Сообщ.
#101
,
|
|
|
нашел ошибку! действительно data toggle
![]() ![]() |
Сообщ.
#102
,
|
|
|
Извини что надоедаю, попробуй ещё это...
Думаю может хоть виснуть перестанет. Над детектом счас думаю. Выходит статус транзакции 5 - DEVICENOTRESPONDING. У меня такое было когда ресет порта не проходил - устройство 0 адрес не получало. Наверное или со сбросом порта что-то или с установкой питания. Прога в аттаче... PS: а если не военная тайна как ты сброс порта делаеш? У меня так: ![]() ![]() // Clear Port Status Change bits. writed(hc[i].base+port,0x001F0000); // Reset Port of USB Controller. writed(hc[i].base+port,0x00000010); // Wait for reset completition. for(k=0;k<50;k++) { if(readd(hc[i].base+port) & 0x00100000) break; delay(1); } printf("%s\n",k>=50 ? "FAIL" : "OK"); // Clear Port Status Change bits. writed(hc[i].base+port,0x001F0000); Добавлено Цитата sergik_vrn @ нашел ошибку! действительно data toggle излюбленные грабли ![]() Добавлено PRT Как я понимаю второй лог был с подключённым устройством? Прикреплённый файл ![]() |
Сообщ.
#103
,
|
|
|
Лог такой:
Detecting OHCI USB Controllers... 1 OHCI USB Controller(s) detected OHCI 0: PCI 00-13-0, VID=0E11h, DID=A0F8h, MM_BASE=E0004000h, IRQ=11 -= Initializing Host Controller #0=- Reset HC: Ok Start HC, turn on power Detecting USB Devices... Device Enumeration HC #0, nports=92 port=2906, no device [00000100] port=2906, port=22 [00010101], reset=OK [00100103] set addr =>50000000 50000000 50000000 no answer, abort >>> 0 devices detected <<< USB Device not detected. И зависает... Но если загружен usbaspi.sys, программа работает Сброс порта делаю так: // Reset Port. writed(port,0x00010111); delay(50); // Enable Port. writed(port,0x00010113); delay(50); |
Сообщ.
#104
,
|
|
|
Цитата PRT @ Лог такой Эээ... А это лог не от последней версии проги ![]() На всякий случай аттачу ещё раз. А насчёт того что у меня устройства не детектятся я вроди косяк нашёл... Выходит контроллер не полностью спецификации соответствует. Цитирую: PortEnableStatus This bit indicates whether the port is enabled or disabled. The Root Hub may clear this bit when an overcurrent condition, disconnect event, switched-off power, or operational bus error such as babble is detected. This change also causes PortEnabledStatusChange to be set. HCD sets this bit by writing SetPortEnable and clears it by writing СlearPortEnable. This bit cannot be set when CurrentConnectStatus is cleared. This bit is also set, if not already, at the completion of a port reset when ResetStatusChange is set or port suspend when SuspendStatusChange is set. 0 = port is disabled 1 = port is enabled А тут выходит после ресета инэйбл не ставится, а сам я его не делал... Вот устройство и не отвечает... А прогу из этого поста всё-таки попробуй плз, виснуть не должна. Это я в первом варианте ошибку сделал - дописывал на быструю руку и в printf не все аргументы написал, потом со стеком проблемы и вылазят. Прикреплённый файл ![]() |
Сообщ.
#105
,
|
|
|
Попробовал последнюю програму(уверен):
Detecting OHCI USB Controllers... 1 OHCI USB Controller(s) detected OHCI 0: PCI 00-13-0, VID=0E11h, DID=A0F8h, MM_BASE=E0004000h, IRQ=11 -= Initializing Host Controller #0=- Reset HC: Ok Start HC, turn on power Detecting USB Devices... Device Enumeration HC #0, nports=2 port=0, no device [00000100] port=1, no device [00000100] >>> 0 devices detected <<< USB Device not detected. |