Привет всем! Ребята, подскажите, пожалуйста, хоть что нибудь путное типа листинги, код, примеры ссылки на них, чтобы хоть попробовать достучаться до SATA привода, типа на уровне портов IDE или PCI. С англиЦким дружу лишь по мере необходимости... доки и спецификации по SATA имеются, но очень мутно и тошно, ни хрена не вьезжаю... Может кто нить, хоть на пальцах раскажет, как HDD SATA люди юзают? INT 13(40) - не предлагать! Сунулся наивно прямиком на IDE порты, как раньше, а них просто нет! Одни 0xFF вычитываю
sata программно совместим с ide. В твоем случае очевидно проблема не в SATA/IDE, а в том, что контроллер в native mode (ежели на иде портах ничего нет). Там в принципе тоже самое, только базы для портов не фиксированы как раньше -- их надо брать из BAR'ов в pci conf соотв. контроллера (sata/ide). + работа с прерываниями немного изменилась. интеловский даташит на IDE контроллер: Intel® 82801EB (ICH5), 82801ER (ICH5R), 82801DB (ICH4), 82801CA (ICH3), 82801BA (ICH2), 82801AA (ICH), and 82801AB (ICH0) IDE Controller
Спасибо! В моем случае имеем 82801FАB (ICH6), PDF имею, смотрю. Любопытные вещи, думаю тут следующие: 10-13h PCMD_BAR Primary Command Block Base Address 14-17h PCNL_BAR Primary Control Block Base Address 18-1Bh SCMD_BAR Secondary Command Block Base Address 1C-1Fh SCNL_BAR Secondary Control Block Base Address 20-23h BAR Legacy Bus Master Base Address 24-27h ABAR AHCI Base Address ................... ................... 94-97h SIR SATA Initialization Register A0h SIR I SATA Indexed Registers Index A4h STRD SATA Indexed Register Dala _BC_, что нить конкретнее по ним можешь ещё сказать? Первых 4х строк для овладения(освоения реальных основ) достаточно будет 10h-1Fh? Или далее, по ходу надо еще будет цеплять, скажем какой то AHCI...? Если можно, очерти точнее зону для "раскопок" Спасибо!
для начала наверное надо б в обычном PIO, без прерываний и прочего до винта "достучаться", а там видно будет. Для этого баз портов (при уже инициализированном виндой контроллере) достаточно. AHCI я думаю еще не скоро популярным станет -- на данный момент даже хз когда придуманный ide native mode не получил особой популярности, саташный AHCI с такими темпами еще долго пробиваться будет. Пока ейная поддержка довольно херовенькая -- чтобы включить этот режим, надо (вроде как, сам не пробовал) переустанавливать винду, если просто поставить Intel Matrix Storage и включить в биосе опцию AHCI, то хп успешно не грузится, что не может не радовать. В висте вроде бы поддержка AHCI будет полноценной. added: хм... а что за FAB, м.б. FB/FR?
Ну если PIO, говоришь, должон быть, то из DOSяры буду пытаться стало быть. Бомбонул из бивиса INT 13, через который DOS успешно с ним (приводом) дружит, но разбираться там прилично... может че нить и узрю хотя бы в смысле этих баз. Видимо первопроходцем придется себя ощущать и методом проб и тыка :/ бороть. Смущает еще то, что они обзывают никак не иначе как блок, т.е. это, как бы два отдельных массива портов, надо понимать: Command Block Base Address и Control Block Base Address!? Выше опечатка, конечно 82801FB.
блоками их ATA-спецификация обозвала. Для command block это логично -- 8 регистров (1F0-1F7/170h-177h для legacy). Ну а для control block блок весьма сильно сказано -- один порт, на котором 2 регистра -- alternate status (на чтение) и device control (на запись). Остальные 3 из 4х не используются. В legacy mode (т.е. в обычном режиме ide) сей порт соответственно 3F6h/376h для primary/secondary. В native mode этот порт находится по смещению +2 от базового адреса control block'а соответствующего канала контроллера. Т.е. если SCNL_BAR в pci conf контроллера = A800h, то secondary alternate status узнается чтением порта A802h.
_BC_, огромное спасибо за внимание и участие! Почитаю еще, помозгую, засучу рукава и буду пробовать ;]