Просмотр полной версии : Очень и срочна!!!
Очень нада найти инфу по программированию АТа интерфейсов. в часности перевод LBA в CHS. если есть какие то исходники по подобному преобразованию, выкиньте здесь..очень.
Очень нада найти инфу по программированию АТа интерфейсов. в часности перевод LBA в CHS. если есть какие то исходники по подобному преобразованию, выкиньте здесь..очень.
Вот формула, дальше наверно сам разберешься?
ещё сразу попутно вопрос:
предполодим есть винт....я не знаю что он умеет. я его подрубил. делаю проверку на на его способности путём определения его параметров....там кажется 512 байт считывается. кладём в буфер для разбора и сразу смотрим, поддерживает ли винт ЛБА. проверка по адресу буфера + #72 смещение. если там лежит 0, то винт ЛБА не умеет. тогда переходим к чтению параметров CHS (далее ЦГС - цилиндр голова сектор). отсуюда две ситуации предположим:
ситуация 1: винт поддерживает ЛБА. тогда конвертить все его параметры (собственно тупо адресация от нуля до последнего сектора -1 вроде как) соответственно при чтении или записи на винт ЛБА я просто кидаю их в регистры чтения/записи...т.е. вполне просто.
ситуация 2: винт не поддерживает ЛБА. читаем данные ЦГС. соответственно конвертить тоже ничего не нада, есть порты (регистры иде) соответствующие - кидаем или читаем прямо в этом формате...мне кажется что это должно сработать..или нет?!
ещё сразу попутно вопрос:
предполодим есть винт....я не знаю что он умеет. я его подрубил. делаю проверку на на его способности путём определения его параметров....там кажется 512 байт считывается. кладём в буфер для разбора и сразу смотрим, поддерживает ли винт ЛБА. проверка по адресу буфера + #72 смещение. если там лежит 0, то винт ЛБА не умеет. тогда переходим к чтению параметров CHS (далее ЦГС - цилиндр голова сектор). отсуюда две ситуации предположим:
ситуация 1: винт поддерживает ЛБА. тогда конвертить все его параметры (собственно тупо адресация от нуля до последнего сектора -1 вроде как) соответственно при чтении или записи на винт ЛБА я просто кидаю их в регистры чтения/записи...т.е. вполне просто.
ситуация 2: винт не поддерживает ЛБА. читаем данные ЦГС. соответственно конвертить тоже ничего не нада, есть порты (регистры иде) соответствующие - кидаем или читаем прямо в этом формате...мне кажется что это должно сработать..или нет?!
Насколько помню где-то про Скорпион и SMUC было написано примерно так: врубаешь LBA и начинаешь читать все сектора с нуля. Если счетчик дойдет до 2 и более, то винт поддерживает LBA режим. Иначе нет. Примерно так, сам не проверял.
врубаешь LBA и начинаешь читать все сектора с нуля
жоска...при опросе винта он кидает как минимум 255 байт данных...в смещении 72h указывается поддерживает ли винт лба или нет. кроме того. в смещениях 02 06 0b указаны параметры для цгс....но..в одной статье читал что почти все новые винты эти параметры не скидывают....т.е. по сути все новые винты 100% лба и читать параметры цгс не требуется. но мне не понятен факт существования формул. если винт поддерживает лба ну и читай пиши в лба...от 0 до последнего сектора...если нет, то все его параметры вот они пжалуста...пиши читай указывай нужные параметры ЦГС для чтения например и будет счастье...но чую что такая простая логика не приминима...вот и хочу точна узнать так это или нет.
---
поля B0h-FFh зарезервированы для ATA-6,7 и выше
жоска...при опросе винта он кидает как минимум 255 байт данных...в смещении 72h указывается поддерживает ли винт лба или нет. кроме того. в смещениях 02 06 0b указаны параметры для цгс....но..в одной статье читал что почти все новые винты эти параметры не скидывают....т.е. по сути все новые винты 100% лба и читать параметры цгс не требуется. но мне не понятен факт существования формул. если винт поддерживает лба ну и читай пиши в лба...от 0 до последнего сектора...если нет, то все его параметры вот они пжалуста...пиши читай указывай нужные параметры ЦГС для чтения например и будет счастье...но чую что такая простая логика не приминима...вот и хочу точна узнать так это или нет.
---
поля B0h-FFh зарезервированы для ATA-6,7 и выше
Ты бы объяснил на что ссылаешься? Какие 255 байт? И какое смещение 72h? В секторе идентификации байт 49 бит 9 указывает на поддержку LBA и подтверждает действительность слов 60-61 (М. Гук, "Интерфейсы устройств хранения: ATA, SCSI и другие")
Error404
25.06.2008, 20:07
Очень нада найти инфу по программированию АТа интерфейсов. в часности перевод LBA в CHS. если есть какие то исходники по подобному преобразованию, выкиньте здесь..очень.
У меня на страничке есть архив 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 не поддерживается
я ссылаюсь на это:
http://www.argc-argv.relc.com/5_2003/article1.pdf
небольшая дока по ата интерфейсу. есть таблица "Поля идентификационной структуры"...
---
тьфу...и не 72 а 78...ёпть...
78h 4 Количество адресуемых секторов LBA. 0 – LBA не поддерживается
По твоей ссылке ничего не нашел. Посмотри вот это, может чем поможет.
По твоей ссылке ничего не нашел. Посмотри вот это, может чем поможет.
я исправил ссылку.
и то что ты выложил это почти та же таблица только в иной форме...теже 256 байт...
я исправил ссылку.
и то что ты выложил это почти та же таблица только в иной форме...теже 256 байт...
Вообще то 256 слов, а не байт. Сектор на винте 512 байт или 256 слов.
Характеристики жесткого диска описываются 256 байтовой структурой,
например параметр "Серийный номер" описывается 20ю байтами...ну фиг знает....нада пробовать...
а сектор не факт что могет содержать именно все 512 байт...там и 1 байт записан может быть....
Характеристики жесткого диска описываются 256 байтовой структурой,
например параметр "Серийный номер" описывается 20ю байтами...ну фиг знает....нада пробовать...
а сектор не факт что могет содержать именно все 512 байт...там и 1 байт записан может быть....
То что я выложил: первый абзац снизу на первой странице. А там где написано как ты процитировал лучше выкинуть. На винте сектор равен 512 байт (256 слов) и это же касается идентификатора. Пока ты не заберешь из буфера винта 512 байт (256 слов) ты из винта ничего больше не извлечешь.
кароче как я и думал - значение #50 верно при проверке из регистра состояния. почему для кантроллера немо ктото делает проверку на #40 не совсем понял.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot