ATA комманда возвращающая размер HDD в секторах

Тема в разделе "WASM.ELECTRONICS", создана пользователем int_13h, 27 июн 2009.

  1. int_13h

    int_13h New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    163
    Адрес:
    Красноряск
    Приветсвую всех, нужен сабж, по 0xEC в буффере размер винта не возвращается если верить ATA/ATAPI-6.. Есть ещё READ NATIVE MAX LBA думал то что нужно, возвращает бред, вобщем хелп.. Какой командой я могу получить размер ХДД в секторах?
     
  2. int_13h

    int_13h New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    163
    Адрес:
    Красноряск
    Вернее канеш READ NATIVE MAX LBA возвращает почти то что нужно на на несколько Гб больше к примеру для 10 Гб винта - 15, для 80 Гб - 87...
     
  3. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Разуй глаза с 121
    100-103 O V Maximum user LBA for 48-bit Address feature set.

    нормально все возвращается вот вики почитай

    http://wiki.osdev.ru/index.php/HDD
     
  4. int_13h

    int_13h New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    163
    Адрес:
    Красноряск
    я бы канеш и разул, а толку? В буффере по нолям один чёрт, если девайсина о 48 битных адресах даже не знает.
     
  5. int_13h

    int_13h New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    163
    Адрес:
    Красноряск
    Кстати винт как я понял нормально будет вопринимать 5в. уровни к примеру если я его к АТмеге подцеплю, касательно стробов DIOR/DIOW он регистр защёлкивает по спаду или по фронту?.. И ещё после подачи питалово на винт нужно ли его как нить инициализировать или сходу можно выбирать регистры и засылать комманды?
     
  6. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    int_13h
    Возьми ATA-1 там это както проще расписанно и понятнее. Хотя винты старши ATA/ATAPI-4 не совместимы с ATA-1,2,3.

    6.3.6 DIOR- (Drive I/O read)
    This is the Read strobe signal. The falling edge of DIOR- enables data from
    a register or the data port of the drive onto the host data bus, DD0-DD7 or
    DD0-DD15. The rising edge of DIOR- latches data at the host.
    6.3.7 DIOW- (Drive I/O write)
    This is the Write strobe signal. The rising edge of DIOW- clocks data from
    the host data bus, DD0-DD7 or DD0-DD15, into a register or the data port of
    the drive.

    Поповоду инициализации не скажу. Вроде как есть или она автоматом стартует. Но время инициализации насколько я знаю может состовлять от нескольких секунд до минуты.
     
  7. int_13h

    int_13h New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    163
    Адрес:
    Красноряск
    Pavia ага гляну первую ату, кстати бивис никто не реверсил?.. интересно как он определяет размер диска и показывает не 15 а 10 Гб как и положано, IDENTIFY DEVICE он дёргает в любом случае, или может по 0xEC есть какие то недокументированные структуры в буффере ибо READ NATIVE MAX ADDRESS не понял как юзать... кол-во секторов*512/(1024*1024*1024)=больше чем надо
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    int_13h
    Может ты в CHS запрашиваешь, а думаешь что LBA? У меня функция все нормально выдавала.

    Тут вспомнил что число секторов лежит в IDENTIFY DEVICE слова
    60-61 M F Total number of user addressable sectors

    Биос не реверсел. Есть же исходники. .
     
  9. int_13h

    int_13h New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    163
    Адрес:
    Красноряск
    Pavia Пасиб :) всё отлично пашет, 0xEC рулит.