|
pci кто работал., Бас мастеринг на pci. |
|
|
|
Jan 20 2009, 15:04
|

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

|
Сижу, копаю корку с оценочную корку с Альтеры. В общем все понятно, но не понятно принципиально.
Может ли как может, одно PCI устройство, прочитать память другого PCI устройства. Были карточки, TV тюнеры, которые, как я понимаю назначали себя бас-мастерингами, и гнали данные прямо в видео ОЗУ другого PCI устройства. Но как это происходило, и как сделать что-то похожее, той коркой от Альтеры, я не могу понять.
Как оно называется и куда смотреть на эту тему?
|
|
|
|
|
 |
Ответов
|
Jan 20 2009, 15:46
|

Гуру
     
Группа: Свой
Сообщений: 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, и начинаю последовательно слать данные в видео ОЗУ? А может устройство само прочитать что-то из видоОЗУ? Я не понял как. Нужно послать запрос на чтение по какому-то адресу, и устройство должно как-то сообразить, что на этот запрос нужно ответить.
|
|
|
|
|
Jan 20 2009, 16:17
|
Злополезный
   
Группа: Свой
Сообщений: 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 я не работал пока еще, поэтому подсказать как на нем всё надо делать.
|
|
|
|
|
Jan 20 2009, 16:39
|

Гуру
     
Группа: Свой
Сообщений: 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. Я не могу понять, правльно ли я все понял или нет.
|
|
|
|
|
Jan 20 2009, 23:26
|
Частый гость
 
Группа: Свой
Сообщений: 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 комп пишет/читает данные из адресного пространства устройства. Во втором случае не получить высокую скорость обмена данными.
|
|
|
|
|
Jan 21 2009, 08:45
|

Гуру
     
Группа: Свой
Сообщений: 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)  Да, если конечно тюнер готов их тупо принять в видеоОЗУ. Мне думается, что там может быть все несколько сложнее, так как прямо заполняя видеоОЗУ надо как минимум сделать так, чтобы сам тюнер туда при этом ничего не писал, а только отправлял на экран образ ОЗУ. Но принцип примерно такой, да. Я читаю доки. Но там куча адрессных пространств, методов адрессации и маршрутизации, куча вариантов чтения итд.
|
|
|
|
|
Jan 21 2009, 19:06
|
Частый гость
 
Группа: Свой
Сообщений: 97
Регистрация: 5-12-04
Из: Великий Новгород
Пользователь №: 1 333

|
Цитата(Methane @ Jan 21 2009, 11:45)  Я правильно понял, что на PCIe шине, в общем все равны? Каждый имеет право быть делать что ему угодно? Еще раз - PCIe не есть общая шина. Но это не значит, что каждое устройство может гнать любой поток данных. Насколько я понимаю, самый правильный способ управления потоком передаваемых данных - анализ кредитов, выделенных устройству в данный момент времени. В альтеровском ядре имеется специальная шина, указывающая доступные кредиты по разным видам сообщений.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|