LINUX.ORG.RU

Linux device drivers

 ,


0

0

Доброго времени суток!

Надо сделать драйвер pci-e устройства.

Сижу, читаю LDD3. Кое-что понял, а вопрос организовался такой: как пользовательская программа должна читать/писать данные? Символьные устройства используют структуру file_operations, блочные - block_device_operations, а pci устройства что используют?


Ответ на: комментарий от anonymous2

Возможно, file_operations. А на самом деле?

braboar
() автор топика

Не путай теплое с мягким. PCI - это аппаратрный интерфейс. Если по нему подключен SATA-контроллер или что-то подобное, то лучше делать блочное устройство. Сетевая карта - отдельная история. В остальных случаях - скорее всего, символьное. Возможно, тебе подойдет UIO, по крайней мере для начала.

tim239 ★★
()
Ответ на: комментарий от tim239

постараюсь не путать

дело в том, что железка больно специфичная, обмен через DMA. Надо читать/записывать данные большими блоками. A UIO сейчас почитаю, спасибо.

braboar
() автор топика
Ответ на: постараюсь не путать от braboar

Можно ещё почитать рассылку с ru.kernelnewbies.org Архив здесь
Там есть история написания драйвера для pci устройства(сетевая карта)

andreykyz ★★
()
Последнее исправление: andreykyz (всего исправлений: 1)
Ответ на: комментарий от andreykyz

Спасибо

ЕМНИП, драйвер сетевой карты описан отдельно в LDD3.

braboar
() автор топика

для юзерспейса нету интерфеса непосредственно к барам или пдп. можно конечно наделать костылей и велосипедов в виде доступа к барам через ммап, или реагирование на прерывание через посикс сигналы например, но канонически правлиьно делать чардев с иоконтролами, которые твоим устройством рулять из кернелспейс. только интерфейс надо заранее продумать хорошо. man pci_register_driver, man pci_enable_device, man pci_alloc_consistent… и т.д. по ссылкам и исходникам.

nanoolinux ★★★★
()
Ответ на: комментарий от nanoolinux

У меня только дед был родом из-под Винницы, так что извиняйте, языка не знаю :)

braboar
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.