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

 
 
> pci кто работал., Бас мастеринг на pci.
Methane
сообщение Jan 20 2009, 15:04
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Сижу, копаю корку с оценочную корку с Альтеры. В общем все понятно, но не понятно принципиально.

Может ли как может, одно PCI устройство, прочитать память другого PCI устройства. Были карточки, TV тюнеры, которые, как я понимаю назначали себя бас-мастерингами, и гнали данные прямо в видео ОЗУ другого PCI устройства. Но как это происходило, и как сделать что-то похожее, той коркой от Альтеры, я не могу понять.

Как оно называется и куда смотреть на эту тему?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DmitryR
сообщение Jan 20 2009, 15:18
Сообщение #2


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Драйвер мастера сообщает ему (по некоторому своему внутреннему протоколу), по каким адресам на шине зарегистрировалось устройство, куда надо данные гнать (а драйвер сам узнает это или сканируя устройства, или пользователь ему сообщает, каким устройством пользоваться). Подразумевается, что мастер знает алгоритм работы устройства, поэтому зная адрес он берет туда просто и пишет.
Go to the top of the page
 
+Quote Post
Methane
сообщение Jan 20 2009, 15:46
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(DmitryR @ Jan 20 2009, 17:18) *
Драйвер мастера сообщает ему (по некоторому своему внутреннему протоколу), по каким адресам на шине зарегистрировалось устройство, куда надо данные гнать (а драйвер сам узнает это или сканируя устройства, или пользователь ему сообщает, каким устройством пользоваться). Подразумевается, что мастер знает алгоритм работы устройства, поэтому зная адрес он берет туда просто и пишет.

Не въеду. К примеру драйвер TV тюнера говорит что по адрессу 0x08b0000 находится видео ОЗУ. После этого устройство, может по этому адрессу тупа слать данные?
(PCI Express Compiler User Guide)
Я могу в tx_desc0[127:0] прописать что это 0x08b0000, длинну, что это ОЗУ, и просто выдавать данные? Просто по нажатию к примеру на кнопку на карточке, я поднимаю tx_req0, дожидаюсь tx_ack0, и начинаю последовательно слать данные в видео ОЗУ?

А может устройство само прочитать что-то из видоОЗУ? Я не понял как. Нужно послать запрос на чтение по какому-то адресу, и устройство должно как-то сообразить, что на этот запрос нужно ответить.
Go to the top of the page
 
+Quote Post
Boris_TS
сообщение Jan 20 2009, 16:17
Сообщение #4


Злополезный
****

Группа: Свой
Сообщений: 608
Регистрация: 19-06-06
Из: Russia Taganrog
Пользователь №: 18 188



Цитата(Methane @ Jan 20 2009, 19:46) *
Не въеду. К примеру драйвер TV тюнера говорит что по адрессу 0x08b0000 находится видео ОЗУ. После этого устройство, может по этому адрессу тупа слать данные?
(PCI Express Compiler User Guide)
Я могу в tx_desc0[127:0] прописать что это 0x08b0000, длинну, что это ОЗУ, и просто выдавать данные? Просто по нажатию к примеру на кнопку на карточке, я поднимаю tx_req0, дожидаюсь tx_ack0, и начинаю последовательно слать данные в видео ОЗУ?

А может устройство само прочитать что-то из видоОЗУ? Я не понял как. Нужно послать запрос на чтение по какому-то адресу, и устройство должно как-то сообразить, что на этот запрос нужно ответить.


Проясните, пожалуйста, для какого PCI Вы собираетесь разрабатывать устройство.

Для прояснения вашего вопроса Вам необходимо ознакомиться со спецификацией PCI.

Если вы спрашиваете об обычном параллельном PCI, то идея такова:
1. Драйвер записывает во внутренний адрес своего устройства адрес памяти по которому это устройство должно произвести операцию.
2. Драйвер этого же устройства вписывает команду устройству начать пересылать данные.
3. Устройство выставляет запрос REQ (хочу порулить шиной), и получив GNT начинает само генерировать циклы передачи данных (Read/Write - без разницы).
4. По окончанию пересылки данных устройство выставляет прерывание.
5. Драйвер этого устройства убеждается, что все данные успешно добрались до адресата (очень важное место !!!) и только после этого сообщает программе вызвавшей драйвер об успешном завершении операции.

Вы это хотели узнать или что-то другое ?

P.S. Устройство не различает куда будет производиться запись (или чтение): в системное ОЗУ, в видео ОЗУ - устройство просто обращается к нужному адресу (тот который драйвер дал, а драйверу виднее куда/откуда, чего и сколько пересылать).

А вот с PCI-E я не работал пока еще, поэтому подсказать как на нем всё надо делать.
Go to the top of the page
 
+Quote Post
Methane
сообщение Jan 20 2009, 16:39
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(Boris_TS @ Jan 20 2009, 18:17) *
Проясните, пожалуйста, для какого PCI Вы собираетесь разрабатывать устройство.

PCIe.

Цитата
Вы это хотели узнать или что-то другое ?

P.S. Устройство не различает куда будет производиться запись (или чтение): в системное ОЗУ, в видео ОЗУ - устройство просто обращается к нужному адресу (тот который драйвер дал, а драйверу виднее куда/откуда, чего и сколько пересылать).

