Все устройства в Linux живут тут: `/dev` ## GPIO Полезная информация: https://devdotnet.org/post/rabota-s-gpio-v-linux-chast-6-biblioteka-libgpiod/ Способы управления: 1. **User Space** - прямой доступ к регистрам, минуя медленные системные вызовы. Посредством открытия `/dev/mem` и мапирование базового адреса GPIO. ==Подводные камни:== 1. Обход GPIO Subsystem 2. Нет контроля конкуренции (может управлять несколько процессов) 3. Можно сломать драйвер 4. Нет безопасности 2. **libgpiod** (Library General Purpose Input/Output device) - Библиотека и набор утилит в Linux для управления пинами GPIO (ввод/вывод общего назначения) через символьные устройства (`/dev/gpiochip*`) 1. Включает в себя: 1. **gpiodetect** 2. **gpioinfo** 3. **gpioset** 4. **gpioget** ## I2C. Integrates `/sys/bus/i2c/devices/` По умолчанию шина отключена. Включить можно следующими способами: 1. `sudo raspi-config` 2. Корректировкой `/boot/firmware/config.txt` 1. Необходимо раскомментировать параметр `dtparam=i2c_arm=on` Затем в устройство должно появиться в `/dev` как `i2c-1` Для работы с шиной и периферией есть библиотека `i2c-tools` ## SPI Команды для работы: `cat /proc/device-tree/model` - модель платы для которой device tree создан `ls /proc/device-tree/` - дерево устройств, которое kernel получил от GPU `ls /sys/bus/platform/devices` - вывод устройств, которые kernel создал на основе DT `lsmod` - просмотр загруженных модулей св ## Commands Система: `vcgencmd get_config int` - параметры, которые передает GPU `cat /etc/os-release` - просмотр версии системы