Загрузка #
Библиотека WiringPI доступна для загрузки из репозитория GitFlic. Для загрузки библиотеки выполните следующие команды в консоли RepkaOS:
# для установки СУВ Git
sudo apt-get install git
# для загрузки библиотеки из репозитория на локальный диск
# перед загрузкой перейдите в каталог, который вы планируете использовать для хранения проектов
git clone https://gitflic.ru/project/repka_pi/wiring-repka.git
После загрузки, в текущем каталоге появится папка wiring-repka
содержащая следующие каталоги:
-
driver
- содержит исходные коды драйвера repka_gpio. -
example
- содержит исходные коды примеров использования библиотеки. -
wiringRP
- содержит исходные коды библиотеки wiringRP.
Сборка проекта #
Для сборки библиотеки WiringRP необходимо сделать следующее:
cd wiring-repka
mkdir build
cd build
cmake ..
cmake --build .
После сборки, появятся следующие директории:
bin/
- директория содержит собранные примеры использования WiringRP
driver
- содержит модуль ядра repka_gpio.ko
(подробнее о нем в разделе ниже)
lib/
- статическая библиотека libwiringrp.a
Загрузка модуля ядра repka_gpio.ko #
Данный модуль используется wiringRP для получения безопасного доступа к контактам GPIO-разъема. После сборки проекта модуль ядра будет доступен в директории build/driver
. Для его включения необходимо выполнить следующие команды в терминале (находиться при этом необходимо в корне репозитория wiring-repka/
):
insmod build/driver/repka_gpio.ko
chmod 666 /dev/repka_gpio*
chmod 666 /dev/gpiochip*
chmod 666 /dev/ttyS0
chmod 666 /dev/ttyS2
chmod 666 /dev/ttyS3
chmod 666 /dev/i2c-1
chmod 666 /dev/i2c-2
chmod 666 /dev/spidev0.0
chmod 666 /dev/spidev1.0
После чего убедимся, что модуль ядра загрузился:
lsmod | grep repka_gpio
В случае удачной загрузки после выполнения данной команды мы увидим примерно следующее:
root@Repka-Pi:~/workspace/wiring-repka# lsmod | grep repka_gpio
repka_gpio 12288 0
Также в директории /dev
будут созданы символьные устройства repka_gpio0
и repka_gpio0
После завершения работы ОС драйвер repka_gpio.ko
выгрузится автоматически. При запуске ОС автоматическая загрузка драйвера не осуществляется! Для работы с библиотекой WiringRP, после каждого старта необходимо выполнять загрузку драйвера ручную или настроить его автозапуск.
Разработка программ #
Попробуем создать собственную программу, которая будет управлять напряжением GPIO-пина 360
на Repka Pi 4 (аналогичную программу можно сделать и на Repka Pi 3).
-
Создаем директорию в любом удобном для вас месте:
mkdir awesome-project cd awesome-project
-
После того, как мы перешли в созданную директорию нам необходимо скопировать сюда заголовочный файл и уже собранную библиотеку (пути могут отличаться - будьте внимательны):
cp ~/workspace/wiring-repka/build/lib/libwiringrp.a . cp ~/workspace/wiring-repka/wiringRP/wiringRP.h .
-
Теперь создадим нашу программу. Пускай она будет называться awesome-program.c и будет содержать следующее:
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include "wiringRP.h" // Глобальные переменные и константы const int LED_1 = 360; void setup() { // Инициализация библиотек wiringRP if(setupWiringRP(WRP_MODE_SUNXI) < 0) exit(EXIT_FAILURE); // Инициализация пользовательских объектов pinMode(LED_1, OUTPUT); } void loop() { // Основной цикл программы digitalWrite(LED_1, HIGH); delay(1000); digitalWrite(LED_1, LOW); delay(500); } ONDESTROY(){ // Освобождение занятых ресурсов, выключение напряжения на пинах digitalWrite(LED_1, LOW); pinMode(LED_1, DISABLE); // Завершение работы библиотек releaseWiringRP(); exit(0); // выход из программы } MAIN_WIRINGRP();
-
После чего попробуем собрать нашу программу и после этого запустим ее:
gcc awesome-program.c -L./ -lwiringrp -o awesome-program ./awesome-program
-
Наша программа работает!