Просмотр полной версии : Работа с HDD!!!
Люди помогите разобраться с HDD.
Интересует все что можно порты, команды и т.д. Примеры кода очень приветствуются!!!!
А то я парюсь и ни чего не выходит... И нет нормальной инфы по Немо HDD!!!
Кстате именно он пока и интересует так, как другого в Фениксе нет!
http://www.zxpress.ru/article.php?id=3075
http://www.zxpress.ru/print.php?id=8561
Вощем набери там в поиске: работа с винчестером
и читай.
http://www.zxpress.ru/article.php?id=3075
http://www.zxpress.ru/print.php?id=8561
Вощем набери там в поиске: работа с винчестером
и читай.
Спасибо)
Я там смотрел... но ни нашел ни чего путнего... (хотя может слепой?)
Ссылка верхняя интересная... я ее эту статью пропустил так, как там СМУК описывается.... Но разницы то и нет... только порты разные....
Кто расскажет какие порты у НЕМО IDE??????
Может все таки у кого исходник есть, для разбора???
А тут посмотри: http://sderni.ru/37821
по работе с АТА девайсами, лучше всего читать оригинальную документацию. порты портами, а логика работы остаётся той же.
Northwood
27.05.2012, 20:44
А тут посмотри: http://sderni.ru/37821
AAA, а можешь ещё раз этот файл выложить ? Теперь и мне понадобилась эта же документация, но файл уже удалён.
AAA, а можешь ещё раз этот файл выложить ? Теперь и мне понадобилась эта же документация, но файл уже удалён.
А про что было? Я прочел тему и не понял что я при крепил
Northwood
27.05.2012, 20:54
А про что было? Я прочел тему и не понял что я при крепил
Про работу с HDD через NemoIDE.
Ну порты NemoIDE я уже выяснил по схеме:
#18, #38, #58, #78, #98, #B8, #D8, #F8
#19, #39, #59, #79, #99, #B9, #D9, #F9
Ещё выяснил, что при записи 16-разрядного числа в HDD сначала надо записывать младший байт по портам X9, затем старший байт по портам X8, аналогично и при чтении, только младший байт по портам X8, а старший байт по портам X9.
Про работу с HDD через NemoIDE.
Вот вся папка хардваре из ностальгии, видимо это где то в ней.
http://files.mail.ru/HAGIF1
Northwood
27.05.2012, 21:05
Вот вся папка хардваре из ностальгии, видимо это где то в ней.
http://files.mail.ru/HAGIF1
Спасибо, буду разбираться.
Ну порты NemoIDE я уже выяснил по схеме:
Порты не совсем такие: #10,#11,#30,#50,#70,#90,#B0,#C8,#D0,#F0
Northwood
27.05.2012, 21:09
Порты не совсем такие: #10,#11,#30,#50,#70,#90,#B0,#C8,#D0,#F0
Спасибо, буду иметь ввиду, хотя на семе контроллера NemoIDE бит А3 не используется.
P.s. А3 используется для выборки винчестера сигналом CS0... протупил, значит А3 при обращении к портам NemoIDE должен быть в 0, ещё раз спасибо.
Вот тут кой чего писал:
http://zx-pk.ru/showpost.php?p=488218&postcount=29
так же могу дать готовый бинарник включающий в себя драйвер и fatfs (http://elm-chan.org/fsw/ff/00index_e.html)
Берите готовые процедуры из HDDoctor: http://alonecoder.nedopc.com/zx/HDDOCT12.rar
Сами вы времянки и обработку ошибок не отладите, если не попробуете десяток разных винтов. Или ваша программа не будет работать где-нибудь. Официальной документации по ATA/ATAPI недостаточно - там многие тонкости не описаны, тем более что она определяет работу устройств, а не компьютера.
Northwood
02.05.2013, 12:56
Может кому пригодится, в доках по Спектруму найти этого не удалось, может плохо искал, а может этого и нету.
Полностью описывать регистры HDD не вижу смысла, предполагаю что люди, кто пытается освоить HDD, уже разобрались с инициализацией HDD и с адресацией к дисковому пространству по CHS, опишу лишь различия, необходимые для адресации по LBA, все номера портов буду приводить в соответствии с NemoIDE:
1) После успешной инициализации винчестера, сначала необходимо получить инфу о размере дискового пространства винчестера, подав команду "Identify Drive":
В результате из буфера секторов мы получим 512 байт данных, в которых среди кучи информации (в том числе и название фирмы, модели и прошивки HDD, а так же кроме кол-ва цилиндров, головок и секторов на дорожке по стандарту CHS) будет ещё 32-битное число - количество доступных блоков, т.е. секторов по 512 байт, при объеме HDD до 120 Гб, это число занимает до 28 бит. Грубо говоря, нас интересуют эти 4 байта, и находятся они по смещению #0078, #0079, #007A и #007B от начала блока данных, (если принять во внимание, что данные представлены в виде 2-байтовых слов, то это слово №60 и 61.
Далее, для того чтобы использовать режим LBA, необходимо при выборе привода включить бит LBA в регистре "Привод / Поверхность":
Регистр "Привод / Поверхность" (порт #D0):
7 6 5 4 3 2 1 0
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬── ───┐
│ 1 │ LBA │ 1 │ DRV │ HS3 │ HS2 │ HS1 │ HS0 │
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴── ───┘
- LBA - бит режима LBA. Если LBA=0, то выбран режим CHS,
если LBA=1, то выбран режим LBA.
- DRV - бит выбора накопителя. Если DRV=0, то выбран накопитель
0, если DRV=1, то выбран накопитель 1.
- HS3...HS0, в режиме CHS содержат двоичный код номера головки (начиная с ну-
ля), которая будет выбрана. Hапример, если HS3...HS0=0011b,
то будет выбрана головка 3. HS3 - старший бит. После заверше-
ния команды, этот регистр модифицируется и всегда содержит
текущий номер выбранной головки.
- HS3...HS0, в режиме LBA содержат первые 4 бита
самого старшего байта № 3 номера блока LBA, т.е. биты 24-27 указателя
блока LBA.
Байт №2 указателя блока LBA, т.е. биты 16-23, нужно отправлять в регистр "Цилиндр, старшая часть" (порт #B0)
Байт №1 указателя блока LBA, т.е. биты 8-15, нужно отправлять в регистр "Цилиндр, младшая часть" (порт #90)
Самый младший байт №0 указателя блока LBA, т.е. биты 0-7, нужно отправлять в регистр "Номер сектора" (порт #70).
Во всём остальном (коды команд чтения и записи, ожидание готовности, обработка ошибок) не отличается от чтения и записи в режиме CHS.
Максагор
05.05.2013, 03:16
Вот тут кой чего писал:
http://zx-pk.ru/showpost.php?p=488218&postcount=29
так же могу дать готовый бинарник включающий в себя драйвер и fatfs (http://elm-chan.org/fsw/ff/00index_e.html)
А можно сей бинарник вкупе с FAT-FS как-то получить? А если еще и сорцы, там вообще было б замечательно!
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot