Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Программирование (http://zx-pk.ru/forumdisplay.php?f=14)
-   -   Очень и срочна!!! (http://zx-pk.ru/showthread.php?t=7949)

Sayman 25th June 2008 19:33

Очень и срочна!!!
 
Очень нада найти инфу по программированию АТа интерфейсов. в часности перевод LBA в CHS. если есть какие то исходники по подобному преобразованию, выкиньте здесь..очень.

savelij 25th June 2008 20:12

Quote:

Originally Posted by Sayman (Post 139426)
Очень нада найти инфу по программированию АТа интерфейсов. в часности перевод LBA в CHS. если есть какие то исходники по подобному преобразованию, выкиньте здесь..очень.

Вот формула, дальше наверно сам разберешься?

Sayman 25th June 2008 20:35

ещё сразу попутно вопрос:
предполодим есть винт....я не знаю что он умеет. я его подрубил. делаю проверку на на его способности путём определения его параметров....там кажется 512 байт считывается. кладём в буфер для разбора и сразу смотрим, поддерживает ли винт ЛБА. проверка по адресу буфера + #72 смещение. если там лежит 0, то винт ЛБА не умеет. тогда переходим к чтению параметров CHS (далее ЦГС - цилиндр голова сектор). отсуюда две ситуации предположим:
ситуация 1: винт поддерживает ЛБА. тогда конвертить все его параметры (собственно тупо адресация от нуля до последнего сектора -1 вроде как) соответственно при чтении или записи на винт ЛБА я просто кидаю их в регистры чтения/записи...т.е. вполне просто.
ситуация 2: винт не поддерживает ЛБА. читаем данные ЦГС. соответственно конвертить тоже ничего не нада, есть порты (регистры иде) соответствующие - кидаем или читаем прямо в этом формате...мне кажется что это должно сработать..или нет?!

savelij 25th June 2008 20:45

Quote:

Originally Posted by Sayman (Post 139442)
ещё сразу попутно вопрос:
предполодим есть винт....я не знаю что он умеет. я его подрубил. делаю проверку на на его способности путём определения его параметров....там кажется 512 байт считывается. кладём в буфер для разбора и сразу смотрим, поддерживает ли винт ЛБА. проверка по адресу буфера + #72 смещение. если там лежит 0, то винт ЛБА не умеет. тогда переходим к чтению параметров CHS (далее ЦГС - цилиндр голова сектор). отсуюда две ситуации предположим:
ситуация 1: винт поддерживает ЛБА. тогда конвертить все его параметры (собственно тупо адресация от нуля до последнего сектора -1 вроде как) соответственно при чтении или записи на винт ЛБА я просто кидаю их в регистры чтения/записи...т.е. вполне просто.
ситуация 2: винт не поддерживает ЛБА. читаем данные ЦГС. соответственно конвертить тоже ничего не нада, есть порты (регистры иде) соответствующие - кидаем или читаем прямо в этом формате...мне кажется что это должно сработать..или нет?!

Насколько помню где-то про Скорпион и SMUC было написано примерно так: врубаешь LBA и начинаешь читать все сектора с нуля. Если счетчик дойдет до 2 и более, то винт поддерживает LBA режим. Иначе нет. Примерно так, сам не проверял.

Sayman 25th June 2008 20:50

Quote:

врубаешь LBA и начинаешь читать все сектора с нуля
жоска...при опросе винта он кидает как минимум 255 байт данных...в смещении 72h указывается поддерживает ли винт лба или нет. кроме того. в смещениях 02 06 0b указаны параметры для цгс....но..в одной статье читал что почти все новые винты эти параметры не скидывают....т.е. по сути все новые винты 100% лба и читать параметры цгс не требуется. но мне не понятен факт существования формул. если винт поддерживает лба ну и читай пиши в лба...от 0 до последнего сектора...если нет, то все его параметры вот они пжалуста...пиши читай указывай нужные параметры ЦГС для чтения например и будет счастье...но чую что такая простая логика не приминима...вот и хочу точна узнать так это или нет.
---
поля B0h-FFh зарезервированы для ATA-6,7 и выше

savelij 25th June 2008 21:03

Quote:

Originally Posted by Sayman (Post 139446)
жоска...при опросе винта он кидает как минимум 255 байт данных...в смещении 72h указывается поддерживает ли винт лба или нет. кроме того. в смещениях 02 06 0b указаны параметры для цгс....но..в одной статье читал что почти все новые винты эти параметры не скидывают....т.е. по сути все новые винты 100% лба и читать параметры цгс не требуется. но мне не понятен факт существования формул. если винт поддерживает лба ну и читай пиши в лба...от 0 до последнего сектора...если нет, то все его параметры вот они пжалуста...пиши читай указывай нужные параметры ЦГС для чтения например и будет счастье...но чую что такая простая логика не приминима...вот и хочу точна узнать так это или нет.
---
поля B0h-FFh зарезервированы для ATA-6,7 и выше

Ты бы объяснил на что ссылаешься? Какие 255 байт? И какое смещение 72h? В секторе идентификации байт 49 бит 9 указывает на поддержку LBA и подтверждает действительность слов 60-61 (М. Гук, "Интерфейсы устройств хранения: ATA, SCSI и другие")

Error404 25th June 2008 21:07

Quote:

Originally Posted by Sayman (Post 139426)
Очень нада найти инфу по программированию АТа интерфейсов. в часности перевод LBA в CHS. если есть какие то исходники по подобному преобразованию, выкиньте здесь..очень.

У меня на страничке есть архив fat.zip. Там есть драйвер низкоуровневого доступа к IDE - программа idebdos с исходниками. В ней есть преобразование lba->chs (с настройкой на поддержку LBA), чтение identify дисков и т.д.
Также на страничке лежит спецификация на CompactFlash - в ней хорошо описаны режимы ATA (структуры, команды, результат), это подойдет и к HDD

Sayman 25th June 2008 21:19

я ссылаюсь на это:
http://www.wasm.ru/forum/viewtopic.php?id=13010
там ссылка есть на "Программирование ATA устройств"
прошлая ссылка не пашет...созранить через правую кнопку в меню сохранить как...)))
небольшая дока по ата интерфейсу. есть таблица "Поля идентификационной структуры"...
---
тьфу...и не 72 а 78...ёпть...
78h 4 Количество адресуемых секторов LBA. 0 – LBA не поддерживается

savelij 25th June 2008 21:40

Quote:

Originally Posted by Sayman (Post 139452)
я ссылаюсь на это:
http://www.argc-argv.relc.com/5_2003/article1.pdf
небольшая дока по ата интерфейсу. есть таблица "Поля идентификационной структуры"...
---
тьфу...и не 72 а 78...ёпть...
78h 4 Количество адресуемых секторов LBA. 0 – LBA не поддерживается

По твоей ссылке ничего не нашел. Посмотри вот это, может чем поможет.

Sayman 25th June 2008 21:42

Quote:

Originally Posted by savelij (Post 139458)
По твоей ссылке ничего не нашел. Посмотри вот это, может чем поможет.

я исправил ссылку.
и то что ты выложил это почти та же таблица только в иной форме...теже 256 байт...


All times are GMT +4. The time now is 21:50.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.