sovereign
Oct 14 2009, 11:07
Всем привет
Приобрели Altera Arria GX dev kit.
Начальная задача-отбирать DMA пакеты с kernel space -> user space у LInux 2.6.25.
Обязательно ли дописывать у драйвере char часть,а потом обращаться к нему,как к файлу,
или существуют какие-то спецыальние проги для захвата пакетов?
Наперед спасибо.
Harbour
Oct 15 2009, 04:07
Дык, без драйвера конкретного устройства любая прога до спины. Сначала пишется драйвер, потом через файл или shmem данные передаются в userspace, далее по select/poll или event'у эти данные читаем.
sovereign
Oct 16 2009, 13:35
Какие могут быть причины,чтобы драйвер в 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 шине?
Harbour
Oct 17 2009, 05:01
Вообще-то для стандартной работы с прерываниями сonfig space не читают, а принято просто вызывать request_irq(), так как стандартный интерфейс pci все эти движухи с config_space проделывает сам. Другое дело, что устройство может иметь проблему с irq pin на hw уровне (например не задана в корке). Начинать нужно со стандартной demo прошивки - смотреть шо к чему, сравнивать и т.д.
sovereign
Oct 19 2009, 11:03
Спасибо,буду разбиратся.
Половина проблемы ясна-PCIe не имеет прерываний #INTA...А прерывания организированы через PCIe контроллер прерываний,
тоесть PCIe выдает не физические,а "виртуальние" прерывания,типа IRQ line #255,а не физические IRQ line [1..19].
Надо разбиратся,почему request_irq не вертает виртуальние прерывания.
Сомнительно,что ето проблема на HW уровне.
sovereign
Oct 24 2009, 15:04
Еще такой вопрос,как посмотреть,или вообще возможно ,скорость обмена между PCIe<->девайс?
Может у Линуксе уже есть стандартные решения?
Драйвер заработал,теперь хочу проверить ефективность его работы.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.