Начало работы с WiringRP


Загрузка #

Библиотека WiringPI доступна для загрузки из репозитория GitFlic. Для загрузки библиотеки выполните следующие команды в консоли RepkaOS:

# для установки СУВ Git
sudo apt-get install git

# для загрузки библиотеки из репозитория на локальный диск
# перед загрузкой перейдите в каталог, который вы планируете использовать для хранения проектов
git clone https://gitflic.ru/project/repka_pi/wiring-repka.git

После загрузки, в текущем каталоге появится папка wiring-repka содержащая следующие каталоги:

  1. driver - содержит исходные коды драйвера repka_gpio.

  2. example - содержит исходные коды примеров использования библиотеки.

  3. 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).

  1. Создаем директорию в любом удобном для вас месте:

    mkdir awesome-project
    cd awesome-project
    
  2. После того, как мы перешли в созданную директорию нам необходимо скопировать сюда заголовочный файл и уже собранную библиотеку (пути могут отличаться - будьте внимательны):

    cp ~/workspace/wiring-repka/build/lib/libwiringrp.a .
    cp ~/workspace/wiring-repka/wiringRP/wiringRP.h .
    
  3. Теперь создадим нашу программу. Пускай она будет называться 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();
    
  4. После чего попробуем собрать нашу программу и после этого запустим ее:

    gcc awesome-program.c -L./ -lwiringrp -o awesome-program
    ./awesome-program
    
  5. Наша программа работает!


2589 просмотров0 комментариев

Комментарии (0)

Для участия в обсуждении Вы должны быть авторизованным пользователем
Разделы

Навигация

ВойтиРегистрация