Перейти к содержанию
    

Чем можно посмотреть трафик DMA на PCIe?

Всем привет

 

Приобрели Altera Arria GX dev kit.

Начальная задача-отбирать DMA пакеты с kernel space -> user space у LInux 2.6.25.

Обязательно ли дописывать у драйвере char часть,а потом обращаться к нему,как к файлу,

или существуют какие-то спецыальние проги для захвата пакетов?

 

Наперед спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дык, без драйвера конкретного устройства любая прога до спины. Сначала пишется драйвер, потом через файл или shmem данные передаются в userspace, далее по select/poll или event'у эти данные читаем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какие могут быть причины,чтобы драйвер в Linux не мог выделять прерывания?

Фрагмент dmesg.

.....

Enabled MSI interrupting.

Using a 64-bit DMA mask.

IRQ pin #0 (0=none, 1=INTA#...4=INTD#).

IRQ line #0.

Cannot request IRQ line #253.

......

Тоесть,когда вызывается pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq_pin),

irq_pin стает 0.

Девайс Arria GX x4 вставляется у PCIe x16.

Есть кикие то особености прерываний на шине PCIe?

 

 

Согласно документации,когда irq_pin ,который считан с конфигурационной части PCie девайса,равен 0.

Тогда девайс вообще не имеет прерываний.

Но почему у других пользоватей все OK,а у меня проблема.

Может порблема у PCIe шине?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще-то для стандартной работы с прерываниями сonfig space не читают, а принято просто вызывать request_irq(), так как стандартный интерфейс pci все эти движухи с config_space проделывает сам. Другое дело, что устройство может иметь проблему с irq pin на hw уровне (например не задана в корке). Начинать нужно со стандартной demo прошивки - смотреть шо к чему, сравнивать и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо,буду разбиратся.

Половина проблемы ясна-PCIe не имеет прерываний #INTA...А прерывания организированы через PCIe контроллер прерываний,

тоесть PCIe выдает не физические,а "виртуальние" прерывания,типа IRQ line #255,а не физические IRQ line [1..19].

Надо разбиратся,почему request_irq не вертает виртуальние прерывания.

Сомнительно,что ето проблема на HW уровне.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще такой вопрос,как посмотреть,или вообще возможно ,скорость обмена между PCIe<->девайс?

Может у Линуксе уже есть стандартные решения?

Драйвер заработал,теперь хочу проверить ефективность его работы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...