PDA

Просмотр полной версии : Работа с HDD!!!



Voxel
24.12.2010, 21:28
Люди помогите разобраться с HDD.

Интересует все что можно порты, команды и т.д. Примеры кода очень приветствуются!!!!

А то я парюсь и ни чего не выходит... И нет нормальной инфы по Немо HDD!!!
Кстате именно он пока и интересует так, как другого в Фениксе нет!

AAA
24.12.2010, 22:26
http://www.zxpress.ru/article.php?id=3075

http://www.zxpress.ru/print.php?id=8561

Вощем набери там в поиске: работа с винчестером

и читай.

Voxel
24.12.2010, 22:59
http://www.zxpress.ru/article.php?id=3075

http://www.zxpress.ru/print.php?id=8561

Вощем набери там в поиске: работа с винчестером

и читай.

Спасибо)
Я там смотрел... но ни нашел ни чего путнего... (хотя может слепой?)

Ссылка верхняя интересная... я ее эту статью пропустил так, как там СМУК описывается.... Но разницы то и нет... только порты разные....

Кто расскажет какие порты у НЕМО IDE??????

Может все таки у кого исходник есть, для разбора???

AAA
24.12.2010, 23:10
А тут посмотри: http://sderni.ru/37821

Voxel
25.12.2010, 11:18
AAA, Спасибо огромное)))

Sayman
29.12.2010, 11:33
по работе с АТА девайсами, лучше всего читать оригинальную документацию. порты портами, а логика работы остаётся той же.

Northwood
27.05.2012, 20:44
А тут посмотри: http://sderni.ru/37821

AAA, а можешь ещё раз этот файл выложить ? Теперь и мне понадобилась эта же документация, но файл уже удалён.

AAA
27.05.2012, 20:53
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.

AAA
27.05.2012, 20:58
Про работу с HDD через NemoIDE.

Вот вся папка хардваре из ностальгии, видимо это где то в ней.
http://files.mail.ru/HAGIF1

Northwood
27.05.2012, 21:05
Вот вся папка хардваре из ностальгии, видимо это где то в ней.
http://files.mail.ru/HAGIF1

Спасибо, буду разбираться.

Blade
27.05.2012, 21:07
Ну порты 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, ещё раз спасибо.

DimkaM
13.07.2012, 09:50
Вот тут кой чего писал:
http://zx-pk.ru/showpost.php?p=488218&postcount=29
так же могу дать готовый бинарник включающий в себя драйвер и fatfs (http://elm-chan.org/fsw/ff/00index_e.html)

alone
23.07.2012, 09:33
Берите готовые процедуры из 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 как-то получить? А если еще и сорцы, там вообще было б замечательно!