Серийный драйвер в пользовательском пространстве - PullRequest
0 голосов
/ 02 января 2019

Можно ли написать последовательный драйвер в пользовательском пространстве, пока устройство не появится в системе как обычный последовательный драйвер /dev/ttyS0?

Вся история в том, что у нас есть pci express fpga, а за pci express fpga есть несколько устройств: сериалы, canbus, i2c, mdio и т. Д.

Я подумал реализовать его как uio_pci_generic, но драйвер последовательного порта немного проблематичен, потому что мы предпочитаем, чтобы он отображался как обычный последовательный /dev/ttyS0.

Если вышесказанное невозможно: Можно ли реализовать некоторые устройства pci в ядре (последовательном), а другие - в пользовательском пространстве? Это проблематично с точки зрения прерывания?

Спасибо за любую идею.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

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

0 голосов
/ 02 января 2019

Да, вы можете сделать это, используя pty.Драйвер пользовательского режима открывает главный конец pty, а приложение, которое хочет использовать последовательный порт, открывает подчиненный конец.Поиск Linux pty.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...