LINUX.ORG.RU

Linux device drivers

 ,


0

0

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

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

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

PCI плата портов RS232 как думаешь что использует?

anonymous2 ★★★★ ()

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

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

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

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

braboar ()
Ответ на: комментарий от andreykyz

Спасибо

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

braboar ()

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

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

Т.е. доступ к барам и т.п. через ioctl а read/write/readv/writev через file_operations?

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

ну да наверное. всё от типа устройства зависит в общем случае. ну и от высоты полёта твоей фантазии.

nanoolinux ★★★★ ()
Ответ на: Спасибо! от braboar

дивлюсь я на небо
та й думку гадаю.

в оригинале так.

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

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

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