реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> IDE не по назначению, нужен совет
Георгий
сообщение Oct 24 2006, 04:54
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 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.


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
Георгий
сообщение Oct 25 2006, 04:49
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



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


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
Coryphae
сообщение Oct 27 2006, 21:56
Сообщение #18


Участник
*

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



2 altmer, прошу вас описать что у вас заработало и как после того, как вы все ноги данных подтянули. Особенно интересует: какие минимальные "телодвижения" со стороны IDE устройства необходимо выполнить, чтоб IDE-Host вошел в режим, хотябы PIO4; возможно ли после инициализации хоста БИОСом его программное переконфигурирование; если IDE устройства отсутствуют на шлейфе, то в какой режим входит хост...
Go to the top of the page
 
+Quote Post
Георгий
сообщение Oct 30 2006, 05:35
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



Частично ответ в моем предыдущем посте, а минимально надо дать ответ хосту на запрос информации о диске, что он поддерживает DMA или PIO4(5), даже если самого диска нет, но ответ такой надо сформировать. В настоящий момент над этим работаю.
Еще наверно можно грубо влезть в регистры контроллера IDE, но у меня пока нет такой информации.
Altmer, похоже, сюда уже не заглядывает.


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
Георгий
сообщение Oct 30 2006, 11:37
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



Обнаружился еще один, достаточно простой вариант - между шиной IDE и внешними устройствами подключается двунаправленный шинный формирователь на два устройства. По умолчанию при включении питания подключается к одному каналу любой (даже запиленный и рассыпающийся диск), система опознает устройство и устанавливает режим PIO5. Далее переключаете формирователь на свое устройство и работаете с быстродействующим каналом. Реальное время опроса внешнего у-ва составило уже всего 700 нс. (Для DMA этот номер не пройдет, внешний контроллер придется все равно городить, если надо еще быстрее)


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
Coryphae
сообщение Oct 31 2006, 19:11
Сообщение #21


Участник
*

Группа: Новичок
Сообщений: 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 - еще рабочая ссылка


--------------------
"Слабые места любого проекта любят собираться в группы" - Пятый закон проектирования.
"Двусмысленность инвариантна" - Принцип неопределенности Хартца.
Законы мерфи (с) А. БЛОХ.
Go to the top of the page
 
+Quote Post
AlexB
сообщение Oct 31 2006, 20:40
Сообщение #22


Участник
*

Группа: Свой
Сообщений: 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 обязательны к исполнению (по крайней мере - необходимо рапортовать хосту об их успешном выполнении). В противном случае хост может "заподозрить" Ваше устройство в "странном" поведении и twak.gif опять PIO MODE 0.
Go to the top of the page
 
+Quote Post
Георгий
сообщение Nov 1 2006, 05:53
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



А как то до регистров контроллера IDE можно добраться, как например до регистров USB контроллеров?


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
Coryphae
сообщение Nov 1 2006, 14:43
Сообщение #24


Участник
*

Группа: Новичок
Сообщений: 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

Насчет "может "заподозрить" " можно подробнее....


--------------------
"Слабые места любого проекта любят собираться в группы" - Пятый закон проектирования.
"Двусмысленность инвариантна" - Принцип неопределенности Хартца.
Законы мерфи (с) А. БЛОХ.
Go to the top of the page
 
+Quote Post
AlexB
сообщение Nov 1 2006, 17:19
Сообщение #25


Участник
*

Группа: Свой
Сообщений: 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 устройства. Если устройство не отвечает на эти комманды или отвечает неправильно, то хост, вероятнее всего, сделает вывод, что устройство неисправно со всеми вытекающими.
Go to the top of the page
 
+Quote Post
Георгий
сообщение Nov 2 2006, 05:24
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



В принципе, я тут посидел, подумал, имитировать наличие устройства с PIO > 0 можно и не на ПЛИС, а микроконтроллере. Он должен отследить прием обязательных команд и ответить на них заранее заданным способом. В этом случае большого быстродействия не требуется, в крайнем случае по протоколу можно попризадержать IORDY. А сама прога работает на пределе с быстродействующим буфером. (Это я для своего случая - быстрый опрос 8 внешних линий для снятия протоколов).


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
Coryphae
сообщение Nov 2 2006, 08:12
Сообщение #27


Участник
*

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



Цитата
2 Coryphae: Вы пишите программу для работы с ATA устройством или Вы разрабатываете ATA устройство?

Я разрабатываю устройство IDE, точнее пытаюсь задействовать IDE согласно САБЖу, ибо, IDE пока везде есть и имеет достаточную для меня скорость.

Задаю так много вопросов, т.к. пока нет возможности проверить на практике (железо в прожекте), ну, и конечно, сужаю область поиска.

Цитата
IDENTIFY DEVICE (ECh) не является единственной служебной командой. Есть ещё команды с признаком ND. Их в таблице 6.43 пять штук.


За это спасибо, как то не досмотрел.

Цитата
В принципе, я тут посидел, подумал, имитировать наличие устройства с PIO > 0 можно и не на ПЛИС, а микроконтроллере.

В принципе можно, но если делать на ПЛИС, то можно, вероятно, привинтить ПЗУ через ПЛИС для передачи "МЕГА пачки". Все остальные комманды придется по-любому отрабатывать в быстрых режимах на ПЛИС.


--------------------
"Слабые места любого проекта любят собираться в группы" - Пятый закон проектирования.
"Двусмысленность инвариантна" - Принцип неопределенности Хартца.
Законы мерфи (с) А. БЛОХ.
Go to the top of the page
 
+Quote Post
Coryphae
сообщение Nov 10 2006, 22:08
Сообщение #28


Участник
*

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



Кто-нибудь рассматривал возможность начальной "насильственной" конфигурации хоста IDE при помощи настроек BIOS'а?
Может и не надо передавать эту "МЕГА пачку"?
ЗЫ
Сомневаюсь в современных мат. платах. Они могут "передумать" еще много раз во время загрузки системы, и сбросить host. Хотя с платами 1ых пентиумов, где уже встречаются UDMA33, возможно, что-то может получиться =\

Сообщение отредактировал Coryphae - Nov 10 2006, 22:10


--------------------
"Слабые места любого проекта любят собираться в группы" - Пятый закон проектирования.
"Двусмысленность инвариантна" - Принцип неопределенности Хартца.
Законы мерфи (с) А. БЛОХ.
Go to the top of the page
 
+Quote Post
Георгий
сообщение Nov 13 2006, 05:44
Сообщение #29


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



На БИОС современные операционки частенько просто плюют и пожменяют его функции своими. Когда с клавой разбирался, оказалось, что ее один раз инициализирует БИОС, а потом еще раз операционка. Так что с ИДЕ тоже так скорей всего не пройдет и дело тут не в матери, а в операционке. А вот доступ к регистрам ИДЕ-контроллера, который на материнке, тут шанс реальнее. Только описания нигде найти не могу.


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
Coryphae
сообщение Nov 19 2006, 21:25
Сообщение #30


Участник
*

Группа: Новичок
Сообщений: 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


--------------------
"Слабые места любого проекта любят собираться в группы" - Пятый закон проектирования.
"Двусмысленность инвариантна" - Принцип неопределенности Хартца.
Законы мерфи (с) А. БЛОХ.
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 16:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01473 секунд с 7
ELECTRONIX ©2004-2016