
- •Список сокращений
- •Введение
- •Общие сведения об операционной системе Linux
- •Краткая история
- •Архитектура
- •Взаимодействие с ос
- •Способы доступа
- •Пользователи
- •Файлы и каталоги
- •Основы работы в командной оболочке
- •Удаленное подключение
- •Запуск программ
- •Базовые операции с файлами
- •Стандартные программы ос Linux
- •Интерфейс общего назначения ввода/вывода в Raspberry Pi os
- •Упражнения
- •Установка удаленного подключения
- •Ввод простых команд
- •Создание нового пользователя
- •Основы работы с командной строкой
- •Cat /sys/class/gpio/gpio22/value Индивидуальное задание
- •Контрольные вопросы
- •Список литературы
Интерфейс общего назначения ввода/вывода в Raspberry Pi os
Дистрибутив Raspberry Pi OS предназначен для запуска на базе одноплатного компьютера Raspberry Pi. В связи с этим, в отличии от дистрибутивов, предназначенных для запуска на персональных компьютерах, в нем имеется доступ к аппаратным блокам микропроцессора на уровне пользователя. При этом работа с аппаратными блоками в соответствии с идеологией ОС Linux ведется с помощью чтения и записи данных в специальные файлы.
Одним из наиболее часто используемых аппаратных блоков является интерфейс General-purpose input/output (GPIO), который позволяет программно управлять состояниями выводов (часто называемых «пины») микропроцессора. Всего одноплатный компьютер Raspberry Pi позволяет независимо настраивать 26 различных пинов, каждому из которых соответствует свой номер и набор файлов в файловой системе ОС Linux.
Каждый пин может выступать как в роли входа, то есть считывать логический уровень, установленный внешним источником, так и в роли выхода, то есть устанавливать логический уровень на внешний приемник. Сконфигурированные на вход пины GPIO определяют логическую единицу как напряжение с уровнем 3,3 В, а логический ноль как напряжение с уровнем 0 В. Сконфигурированные на выход пины GPIO устанавливают логическую единицу уровнем 3,3 В и логический ноль уровнем 0 В.
Файлы, необходимые для настройки пинов и обмена информацией, располагаются в директории «/sys/class/gpio/». Для того, чтобы получить доступ к пину с номером N из пространства пользователя, необходимо записать этот номер в файл «/sys/class/gpio/export», после чего в директории «/sys/class/gpio/» появится поддиректория «gpioN/», в которой будут содержаться файлы для работы с пином. Например, после ввода команды
echo "24" > /sys/class/gpio/export
в системе появится директория «/sys/class/gpio/gpio24/» (можно убедиться в этом с помощью ls).
Для настройки типа пина (вход или выход) используется файл «direction»: чтобы настроить пин на вход необходимо записать в файл «in», чтобы настроить на выход – «out». Например, команда
echo "out" > /sys/class/gpio/gpio24/direction
настроит пин с номером 24 на выход.
Установка выходного логического уровня на пине осуществляется с помощью записи «1» или «0» в файл «value». Например, команда
echo "1" > /sys/class/gpio/gpio24/value
установит на выходе пина с номером 24 логическую единицу (напряжение 3,3 В).
Для того, чтобы сделать управление пином недоступным из пространства пользователя необходимо записать его номер в файл «/sys/class/gpio/unexport». Например, после ввода команды
echo "24" > /sys/class/gpio/unexport
из файловой системы исчезнет директория «/sys/class/gpio/gpio24».
В системе не допускается запись номера пина в файл «export» если уже существует директория для данного пина (то есть запись в «export» уже была проведена ранее).
В Листинге 1 приведена последовательность команд для настройки и выдачи логической единицы на пине с номером 24, который на лабораторном стенде подключен к светодиоду LED0 (красный):
Листинг 1. Выдача логической единицы на пине с номером 24.
# Экспорт выводов в пространство пользователя
echo "24" > /sys/class/gpio/export
# Установка вывода 24 в качестве выхода
echo "out" > /sys/class/gpio/gpio24/direction
# Установка высокого уровня на значение вывода 24
echo "1" > /sys/class/gpio/gpio24/value
Для чтения состояния пина, настроенного на вход, так же используется файл «value», содержимое которого может быть выведено на экран терминала с помощью программы cat. В Листинге 2 приведена последовательность команд для настройки пина с номером 22 в качестве входа. На лабораторном стенде данный пин подключен к кнопке BTN0:
Листинг 2. Выдача логической единицы на пине с номером 24.
echo "22" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio22/direction
cat /sys/class/gpio/gpio4/value
Если кнопка BTN0 не была нажата во время вызова cat, то на экране отобразится «1». Если кнопка была нажата, то cat выведет на экран «0».