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

 
 
> DMA на шине PCI, непонятки =(
Murr Von Kater
сообщение Jul 10 2006, 17:16
Сообщение #1


Участник
*

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



Доброго всем времни суток. Пытаюсь реализовать DMA c усторойством на PCI. Честно говоря абсолютно не понятно, как ПДП организован в PCI. Не могу найти нормальных описаний протоколов PC/PCI & DDMA. Так же непонятки с драйверами к этому всему под Линух. LDD добавило еще больше вопросов чем ответов blink.gif . У кого есть подробное описание всего вышеперечисленного, прошу поделиться( на фтп тоже не нашел ничего полезного, на 800-ах страницах PCI system architecture это даже не упоминается).

И еще вопрос: обязательно ли мое устройство, с которым планируется обмен данными ПДП, должно быть мастером? Можно ли каким-то образом дать команду хосту к инициализации передачи данных по DMA?

За любую инфу заранее спасибо.


--------------------
С утра нет желания работать? Откройте журнал "Форбс" и найдите там свою фамилию... Не нашли? Поднимайтесь и марш на работу!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
makc
сообщение Jul 10 2006, 17:32
Сообщение #2


Гуру
******

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



В архитектуре PCI нет того DMA, который был на шине ISA. Вместо этого появилось понятие мастера (задатчика) на шине, который может получить контроль над шиной после выполнения процедуры арбитрации.

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

Таким образом мастер осуществляет передачу данных по шине в обход процессора и это можно назвать DMA. Но как таковой DMA нигде не расписан подробно, спецификация шины PCI лишь предусматривает возможность создания задатчиков для этой шины.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 10 2006, 18:13
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(makc @ Jul 10 2006, 20:32) *
и это можно назвать DMA.

Это и есть DMA без всяких оговорок, только контроллер DMA есть не принадлежность (жуйте, что дают) материнской платы а у каждого PCI девайса свой, такой, какой ему нужен для решения его задач.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
makc
сообщение Jul 10 2006, 19:50
Сообщение #4


Гуру
******

Группа: Админы
Сообщений: 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. smile.gif Так что, ИМХО, нужно забыть про DMA, а мыслить категориями шины с множеством задатчиков/исполнителей.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
BSV
сообщение Jul 10 2006, 21:17
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 541
Регистрация: 11-04-05
Из: Москва
Пользователь №: 4 045



Встречался с реализацией чего-то похожего. В состав чипсета входит контроллер ДМА и его можно запрограммировать на обмен с Вашим устройством (видел такую реализацию, работает). Нужно искать документацию на контроллер ДМА в чипсете. Но процессор может и непосредственно работать с памятью устройства, как, впрочем, и любое мастер-устройство на шине.


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
makc
сообщение Jul 11 2006, 08:25
Сообщение #6


Гуру
******

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



Цитата(BSV @ Jul 11 2006, 01:17) *
Встречался с реализацией чего-то похожего. В состав чипсета входит контроллер ДМА и его можно запрограммировать на обмен с Вашим устройством (видел такую реализацию, работает). Нужно искать документацию на контроллер ДМА в чипсете.


Что это был за чипсет? А то чипсетов много разных... Искать замучаешься. smile.gif


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
mkalexey
сообщение Jul 18 2006, 06:32
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 86
Регистрация: 12-04-05
Пользователь №: 4 066



Доброго всем дня!
Небольшая цитата для обобщения.
Михаил Гук "Аппаратные интерфейсы ПК"
Цитата
Шина PCI не предоставляет возможности прямого достуступа к памяти с использованием централизованного контроллера в стиле 8237А (как для шины ISA). Для разгрузки центрального процессора от рутинных перекачек данных предлагается прямое управление шиной со стороны устройств, называемых ведущими устройствами шины (PCI Bus Master). Степень интеллектуальности ведущего устройства может быть различной. В простейшем варианте ведущее устройство обеспечивает пересылку блоков данных между устройством и системной памятью (или памятью других устройств) по указанию от CPU. Здесь CPU командами обращения к определенным регистрам ведущего устройства задает начальный адрес, длину блока, направление пересылки и разрешает запуск переда¬чи. После этого пересылка выполняется по готовности (или инициативе) устройства, без отвлечения CPU. Таким образом выполняется прямой доступ к памяти (DMA). Более сложный контроллер DMA может организовывать сцепку буферов при чтении, разбросанную запись и т. п. — возможности, знакомые еще по «про¬двинутым» контроллерам DMA для ISA/EISA. Более интеллектуальное ведущее устройство, как правило, обладающее собственным микроконтроллером, не огра¬ничивается такой простой работой по указке CPU — оно выполняет обмены уже по программе своего контроллера.

з.ы. Советую прочитать.
Удачи. smile.gif


--------------------
Go to the top of the page
 
+Quote Post
klop
сообщение Sep 13 2006, 18:49
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 433
Регистрация: 28-02-06
Пользователь №: 14 788



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

И еще вопрос: обязательно ли мое устройство, с которым планируется обмен данными ПДП, должно быть мастером? Можно ли каким-то образом дать команду хосту к инициализации передачи данных по DMA?

За любую инфу заранее спасибо.


Насколько я помню работа устройства в режиме мастера очень подробно описана в PCI system architecture. Что касается драйверов то ето отдельная песня особенно если делать все через DDK.
Go to the top of the page
 
+Quote Post
vladec
сообщение Sep 14 2006, 06:20
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 167
Регистрация: 3-10-05
Из: Москва
Пользователь №: 9 158



В плане написания драйверов для PCI, без начального опыта, да и для отработки железа, лучше пользоваться пакетом Jungo (www.jungo.com), там все это очень просто реализовано.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 14:35
Рейтинг@Mail.ru


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