В общем надо посылать харду АТА команды через Native SATA, нигде чтото не могу найти базовые адреса IDE регистров (считать из PCI conf. space?) ну допустим получу базовый адрес, структура управляющих регистров отличается от "старых" PATA-IDE контроллеров что висят на 0x1F0?.. в общем что бы почитать по теме? ...и насчёт AHCI - SATA я так понял там различия с "обычным" SATA?..
Да. Отличие лгаси от натив в том что в натив алресса считываются из PCI а в легаси они известны. Такие же, хотя нюансы поведения есть. Да. Там уже структуры другие. Вики можно почитать. Можно даташиты от интел.
Возможно, имеется ввиду пятый блок регистров BM* и специфика записи в регистры при 48-разрядной адресации.
Phantom_84 Нет. Дело в том что Сата контроллер бывает с 2 разъемами для дисков и с 4. Так вот те которые с 2 ведут себя странным образом. Если обращаться по слейвам можно неожиданно найти мастер (зависит от контроллера). Отсюда если сата работает в легаси режиме и пата включен. Т.о идет комбинирование дисков. И могут быть конфликты. К примеру если сидром пата и сата диск на одном канале. Диск как мастер, а сидиром как слейв. То могут быть конфликты. А также сата переключает регистры странным образом. Походу контроллер кэширует регистры. Отсюда порой странное поведение и нужны паузы. Дальше советую взять драйвера от линукса их писали ребята из интел. Это должно пролить свет. Это было до саты. А да эмуляторы поддерживать 48 битную адресацию научились недавно, а до этого нагло делали ошибки.
Я думаю, что двухпортовые контроллеры просто не рассчитаны на работу с двумя устройствами на одном канале. Да, действительно PCI IDE появились до SATA-контроллеров, а LBA48 вроде бы уже в SATA. Но это не единственное расширение SATA. В SATA есть еще дополнительный блок регистров, который, правда, я не использую.
А насчёт AHCI, как я понел там нету регистров в принципе, вернее есть, но не в I/O пространстве, а в памяти, таки извиняюсь за ламерский вопрос, но как таки создать страницу отображённую на нужную мне область физ. памяти?.. upd: ось кстати вин ХР, я так думаю АПИшку какую нить из ring0 дёрнуть, в общем сорец бы...
cppasm, можно подробнее, когда появился и где впервые описан. int_13h, из-под ХР лучше этого не делать. Для чистоты эксперимента используй самозагружаемую программу.
Phantom_84 lba48 в PATA появился и описан в ATA/ATAPI6, вроде - там сначала младшие 28 бит адреса пишешь, потом в Device Control переключаешь HOB битик и старшие добиваешь - как то так примерно, подробности на t13.org, самозагружаемую прогу, да чёто не охота париться с инициализацией PM и страничной адресации - геммор сплошной ещё и бутлоадер писать под это дело...
Все верно ATA/ATAPI 6, стандартизирован в 2002. А когда появился SATA 1.0? Про 48-разрядную я все знаю, спасибо. Edited: адресацию
да grub хорошая вещь, насчёт sata 1.0 точно не скажу, но у меня лично впервые две дырки сата в матери, появились в 2004 году примерно...