Сканирую порты на наличие винтов по портам с адресами 0xA000 0xB000 0xC000 0xFC00. В наличии 1 винчестер на разьеме сата 0 1 двд ром на разьеме сата 1 и 2 винчестера на разьемах сата 2 и сата 3. винты на сата 2 и сата 3 находяться тут же по адресации 0xA000 с дев битом 0 и 1 оба. Вопрос. Почему я не могу определить устройства на разьемах сата 0 и сата 1. (Они определяются не всегда интервал задержки увеличивал до нельзя). Если у кого есть опыт прошу помочь. Заранее благодарен.
У всех адресса разные. Нужный адресс надо читать из PCI CFG. По стандарту 60с. Хотя биос обычно ставит 15-30с и нормально определяет большенство винтов. Код кажи будем разбираться
Спасибо за совет. Вытавил задержку 60с все равно тоже самое. Более того на материнской плате 6 разьемов SATA. Парадокс заключаеться в том что я меняю винты и двд по разьемам и получаеться полный бред то находиться один то два то три. Такое ощущение что адреса портов плавают в зависимости от разьема в которые они воткнуты хотя до этого по их адресам они находились. Кроме того разьемы SATA4 SATA5 сканируються как IDE Secondary Master/Slave(170). Возможен ли вариант что Биос в зависимости от того как воткнуты винты сам определяет им свои адреса и при изменении их последовательности адреса меняються? Просто очень хочеться написать свой сканер портов для хардов универсальный. И второй вопрос. Как расчитывать зная основной адрес порта для харда адрес Device Control Register для задания HOB бита 48 битной аддресации. В АТА-6 надо было добавить 0х206. а как с сата винтами большинство которых АТА-8?
Да возможно. Но мало вероятно. Скорее всего вначале все порты распределяются. А потом одному или двум из них назначаются устаревшии порты IDE (170h ) Неври. Они считываются из PCI согласно спецификации PCI IDE. +2h от базы будет нужный регистр. А 206h смутно припоминаю что вроде было такое, но помойму это было до появления шины PCI. Неговоря уже про стандарт. Тут почитай. http://wiki.osdev.ru/index.php?title=HDD ATA тут непричем. Тут все отконтроллера диска относиться, а он подподает поддругии стандарты. И вовторых откуда большинство? ATA-8 был закончин в 2007 а то 2008, а SATA появился более чем 5 лет тому назад.