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

 
 
> Короткие 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
Ответов
otv116
сообщение Jan 23 2015, 19:35
Сообщение #2


Участник
*

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



-> SM
Сегодня решил немного поэкспериментировать. Стал писать в девайс не через виртуальные адреса, выдаваемые драйвером, а с помощью IOCTL закидывал в драйвер данные, а в нем с помощью WRITE_REGISTER_BUFFER_ULONG64 кидал в девайс. Результат такой: TLP стали содержать по одному 64-битному слову. Но это прокатит только для 64-битных операционок. Но все равно, это не та скорость, о которой так долго говорили большевики sm.gif
Хотел попробовать через виртуальные адреса, но из Win64 приложения. Но тот код, что работал под 32, не поехал. Второй вызов SetupDiGetDeviceInterfaceDetail постоянно выдает ошибку 1784. Но это уже не по теме.

-> novartis
Спасибо за ссылку.
С QSys я как раз и хотел начать, чтобы не заморачиваться с разбором TLP. Но ничего не получилось. Делал все по инструкции из UG_pci_express, только подправляя под свою плату (она 1х, а не 4х). Скомпилилось нормально, TQ не ругался, но устройсво виндой не обнаруживалось вообще. ltssm никаких признаков жизни не демонстрировали, оставаясь все время в 0. В общем, не дожал я это дело. Да и не лежит как то душа к этим "кубикам".
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 23 2015, 19:45
Сообщение #3


Гуру
******

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



Цитата(otv116 @ Jan 23 2015, 22:35) *
Но все равно, это не та скорость, о которой так долго говорили большевики sm.gif

Да даже и не заморачивайтесь, не будет пакетных передач в slave, несмотря даже на "prefetchable" бит. Как я уже сказал - максимум, что, может быть, добьетесь, это по 128 бит, и то вряд-ли, и то на отдельных чипсетах. Так что, сразу делайте мастера.
Go to the top of the page
 
+Quote Post



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

 


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


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