давеча писал код под контроллер USB с интерфесом OHCI. Значение регистра HcRevision=110h. Сейчас наткнулся на контроллер с тем же OHCI, но значение HcRevision=10h. Просмотрел спецификации, по регистрам все вроде бы совместимо, но ранее написанный код нормально не заработал. В управлении хостом ничего странного не заметно, инит девайсов на портах и их настройка проходит нормально, но возникают траблы при BULK транзакицях. Коды ошибок пока не анализировал, но такое впечатление будто при организации BULK обмена хабу и девайсам сносит башню напрочь, порой вплоть до установки бита LowSpeedDeviceAttached, хотя девайсы - Full Speed. В чем разница между этими версиями хостов? С виду все регистры не имеют никаких отличий, может разница в алгоритмах работы и управления?
Вобщем, вскрытие показало, что во время BULK IN транзакций иногда происходит прерывание по событию от хаба EnableStatusChange, событие, которое должно происходить при физической отстыковке устройств от хоста, хотя никакой отстыковки не было. Поставил вин98, попробовал на ней, на стандартных дровах тоже замечаются нестабильности. По докам, разницы в интерфейсах между OHCI 1.1 и OHCI 1.0 так и не нашел. Пришел к выводу - аппаратные глюки в корневом хабе. Действительно ли?