vault backup: 2026-03-14 16:54:50

This commit is contained in:
2026-03-14 16:54:50 +03:00
parent 16abecc376
commit c2341e02b8
+20 -15
View File
@@ -9,8 +9,8 @@ https://devdotnet.org/post/rabota-s-gpio-v-linux-chast-6-biblioteka-libgpiod/
Способы управления: Способы управления:
1. Userspace driver -прямое управление 1. Userspace driver -прямое управление
2. Libgpiod - управление через библиотеку 2. Libgpiod - управление через библиотеку (API для Python и C/C++)
3. 3. Python library
#### User Space #### User Space
Прямой доступ к регистрам, минуя медленные системные вызовы. Прямой доступ к регистрам, минуя медленные системные вызовы.
Посредством открытия `/dev/mem` и мапирование базового адреса GPIO. Посредством открытия `/dev/mem` и мапирование базового адреса GPIO.
@@ -20,6 +20,7 @@ https://devdotnet.org/post/rabota-s-gpio-v-linux-chast-6-biblioteka-libgpiod/
3. Можно сломать драйвер 3. Можно сломать драйвер
4. Нет безопасности 4. Нет безопасности
Пример работы с GPIO
```cpp title:userspace_gpio_control.cpp ```cpp title:userspace_gpio_control.cpp
#include <iostream> // вывод сообщений #include <iostream> // вывод сообщений
@@ -94,6 +95,8 @@ GPIO_BASE – смещение в файле (физический адрес).
} }
``` ```
---
#### libgpiod - library control #### libgpiod - library control
Library General Purpose Input/Output device - Библиотека и набор утилит в Linux для управления пинами GPIO (ввод/вывод общего назначения) через символьные устройства (`/dev/gpiochip*`) или контроллеры GPIO Library General Purpose Input/Output device - Библиотека и набор утилит в Linux для управления пинами GPIO (ввод/вывод общего назначения) через символьные устройства (`/dev/gpiochip*`) или контроллеры GPIO
Состав библиотеки: Состав библиотеки:
@@ -114,11 +117,8 @@ pkg-config --cflags --libs libgpiod
``` bash ``` bash
g++ -o gpio_control gpio_control.cpp -lgpiod g++ -o gpio_control gpio_control.cpp -lgpiod
``` ```
``
3. Компиляция:
4. API для Python и C/C++
Пример работы с GPIO
``` cpp title:libgpiod_control.cpp ``` cpp title:libgpiod_control.cpp
``` ```
@@ -127,21 +127,26 @@ g++ -o gpio_control gpio_control.cpp -lgpiod
`/sys/bus/i2c/devices/` `/sys/bus/i2c/devices/`
По умолчанию шина отключена. По умолчанию шина отключена.
Включить можно следующими способами: Включить можно следующими способами:
1. `sudo raspi-config` ``` bash
2. Корректировкой `/boot/firmware/config.txt` sudo raspi-config
```
Или от корректировкой `/boot/firmware/config.txt`
1. Необходимо раскомментировать параметр `dtparam=i2c_arm=on` 1. Необходимо раскомментировать параметр `dtparam=i2c_arm=on`
Затем в устройство должно появиться в `/dev` как `i2c-1`
Для работы с шиной и периферией есть библиотека `i2c-tools` Затем в устройство должно появиться в `/dev` как `i2c-1`
Набор утилит для работы с шиной i2c: `i2c-tools`
Состав библиотеки:
-
## SPI ## SPI
E
Команды для работы: Команды для работы:
`cat /proc/device-tree/model` - модель платы для которой device tree создан ```bash
`ls /proc/device-tree/` - дерево устройств, которое kernel получил от GPU
`ls /sys/bus/platform/devices` - вывод устройств, которые kernel создал на основе DT ```
`lsmod` - просмотр загруженных модулей св
## Commands ## Commands
Система: Система: