Userspace Библиотека последовательной связи в Linux - PullRequest
0 голосов
/ 29 июня 2018

Мне нужно разработать библиотеку (пользовательского пространства) для поддержки последовательной связи в Linux (на плате Zynq-Zybo: UART, SPI, I2C).
Я исследовал различные веб-сайты и другие материалы, а также исследовал ядро ​​xilinx-linux, а также некоторые ссылки на книгу O'Reilly Linux Device Drivers.
На данный момент я обнаружил, что Linux уже включает в себя свои собственные модули ядра для управления связью (например: модуль ядра UART обрабатывает периферийные устройства, чтобы они отображались в / dev /, и через этот файл устройства я могу взаимодействовать с устройством из пространства пользователя, используя open, read, write и т. д.).
Я также читал, что, как обычно, взаимодействие с драйвером устройства осуществляется через драйвер символьного устройства, доступ к которому осуществляется в пользовательском пространстве и который отвечает за взаимодействие с драйвером устройства (подробности на следующем рисунке)
enter image description here

Идеи, которые пришли мне в голову:

  • Написание библиотеки пространства пользователя, которая просто взаимодействует с предоставленным файлом устройства (в / dev / ..) посредством классического открытия, чтения, записи
  • Ссылаясь на изображение выше, разработайте драйвер символьного устройства и включите этот модуль в ядро, чтобы библиотека пользовательского пространства просто взаимодействовала с ним через IOCTL (или аналогичный), а затем этот новый модуль будет напрямую взаимодействовать с (предварительно существующие) драйверы устройств
    (Это решение, однако, звучит не слишком хорошо для меня: я читал, что использование таких элементов пользовательского пространства, как open, read, write внутри модулей ядра, не очень хорошая идея - хотя это возможно -)

Мой вопрос: каким путем я должен следовать и почему?
Кроме того, любая статья / книга / ссылка на эту тему будет высоко оценена.
Заранее спасибо!

1 Ответ

0 голосов
/ 30 июня 2018

из быстрого поиска кажется, что есть много библиотек, поэтому не уверен, почему вы хотите изобрести колесо, например. https://www.acmesystems.it/user_i2c

но в любом случае, если это новый тип шины / устройства, библиотека пространства пользователя всегда подходит

...