|
|
  |
IDE не по назначению, нужен совет |
|
|
|
Oct 24 2006, 04:54
|
Местный
  
Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957

|
Попробовал побаловаться с IDE портом. Пробовал записывать считывать что-нибудь в регистр данных, на шлейфе на осциллографе никаких сигналов. (Шлейф вторым концом никуда не подключен). Означает ли это, что если устройство физически не обнаружено в каком то канале, то регистры этого канала отключаются? Считывание регистра ошибок на таком шлейфе дало 8E (или E8, точно уже не помню), когда подключил к сидюку, ошибка 18 в регистре. Чтение данных всегда давало слово 0x0000FFFF. И присоединяюсь к предыдущему посту, может кто-то кинет кусок живой схемы.
Еще вопросы по ходу разбирательства: 1. Откуда ни шине берутся сигналы DIOR-, DIOW-, Reset, т.е. по какому алгоритму они формируются при записи команды в регистр команд? 2. Откуда берутся сигналы BSY, DRDY, DRQ готовности устройства, если на шине вроде присутствует один сигнал IORDY? 3. Если подключен не жесткий диск, а что то другое, все равно надо считывать с устройства 512 байт, как с сектора или необязательно?
Я понимаю, чтто все это как то описано в стандарте, но пока я в двух томах не разобрался, особенно с графами состояний, может кто на пальцах объяснит простейший PIO обмен.
Очередное добавление (пока разговор самого с собой). Я видимо заблуждаюсь в корне и все эти регистры находятся непосредственно на устройстве. Комп предоставляет только адресное пространство и транслирует адреса 1F0-1F7 (170-177) в сигналы CS0, CS1, DA0-DA2 шины IDE.
--------------------
Обычно последним смеется тот, кто хуже соображает!
|
|
|
|
|
Oct 25 2006, 04:49
|
Местный
  
Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957

|
Подвожу итог вчерашним размышлениям (старый посто не удаляю, вдруг кто то еще решит пойти по этому пути). Главный вывод - IDE это просто скоростной двунаправленный 16 разрядный порт с 5 разрядной адресацией внешних устройств с некоторыми дополнительными сигналами, которые в данном контексте можно вообще не рассматривать. Если вы не делаете аналог жесткого диска, то этой информации достаточно. Все регистры и все команды относятся уже к устройству, подключенному к шине. Но в этом режиме добиться времени цикла менее 1 мкс невозможно, так как контроллер IDE, не обнаружив диска и информации о нем, оставляет режим обмена по умолчанию - PIO0 с временем цикла 600 нс. Для более скоростной работы надо ставить активное внешнее устройство, практически эмулировать HDD. Тогда можно загнать контроллер в режим более скоростной, или вообще обеспечить режим DMA. Но тут уже нужны ПЛИС.
--------------------
Обычно последним смеется тот, кто хуже соображает!
|
|
|
|
|
Oct 31 2006, 19:11
|

Участник

Группа: Новичок
Сообщений: 17
Регистрация: 29-10-05
Пользователь №: 10 268

