Цитата(Andre7 @ Jun 3 2013, 16:33)

Имееться Spartan6, на нем реализован PCIe интерфейс. Нужен пример драйвера под UBUNTU, что бы реализовать потоковое чтение.
Все что должна сделать убунта, это выделить кусок непрерывной памяти, и передать его физический адресс в корку.
Цитата
PCI- устройство посылает запрос на чтение по любому адресу оперативной памяти и в ответ должно получать TLP c длинной данных 16 DWORD.
Сколько PCIe может передать данных за раз, должен сказать PCIe хост при инициализации. Может быть хост и не умеет столько.
Цитата
Сейчас есть драйвер, который использует метод MMAP, но на нем не удаеться получить TLP c данными больше 1DWORD.
Вопросы к теме:
Не понял. MMAP это метод отмапить память ядра в адресное пространство user space. К TLP он отношения не имеет совершенно.
Цитата
1. Обязательно ли использовать DMA, что бы работать с TLP больше 1DWORD?
Это ограничение процессора. Вроде как с помощью SSE можно больше чем 128 бит передать за раз.
Цитата
2. Есть ли разница между контроллером DMA на разных компьютерах?
Да. Один может прислать данные одним куском, другой по частям. Еще с кредитами может быть по разному. DMA, а точнее PCIe вообще сильно отличаются даже в пределах одного компьютера, плата может быть воткнута непосредственно в тот PCIe что из процессора идет а может быть воткнута через свич.
Цитата
3. По какой схеме строиться запрос DMA от PCI-устройства к компьютеру? (Какую литературу можно почитать)
Возможно у кого-нибудь есть примеры реализации подобного драйвера?
Вы решите что вам надо сначала PCIe или драйвер. Потому как PCIe пофиг какая ось стоит. Как PCI работает неплохо на сайте альтеры расписано, применительно к ее корке. Также на торрентах лежат книги на английском. Про драйвера и примеры,
http://lwn.net/Kernel/LDD3/ все что касается PCI можно и к PCIe применять.