А вот с PCI-E я не работал пока еще, поэтому подсказать как на нем всё надо делать.

Я пытаюсь понять как PCIe работает. Пока ничего общего с захватом шины, я не нашел.

По идее PCIe если хочет прочитать память, оно должно послать в TX read request, потом ждать из RX данные. Когда данные пришли, послать в TX Completion. Я не могу понять, правльно ли я все понял или нет.
Go to the top of the page
 
+Quote Post
Barbarossa
сообщение Jan 20 2009, 23:26
Сообщение #6


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

Группа: Свой
Сообщений: 97
Регистрация: 5-12-04
Из: Великий Новгород
Пользователь №: 1 333



Цитата(Methane @ Jan 20 2009, 19:39) *
PCIe.


Я пытаюсь понять как PCIe работает. Пока ничего общего с захватом шины, я не нашел.

По идее PCIe если хочет прочитать память, оно должно послать в TX read request, потом ждать из RX данные. Когда данные пришли, послать в TX Completion. Я не могу понять, правльно ли я все понял или нет.


Вообще-то, чтобы разобраться, как работает PCIe, стоит почитать спецификацию.
Следует понимать, что PCIe это не общая шина, поэтому никакого захвата шины там нет. Весь обмен данными происходит по последовательному каналу, индивидуальному для каждого устройства. Обмен данными может производиться в режиме DMA или в режиме Completion. Если несколько утрировать - то в режиме DMA устройство пишет/читает данные непосредственно из памяти компа, а в режиме Completion комп пишет/читает данные из адресного пространства устройства. Во втором случае не получить высокую скорость обмена данными.
Go to the top of the page
 
+Quote Post
Methane
сообщение Jan 21 2009, 08:45
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(Barbarossa @ Jan 21 2009, 01:26) *
Вообще-то, чтобы разобраться, как работает PCIe, стоит почитать спецификацию.
Следует понимать, что PCIe это не общая шина, поэтому никакого захвата шины там нет. Весь обмен данными происходит по последовательному каналу, индивидуальному для каждого устройства. Обмен данными может производиться в режиме DMA или в режиме Completion. Если несколько утрировать - то в режиме DMA устройство пишет/читает данные непосредственно из памяти компа, а в режиме Completion комп пишет/читает данные из адресного пространства устройства. Во втором случае не получить высокую скорость обмена данными.

Я правильно понял, что на PCIe шине, в общем все равны? Каждый имеет право быть делать что ему угодно?

Цитата(DmitryR @ Jan 21 2009, 09:30) *
Да, если конечно тюнер готов их тупо принять в видеоОЗУ. Мне думается, что там может быть все несколько сложнее, так как прямо заполняя видеоОЗУ надо как минимум сделать так, чтобы сам тюнер туда при этом ничего не писал, а только отправлял на экран образ ОЗУ. Но принцип примерно такой, да.

Я читаю доки. Но там куча адрессных пространств, методов адрессации и маршрутизации, куча вариантов чтения итд.
Go to the top of the page
 
+Quote Post
Barbarossa
сообщение Jan 21 2009, 19:06
Сообщение #8


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

Группа: Свой
Сообщений: 97
Регистрация: 5-12-04
Из: Великий Новгород
Пользователь №: 1 333



Цитата(Methane @ Jan 21 2009, 11:45) *
Я правильно понял, что на PCIe шине, в общем все равны? Каждый имеет право быть делать что ему угодно?

Еще раз - PCIe не есть общая шина. Но это не значит, что каждое устройство может гнать любой поток данных. Насколько я понимаю, самый правильный способ управления потоком передаваемых данных - анализ кредитов, выделенных устройству в данный момент времени. В альтеровском ядре имеется специальная шина, указывающая доступные кредиты по разным видам сообщений.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Methane   pci кто работал.   Jan 20 2009, 15:04
||- - DmitryR   Цитата(Methane @ Jan 21 2009, 11:45) Я чи...   Jan 21 2009, 09:31
||- - Methane   Цитата(Barbarossa @ Jan 21 2009, 21:06) Е...   Jan 21 2009, 20:35
||- - Barbarossa   Цитата(Methane @ Jan 21 2009, 23:35) Из т...   Jan 22 2009, 17:33
||- - Methane   Цитата(Barbarossa @ Jan 22 2009, 19:33) Н...   Jan 22 2009, 18:31
||- - Barbarossa   Цитата(Methane @ Jan 22 2009, 21:31) Я им...   Jan 23 2009, 07:55
||- - Methane   Цитата(Barbarossa @ Jan 23 2009, 09:55) Е...   Jan 23 2009, 16:22
|- - DmitryR   Цитата(Methane @ Jan 20 2009, 18:46) Не в...   Jan 21 2009, 07:30
- - Andrew Su   Добрый день. Возможно Вам пригодится книга "P...   Jan 23 2009, 20:24
|- - Methane   Цитата(Andrew Su @ Jan 23 2009, 22:24) Хо...   Jan 23 2009, 20:54
- - oval   Цитата(Methane @ Jan 23 2009, 23:54) PCIe...   Jan 23 2009, 21:17
- - Methane   Цитата(oval @ Jan 23 2009, 23:17) Как раз...   Jan 23 2009, 21:23


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:56
Рейтинг@Mail.ru


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