Библиотека LibIIO существует уже более 6 лет, чтобы упростить разработку программного обеспечения для взаимодействия с устройствами промышленного ввода-вывода Linux (IIO). Это часть ядра Linux и подсистема, обеспечивающая поддержку таких устройств, как аналого-цифровые или цифро-аналоговые преобразователи (АЦП, ЦАП). Эта подсистема включает в себя АЦП, акселерометры, датчики давления, датчики цвета, света и приближения, датчики температуры, радиопередатчики и многое другое.
LibIIO поддерживает Linux, Windows и Mac OS. Analog Devices Inc. была основной компанией, стоявшей за разработкой LibIIO, которая в настоящее время является активной библиотекой с открытым исходным кодом, в которую многие люди внесли свой вклад.
Что делает LibIIO?
LibIIO определит каналы, принадлежащие каждому устройству, назначит определенные атрибуты, один для каналов и один для устройств. Затем создаст контекст, который является местом, где существуют все устройства, и вы можете просматривать каналы, устройства и атрибуты.
Структура библиотеки
Библиотека состоит из единого кроссплатформенного API и нескольких бэкэндов:
- Локальный бэкэнд, который связывает ядро Linux через виртуальную файловую систему sysfs. Это когда LibIIO запускается локально на цели.
- Сетевой бэкэнд, который связывает сервер iiod через сетевое соединение.
- Бэкэнд USB, который связывает сервер iiod через соединение USB.
- Бэкэнд XML, который анализирует файл XML.
- Последовательный бэкэнд можно использовать с tiny-iiod, который будет работать во встроенной системе с фреймворком, отличным от Linux.
Серверная часть сети, USB и последовательного интерфейса подпадает под удаленную внутреннюю часть. Iiod и tiny-iiod являются частью LibIIO. Этот сервер iiod может работать на хосте Linux, а затем он будет связываться с клиентом LibIIO по сети или USB. Сервер также может работать в глубоко встроенной системе с ограниченными ресурсами (например, Arduino), управляемой отдельно как tiny-iiod, которая обычно взаимодействует с клиентом LibIIO по сети или через последовательный порт.
Сервер IIO Daemon (IIOD) – это пример приложения, использующего LibIIO. Этот программный стек показывает отношения клиент-сервер. Предположим, что клиентское приложение работает в Windows, затем вызывает высокоуровневый API (LibIIO) и через сетевой бэкэнд отправляет команду на сервер IIOD. Затем он распознает команду и через высокоуровневый API LibIIO и локальный бэкэнд взаимодействует с устройствами IIO. Сервер IIOD разделяет локальный бэкэнд через сеть с клиентами.
С чего начать?
Если вы уже используете Linux, ваш дистрибутив уже включает LibIIO, поэтому вам просто нужно указать iio.h в исходном коде. Но для других платформ вам следует проверять сборки выпуска.
При желании вы также можете получить доступ к исходному коду с GitHub. После того, как вы защитили свой доступ к библиотеке, пожалуйста, проверьте LibIIO API или примеры LibIIO.
Источник: Все изображения были взяты у инженера-разработчика программного обеспечения компании Analog Devices, слайды презентации Дэна Нечиты с Open Source Summit 2020 и из Wiki.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.