|
DMA на шине PCI, непонятки =( |
|
|
|
Jul 10 2006, 17:16
|

Участник

Группа: Свой
Сообщений: 73
Регистрация: 11-04-06
Из: Украина, Днепр(самтаймз Эстония :)
Пользователь №: 16 022

|
Доброго всем времни суток. Пытаюсь реализовать DMA c усторойством на PCI. Честно говоря абсолютно не понятно, как ПДП организован в PCI. Не могу найти нормальных описаний протоколов PC/PCI & DDMA. Так же непонятки с драйверами к этому всему под Линух. LDD добавило еще больше вопросов чем ответов  . У кого есть подробное описание всего вышеперечисленного, прошу поделиться( на фтп тоже не нашел ничего полезного, на 800-ах страницах PCI system architecture это даже не упоминается). И еще вопрос: обязательно ли мое устройство, с которым планируется обмен данными ПДП, должно быть мастером? Можно ли каким-то образом дать команду хосту к инициализации передачи данных по DMA? За любую инфу заранее спасибо.
--------------------
С утра нет желания работать? Откройте журнал "Форбс" и найдите там свою фамилию... Не нашли? Поднимайтесь и марш на работу!
|
|
|
|
|
 |
Ответов
(1 - 8)
|
Jul 10 2006, 17:32
|

Гуру
     
Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904

|
В архитектуре PCI нет того DMA, который был на шине ISA. Вместо этого появилось понятие мастера (задатчика) на шине, который может получить контроль над шиной после выполнения процедуры арбитрации.
Таким образом, DMA на шине PCI выглядит следующим образом: 1. Программа дает команду устройству на передачу данных и физический адрес в памяти, откуда/куда эти данные должны быть переданы. Естественно, может быть задан объем передаваемых данных. 2. Устройство (мастер) выдает запрос на захват шины устанавливая сигнал REQ#. 3. Арбитр шины выполняет обработку запросов и через некоторое время (при выполнении определенных условий) выдает разрешение устройству на захват шины сигналом GNT#. 4. Устройство получив сигнал разрешения захвата шины выставляет сигнал FRAME# и прочие для проведения полноценной транзакции. После выполнения всех транзакций или при снятии сигнала разрешения устройство должно освободить шину. И т.д.
Таким образом мастер осуществляет передачу данных по шине в обход процессора и это можно назвать DMA. Но как таковой DMA нигде не расписан подробно, спецификация шины PCI лишь предусматривает возможность создания задатчиков для этой шины.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
Jul 10 2006, 19:50
|

Гуру
     
Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904

|
Цитата(zltigo @ Jul 10 2006, 22:13)  Цитата(makc @ Jul 10 2006, 20:32)  и это можно назвать DMA.
Это и есть DMA без всяких оговорок, только контроллер DMA есть не принадлежность (жуйте, что дают) материнской платы а у каждого PCI девайса свой, такой, какой ему нужен для решения его задач. Я имел в виду, что это можно назвать DMA в стиле архитектуры шины ISA. Хотя на самом деле здесь это понятие не совсем уместно, т.к. оно шире: ведь никто не запрещает мастеру PCI выполнить обращение к пространству ввода/вывода, т.е. это уже будет DirectIO.  Так что, ИМХО, нужно забыть про DMA, а мыслить категориями шины с множеством задатчиков/исполнителей.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
Jul 18 2006, 06:32
|
Частый гость
 
Группа: Свой
Сообщений: 86
Регистрация: 12-04-05
Пользователь №: 4 066

|
Доброго всем дня! Небольшая цитата для обобщения. Михаил Гук "Аппаратные интерфейсы ПК"Цитата Шина PCI не предоставляет возможности прямого достуступа к памяти с использованием централизованного контроллера в стиле 8237А (как для шины ISA). Для разгрузки центрального процессора от рутинных перекачек данных предлагается прямое управление шиной со стороны устройств, называемых ведущими устройствами шины (PCI Bus Master). Степень интеллектуальности ведущего устройства может быть различной. В простейшем варианте ведущее устройство обеспечивает пересылку блоков данных между устройством и системной памятью (или памятью других устройств) по указанию от CPU. Здесь CPU командами обращения к определенным регистрам ведущего устройства задает начальный адрес, длину блока, направление пересылки и разрешает запуск переда¬чи. После этого пересылка выполняется по готовности (или инициативе) устройства, без отвлечения CPU. Таким образом выполняется прямой доступ к памяти (DMA). Более сложный контроллер DMA может организовывать сцепку буферов при чтении, разбросанную запись и т. п. — возможности, знакомые еще по «про¬двинутым» контроллерам DMA для ISA/EISA. Более интеллектуальное ведущее устройство, как правило, обладающее собственным микроконтроллером, не огра¬ничивается такой простой работой по указке CPU — оно выполняет обмены уже по программе своего контроллера. з.ы. Советую прочитать. Удачи.
--------------------
|
|
|
|
|
Sep 13 2006, 18:49
|
Местный
  
Группа: Свой
Сообщений: 433
Регистрация: 28-02-06
Пользователь №: 14 788

|
Цитата(Murr Von Kater @ Jul 10 2006, 21:16)  Доброго всем времни суток. Пытаюсь реализовать DMA c усторойством на PCI. Честно говоря абсолютно не понятно, как ПДП организован в PCI. Не могу найти нормальных описаний протоколов PC/PCI & DDMA. Так же непонятки с драйверами к этому всему под Линух. LDD добавило еще больше вопросов чем ответов  . У кого есть подробное описание всего вышеперечисленного, прошу поделиться( на фтп тоже не нашел ничего полезного, на 800-ах страницах PCI system architecture это даже не упоминается). И еще вопрос: обязательно ли мое устройство, с которым планируется обмен данными ПДП, должно быть мастером? Можно ли каким-то образом дать команду хосту к инициализации передачи данных по DMA? За любую инфу заранее спасибо. Насколько я помню работа устройства в режиме мастера очень подробно описана в PCI system architecture. Что касается драйверов то ето отдельная песня особенно если делать все через DDK.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|