|
Оперируя терминами книги: В. Кулаков Программирование на аппаратном уровне. (хттп://rapidshare.de/files/4565817/kulakov.rar.html - еще рабочая ссылка),
следует чтобы IDE-устройство корректно отвечало на ОБЯЗАТЕЛЬНУЮ комманду IDENTIFY_DEVICE Таблица 6.43 (единственная служебная команда в режиме PIO (ввод данных PI)). По этой команде устройство должно передать МЕГА пачку данных аж из 256 2х байтных слов (Таблица 6.44). Так ли я понимаю?
И еще вопросик?
Номер комманды IDE-устройство принимает по шине данных при состоянии служебных проволок CS0#=0 CS1#=1 DA2=1 DA1=1 DA0=1 (Уже в терминах книги Гука)?
И Где можно найти временные диаграммы этих служебных сигналов в совокупности с другими.
З.Ы. Книгу Гука (толстенную такую, 2006 г.) можно нарыть тут: хттп://rapidshare.de/files/34181115/apparatnie_sretstva_ibm_warezteam.ws.rar - еще рабочая ссылка
--------------------
"Слабые места любого проекта любят собираться в группы" - Пятый закон проектирования. "Двусмысленность инвариантна" - Принцип неопределенности Хартца. Законы мерфи (с) А. БЛОХ.
|
|
|
|
|
Oct 31 2006, 20:40
|
Участник

Группа: Свой
Сообщений: 37
Регистрация: 9-08-05
Из: The Netherlands
Пользователь №: 7 477

|
Цитата(Coryphae @ Oct 31 2006, 23:11)  И Где можно найти временные диаграммы этих служебных сигналов в совокупности с другими. В совокупности со ВСЕМИ другими можно найти тут: www.t13.org Например: http://www.t13.org/project/d1410r3b-ATA-ATAPI-6.pdf страница 374 в документе (388 по Акробату) и дальше. Цитата(Coryphae @ Oct 31 2006, 23:11)  следует чтобы IDE-устройство корректно отвечало на ОБЯЗАТЕЛЬНУЮ комманду IDENTIFY_DEVICE Таблица 6.43 (единственная служебная команда в режиме PIO (ввод данных PI)). По этой команде устройство должно передать МЕГА пачку данных аж из 256 2х байтных слов (Таблица 6.44). Так ли я понимаю? Совершенно верно. Именно на основании информации из этой "МЕГА пачки" хост может применить к устройству режим интерфейса отличный от PIO MODE 0. Команда IDENTIFY DEVICE (ECh) является далеко не единственной служебной и обязательной для режима PIO. В этом Вы можете легко убедиться в упомянутом выше документе на странице 476 (490 по Акробату), где расположена сводная таблица кодов комманд. Команды M = Mandatory обязательны к исполнению (по крайней мере - необходимо рапортовать хосту об их успешном выполнении). В противном случае хост может "заподозрить" Ваше устройство в "странном" поведении и  опять PIO MODE 0.
|
|
|
|
|
Nov 1 2006, 14:43
|

Участник

Группа: Новичок
Сообщений: 17
Регистрация: 29-10-05
Пользователь №: 10 268

|
2 AlexB, У меня была простая логика (может я ошибаюсь - вы поправите): Раз изначально хост контроллер работает в режиме PIO, то для инициализации он может оперировать только коммандами с признаками PI, PO (по таблице 6.43). Единственной обязательной СЛУЖЕБНОЙ коммандой (не относящейся, непосредственно, к чтению/записи) является IDENTIFY DEVICE (ECh). И если необходимо инициализировать IDE-устройство в любом из PIO режимов, то оно должно корректно обработать эту комманду. А далее (возможно, что это лишь мечта) можно производить чтение/запись (не блочно) программно при помощи комманд REP OUTS/REP INS по соответствующему порту регистра данных. Конечно же чтении/записи IDE-устройство должно правильно отрабатывать сигналы по линиям CS0# CS1# DA2 DA1 DA0, и DIOR# DIOW# IORDY
Насчет "может "заподозрить" " можно подробнее....
--------------------
"Слабые места любого проекта любят собираться в группы" - Пятый закон проектирования. "Двусмысленность инвариантна" - Принцип неопределенности Хартца. Законы мерфи (с) А. БЛОХ.
|
|
|
|
|
Nov 1 2006, 17:19
|
Участник

Группа: Свой
Сообщений: 37
Регистрация: 9-08-05
Из: The Netherlands
Пользователь №: 7 477

|
2 Coryphae: Вы пишите программу для работы с ATA устройством или Вы разрабатываете ATA устройство? В первом случае творение гражданина Кулакова, вероятно, является достаточным источником информации (если закрыть глаза на "рядовых пользователей", коими он видит своих читателей). Применяете IDENTIFY DEVICE (ECh) "при запуске программы", определяете наличие устройства и его параметры, а дальше с чистой совестью читаете или пишите данные понравившимся способом. Если же Вы разрабатываете ATA устройство, то изучение http://www.t13.org/project/d1410r3b-ATA-ATAPI-6.pdf Вам просто необходимо на начальном этапе. Цитата(Coryphae @ Nov 1 2006, 18:43)  Насчет "может "заподозрить" " можно подробнее.... IDENTIFY DEVICE (ECh) не является единственной служебной командой. Есть ещё команды с признаком ND. Их в таблице 6.43 пять штук. И каждая из них имеет свой набор данных, обмен которыми происходит при помощи регистров ATA устройства. Если устройство не отвечает на эти комманды или отвечает неправильно, то хост, вероятнее всего, сделает вывод, что устройство неисправно со всеми вытекающими.
|
|
|
|
|
Nov 2 2006, 08:12
|

Участник

Группа: Новичок
Сообщений: 17
Регистрация: 29-10-05
Пользователь №: 10 268

|
Цитата 2 Coryphae: Вы пишите программу для работы с ATA устройством или Вы разрабатываете ATA устройство? Я разрабатываю устройство IDE, точнее пытаюсь задействовать IDE согласно САБЖу, ибо, IDE пока везде есть и имеет достаточную для меня скорость. Задаю так много вопросов, т.к. пока нет возможности проверить на практике (железо в прожекте), ну, и конечно, сужаю область поиска. Цитата IDENTIFY DEVICE (ECh) не является единственной служебной командой. Есть ещё команды с признаком ND. Их в таблице 6.43 пять штук. За это спасибо, как то не досмотрел. Цитата В принципе, я тут посидел, подумал, имитировать наличие устройства с PIO > 0 можно и не на ПЛИС, а микроконтроллере. В принципе можно, но если делать на ПЛИС, то можно, вероятно, привинтить ПЗУ через ПЛИС для передачи "МЕГА пачки". Все остальные комманды придется по-любому отрабатывать в быстрых режимах на ПЛИС.
--------------------
"Слабые места любого проекта любят собираться в группы" - Пятый закон проектирования. "Двусмысленность инвариантна" - Принцип неопределенности Хартца. Законы мерфи (с) А. БЛОХ.
|
|
|
|
|
Nov 10 2006, 22:08
|

Участник

Группа: Новичок
Сообщений: 17
Регистрация: 29-10-05
Пользователь №: 10 268

|
Кто-нибудь рассматривал возможность начальной "насильственной" конфигурации хоста IDE при помощи настроек BIOS'а? Может и не надо передавать эту "МЕГА пачку"? ЗЫ Сомневаюсь в современных мат. платах. Они могут "передумать" еще много раз во время загрузки системы, и сбросить host. Хотя с платами 1ых пентиумов, где уже встречаются UDMA33, возможно, что-то может получиться =\
Сообщение отредактировал Coryphae - Nov 10 2006, 22:10
--------------------
"Слабые места любого проекта любят собираться в группы" - Пятый закон проектирования. "Двусмысленность инвариантна" - Принцип неопределенности Хартца. Законы мерфи (с) А. БЛОХ.
|
|
|
|
|
Nov 19 2006, 21:25
|

Участник

Группа: Новичок
Сообщений: 17
Регистрация: 29-10-05
Пользователь №: 10 268

|
Был проведен следующий эксперимент: в BIOSе мат. платы для PIII (точно не знаю какой) принудительно менялись режимы Secondary Master канала, в отсутствие каких либо устройств на шлейфе. Даже устанавливался режим (disable Secondary Master). Производилась запись двубайтного слова в порт 0х170. Контроль записи производился осциллографом по линии d[7] (3 нога разъема IDE уст-ва). Результаты: В любом режиме, установленном в BIOSe, в отсутствие устройств, IDE-host переходил в режим PIO-0. Вывод об установленном режиме делался на основе длительности бита, установленного на линии, которая, почему-то, составляла 1 мкс.
Сообщение отредактировал Coryphae - Nov 19 2006, 21:27
--------------------
"Слабые места любого проекта любят собираться в группы" - Пятый закон проектирования. "Двусмысленность инвариантна" - Принцип неопределенности Хартца. Законы мерфи (с) А. БЛОХ.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|