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

 
 
> Короткие TLP
otv116
сообщение Jan 22 2015, 14:20
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 25-04-05
Пользователь №: 4 466



Изучаю PCIe на ките альтеры с Cyclone-IV. В качестве основы для прошивки использую то, что генерит бесплатный IP compiler for PCI Express.
Написал простейший драйвер под WinXP, который мапит бары в user space и отдает эти виртуальные адреса приложению Win32 (вернее, приложение у драйвера их запрашивает). DMA не использую.
В приложении я просто делаю записи по этим адресам. Указатели объявил типа __int64 *.
В ПЛИСине с помощью SignalTap смотрю, что из корки сыпется в обработчик TLP.
Вот что мне не понятно:
Если я делаю запись по виртуальному адресу, например : *pBuffer = 0xBEEFCAFEDEADFACE, то вижу, что из корки летит 2 TLP. Один со старшей частью, а второй с младшей.
Если в указатель буду пихать больше данных, например с помощью memcpy, то из корки прилетит столько TLP, сколько 32-битных слов я запишу в указатель.
Я расчитывал, что все данные будут в одном единственном TLP.
Подскажите, в какую сторону копать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SM
сообщение Jan 23 2015, 15:08
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(otv116 @ Jan 22 2015, 17:20) *
Подскажите, в какую сторону копать?


Делать busmaster (DMA), и вариантов почти нет. Да и PCIe это не PCI - разницы, генерировать TLP в ответ, или инициировать транзакцию самому, нет.

PC, в подавляющем своем большинстве, не умеет общаться с PCI устройствами данными, больше, чем 32 бита за транзакцию. Можно попытаться использовать MMX инструкции, чтобы получить 64 или 128 битные пакеты, и то, вероятность, что чипсет их оставит таковыми, крайне низка. Если это получится, то ОЧЕНЬ повезло с чипсетом.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 21:37
Рейтинг@Mail.ru


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