2.7 KiB
#linux #GPIO #i2c #spi #hardware
Все устройства в Linux живут тут:
/dev
GPIO
#userspase #libgpiod Полезная информация: https://devdotnet.org/post/rabota-s-gpio-v-linux-chast-6-biblioteka-libgpiod/
Способы управления:
-
User Space - прямой доступ к регистрам, минуя медленные системные вызовы. Посредством открытия
/dev/memи мапирование базового адреса GPIO. ==Подводные камни:==- Обход GPIO Subsystem
- Нет контроля конкуренции (может управлять несколько процессов)
- Можно сломать драйвер
- Нет безопасности
-
libgpiod (Library General Purpose Input/Output device) - Библиотека и набор утилит в Linux для управления пинами GPIO (ввод/вывод общего назначения) через символьные устройства (
/dev/gpiochip*) или контроллеры GPIO- Установка: sudo apt-get update sudo apt-get install -y libgpiod-dev libgpiod-doc gpiod
- Проверка корректности установки: pkg-config --cflags --libs libgpiod
- Состав:
- gpiodetect
- gpioinfo
- gpioset
- gpioget
- Компиляция: g++ -o gpio_control gpio_control.cpp -lgpiod
- API для Python и C/C++
I2C. Integrates
/sys/bus/i2c/devices/
По умолчанию шина отключена.
Включить можно следующими способами:
sudo raspi-config- Корректировкой
/boot/firmware/config.txt- Необходимо раскомментировать параметр
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 - просмотр версии системы