Очень нада найти инфу по программированию АТа интерфейсов. в часности перевод LBA в CHS. если есть какие то исходники по подобному преобразованию, выкиньте здесь..очень.
Вид для печати
Очень нада найти инфу по программированию АТа интерфейсов. в часности перевод LBA в CHS. если есть какие то исходники по подобному преобразованию, выкиньте здесь..очень.
ещё сразу попутно вопрос:
предполодим есть винт....я не знаю что он умеет. я его подрубил. делаю проверку на на его способности путём определения его параметров....там кажется 512 байт считывается. кладём в буфер для разбора и сразу смотрим, поддерживает ли винт ЛБА. проверка по адресу буфера + #72 смещение. если там лежит 0, то винт ЛБА не умеет. тогда переходим к чтению параметров CHS (далее ЦГС - цилиндр голова сектор). отсуюда две ситуации предположим:
ситуация 1: винт поддерживает ЛБА. тогда конвертить все его параметры (собственно тупо адресация от нуля до последнего сектора -1 вроде как) соответственно при чтении или записи на винт ЛБА я просто кидаю их в регистры чтения/записи...т.е. вполне просто.
ситуация 2: винт не поддерживает ЛБА. читаем данные ЦГС. соответственно конвертить тоже ничего не нада, есть порты (регистры иде) соответствующие - кидаем или читаем прямо в этом формате...мне кажется что это должно сработать..или нет?!
жоска...при опросе винта он кидает как минимум 255 байт данных...в смещении 72h указывается поддерживает ли винт лба или нет. кроме того. в смещениях 02 06 0b указаны параметры для цгс....но..в одной статье читал что почти все новые винты эти параметры не скидывают....т.е. по сути все новые винты 100% лба и читать параметры цгс не требуется. но мне не понятен факт существования формул. если винт поддерживает лба ну и читай пиши в лба...от 0 до последнего сектора...если нет, то все его параметры вот они пжалуста...пиши читай указывай нужные параметры ЦГС для чтения например и будет счастье...но чую что такая простая логика не приминима...вот и хочу точна узнать так это или нет.Цитата:
врубаешь LBA и начинаешь читать все сектора с нуля
---
поля B0h-FFh зарезервированы для ATA-6,7 и выше
У меня на страничке есть архив fat.zip. Там есть драйвер низкоуровневого доступа к IDE - программа idebdos с исходниками. В ней есть преобразование lba->chs (с настройкой на поддержку LBA), чтение identify дисков и т.д.
Также на страничке лежит спецификация на CompactFlash - в ней хорошо описаны режимы ATA (структуры, команды, результат), это подойдет и к HDD
я ссылаюсь на это:
http://www.wasm.ru/forum/viewtopic.php?id=13010
там ссылка есть на "Программирование ATA устройств"
прошлая ссылка не пашет...созранить через правую кнопку в меню сохранить как...)))
небольшая дока по ата интерфейсу. есть таблица "Поля идентификационной структуры"...
---
тьфу...и не 72 а 78...ёпть...
78h 4 Количество адресуемых секторов LBA. 0 – LBA не поддерживается