Mikae
Зарегистрирован: 18.01.2006 Сообщения: 4
|
Добавлено: Вт, 27 Ноя, 2007 16:53 Заголовок сообщения: HDD detection |
|
|
Мое почтение всем.
Прошу прощения за возможный кросс-постинг (тема уже была здесь), но ответа нет .
Играю с винчестером, хочу для начала определить наличие устройств на канале, убив, при этом, двух зайцев: и стандарту соответствовать и реальному поведению винчестеров.
Сначала думал использовать команду EXECUTE_DEVICE_DIAGNOSTICS. Но, похоже, придется от этого отказаться, т.к. команда говорит лишь о том, что Device1 "болен" и молчит в случае, если все в порядке или устройства нет.
Проблема осложняется тем, что при отсутствии Device1 за него может ответить Device0. Т.е. как я понял, возможна такая ситуация: пишем значение в регистр Device1, значение попадает в Device0. Затем считываем это же значение из Device1, но чтение происходит из Device0. Исключение составляют регистры статусов -- если читать их из Device1 и Device1 отсутствует, то вернется 0; и регистр команд -- запись команды в отсутствующее устройство игнорируется. Можно воспользоваться этими свойствами и найти команду, которая должна изменить регистр статуса. Если Device1 отсутствует, то запись в регистр команд будет проигнорирована, а чтение из регистра статуса несуществующего устройства вернет 0. Порыскав по командам, нашел наиболее подходящей IDENTIFY_DEVICE. Ошибок у нее нет + она должна установить DRQ. Вроде бы и по стандарту и должно работать.
Однако, это не решает проблем Device1 only конфигураций. Стандартом поведение такой конфигурации не описано, но вместе с тем они встречаются (у меня когда-то такое было) и работают.
В связи с этим вопросы:
1. Правильно ли я понял стандарт?
2. Есть ли более элегантные способы определения конфигурации?
3. Что делать с Device1 only конфигурациями?
Если не трудно, ответьте поподробнее, я в этих вопросах пока плаваю.
Заранее благодарен. |
|