Взаимодействие с винтом через SATA

Тема в разделе "WASM.OS.DEVEL", создана пользователем int_13h, 4 окт 2010.

  1. int_13h

    int_13h New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    163
    Адрес:
    Красноряск
    В общем надо посылать харду АТА команды через Native SATA, нигде чтото не могу найти базовые адреса IDE регистров (считать из PCI conf. space?) ну допустим получу базовый адрес, структура управляющих регистров отличается от "старых" PATA-IDE контроллеров что висят на 0x1F0?.. в общем что бы почитать по теме? ...и насчёт AHCI - SATA я так понял там различия с "обычным" SATA?..
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Да. Отличие лгаси от натив в том что в натив алресса считываются из PCI а в легаси они известны.
    Такие же, хотя нюансы поведения есть.
    Да. Там уже структуры другие.
    Вики можно почитать. Можно даташиты от интел.
     
  3. int_13h

    int_13h New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    163
    Адрес:
    Красноряск
    Какие есть различия в поведении, например?..
     
  4. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Возможно, имеется ввиду пятый блок регистров BM* и специфика записи в регистры при 48-разрядной адресации.
     
  5. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Phantom_84
    Нет. Дело в том что Сата контроллер бывает с 2 разъемами для дисков и с 4.
    Так вот те которые с 2 ведут себя странным образом. Если обращаться по слейвам можно неожиданно найти мастер (зависит от контроллера). Отсюда если сата работает в легаси режиме и пата включен. Т.о идет комбинирование дисков. И могут быть конфликты. К примеру если сидром пата и сата диск на одном канале. Диск как мастер, а сидиром как слейв. То могут быть конфликты.

    А также сата переключает регистры странным образом. Походу контроллер кэширует регистры. Отсюда порой странное поведение и нужны паузы. Дальше советую взять драйвера от линукса их писали ребята из интел. Это должно пролить свет.


    Это было до саты. А да эмуляторы поддерживать 48 битную адресацию научились недавно, а до этого нагло делали ошибки.
     
  6. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Я думаю, что двухпортовые контроллеры просто не рассчитаны на работу с двумя устройствами на одном канале. Да, действительно PCI IDE появились до SATA-контроллеров, а LBA48 вроде бы уже в SATA. Но это не единственное расширение SATA. В SATA есть еще дополнительный блок регистров, который, правда, я не использую.
     
  7. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    LBA48 появилась в PATA задолго до появления SATA и успешно там работала и сейчас работает.
     
  8. int_13h

    int_13h New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    163
    Адрес:
    Красноряск
    А насчёт AHCI, как я понел там нету регистров в принципе, вернее есть, но не в I/O пространстве, а в памяти, таки извиняюсь за ламерский вопрос, но как таки создать страницу отображённую на нужную мне область физ. памяти?..

    upd: ось кстати вин ХР, я так думаю АПИшку какую нить из ring0 дёрнуть, в общем сорец бы... :)
     
  9. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    cppasm, можно подробнее, когда появился и где впервые описан.

    int_13h, из-под ХР лучше этого не делать. Для чистоты эксперимента используй самозагружаемую программу.
     
  10. int_13h

    int_13h New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    163
    Адрес:
    Красноряск
    Phantom_84 lba48 в PATA появился и описан в ATA/ATAPI6, вроде - там сначала младшие 28 бит адреса пишешь, потом в Device Control переключаешь HOB битик и старшие добиваешь - как то так примерно, подробности на t13.org, самозагружаемую прогу, да чёто не охота париться с инициализацией PM и страничной адресации - геммор сплошной :dntknw: ещё и бутлоадер писать под это дело...
     
  11. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Все верно ATA/ATAPI 6, стандартизирован в 2002. А когда появился SATA 1.0? Про 48-разрядную я все знаю, спасибо.

    Edited: адресацию
     
  12. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Под винды мороки будет еще больше. Возьми к примеру grub - будет тебе и PM, и загрузчик.
     
  13. int_13h

    int_13h New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    163
    Адрес:
    Красноряск
    да grub хорошая вещь, насчёт sata 1.0 точно не скажу, но у меня лично впервые две дырки сата в матери, появились в 2004 году примерно...