Как "взять за жабры" SATA интерфейс?

Тема в разделе "WASM.ELECTRONICS", создана пользователем VaStaNi, 18 сен 2006.

  1. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Привет всем!
    Ребята, подскажите, пожалуйста, хоть что нибудь путное типа листинги, код, примеры ссылки на них, чтобы хоть попробовать достучаться до SATA привода, типа на уровне портов IDE или PCI. С англиЦким дружу лишь по мере необходимости... доки и спецификации по SATA имеются, но очень мутно и тошно, ни хрена не вьезжаю... Может кто нить, хоть на пальцах раскажет, как HDD SATA люди юзают? INT 13(40) - не предлагать!
    Сунулся наивно прямиком на IDE порты, как раньше, а них просто нет! Одни 0xFF вычитываю :dntknw:
     
  2. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    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
     
  3. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Спасибо! В моем случае имеем 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...? Если можно, очерти точнее зону для "раскопок" :) Спасибо!
     
  4. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    для начала наверное надо б в обычном PIO, без прерываний и прочего до винта "достучаться", а там видно будет. ;) Для этого баз портов (при уже инициализированном виндой контроллере) достаточно.
    AHCI я думаю еще не скоро популярным станет -- на данный момент даже хз когда придуманный ide native mode не получил особой популярности, саташный AHCI с такими темпами еще долго пробиваться будет. Пока ейная поддержка довольно херовенькая -- чтобы включить этот режим, надо (вроде как, сам не пробовал) переустанавливать винду, если просто поставить Intel Matrix Storage и включить в биосе опцию AHCI, то хп успешно не грузится, что не может не радовать. ;) В висте вроде бы поддержка AHCI будет полноценной.

    added: хм... а что за FAB, м.б. FB/FR?
     
  5. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Ну если PIO, говоришь, должон быть, то из DOSяры буду пытаться стало быть. Бомбонул из бивиса INT 13, через который DOS успешно с ним (приводом) дружит, но разбираться там прилично... может че нить и узрю хотя бы в смысле этих баз. Видимо первопроходцем придется себя ощущать и методом проб и тыка :/ бороть.
    Смущает еще то, что они обзывают никак не иначе как блок, т.е. это, как бы два отдельных массива портов, надо понимать: Command Block Base Address и Control Block Base Address!?
    Выше опечатка, конечно 82801FB.
     
  6. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    блоками их 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.
     
  7. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    _BC_, огромное спасибо за внимание и участие! Почитаю еще, помозгую, засучу рукава и буду пробовать ;]