Urry писал(а):
Olej писал(а):
Тем более, что в подавляющем большинстве плат всех производителей гребёнки GPIO + поддерживающий их механизм GPIO Linux появились относительно поздно - на большинстве аппаратных плат - 6-7 лет назад. Это привнесённый, новый механизм, для других целей.
Хотел бы переспросить. Другие цели - это встраиваемая электроника?
Можно и так сказать ... только дело не в названиях, а в том, что под ними понимать, договариваться.
Глядя на то, для каких целей народ, в большинстве, пользует GPIO - это, в основном,
отдельные, бинарные исполнительные линии, например: включить реле...
Вообще то, GPIO и в Linux, и в одноплатных SBC, это, как мне кажется - эксплуатация оказавшихся успешными идей Arduino и перенос их в универсальный компьютер - отдельные дискретные сигнальные линии. Почему я думаю, что именно "в следствии" - потому что и по времени: до бурного всплеска Arduino в универсальных компьютерах не было GPIO ни в железе, ни в Linux.
Urry писал(а):
По моему мнению, одноплатные компьютеры, а-ля Малинки-Апельсинки (дёшево и сердито), уже довольно плотно используют в автоматизации технологических процессов и ещё чаще во всякой исследовательской аппаратуре именно благодаря "гребёнке".
Вообще то говоря, в "автоматизации технологических процессов", в АСУТП то-есть, там где это серьёзно, используют до сих пор программируемые логические контроллеры, PLC (Siemens, Schneider Electric etc.) ... т.е. может даже и универсальные компьютерные архитектуры в этом качестве, но запущенные по принципу исключительно программного опроса, циклического пулинга ... ну и уж никак аппаратно (пока) SBC, все эти Pi
.
И в этом смысле для целей a'la АСУТП ближе Arduino и его идеи, чем SBC.
Urry писал(а):
Раньше требовалось разработать плату с АЦП, микроконтроллером с дополнительным внешним ОЗУ (или ПЛИСиной), который бы обеспечивал обмен данными между устройством и ПК, например по USB.
Сейчас достаточно легко к Малинке-Апельсинке аппаратно "прикрутить" через "гребенку" аналоговую измерительную часть - микросхемы АЦП, ЦАП. Процессор достаточно мощный. Можно делать математическую обработку на борту. Однако, если подключать к одноплатникам микросхемы, нужны и выводы GPIO. Одного интерфейса SPI недостаточно. Думаю, что в этом случае использование выводов GPIO, а тем более прерываний не "вычурность", а просто необходимость.
Всё это так.
Только более-менее "понятные" устройства, типовые (АЦП, ЦАП, дисплеи, индикаторы и др.) - лучше и проще (!) подключать через стандартизованные шины (CPI, I2C) и в большинстве случаев (глядя кто и как) так и делают. Это то же самое, что периферийные устройства всегда считалось лучше подключать черех стандартизованные интерфейсы: RS-232, RS-485, Modbus, CAN, USB ... - выбирай не хочу, чем городить к ним собственный TTL или не TTL интерфейс с собственными протоколами.
А GPIO - это из области отдельных
дискретных входов-выходов.
Тем более, что для объединения линий GPIO в группы (для создания
цифрового выхода или входа) у вас то там и не так много
свободных, потому что большинство из них стандартно уже задействовано под какие-то цели и устройства.
Urry писал(а):
Жаль, что под Linux возникают проблемы работы с GPIO. Начинающим программистам проще идти по пройденному пути разработки и использовать готовые результаты.
А если для конкретного одноплатного компьютера не написано драйвера, свободного в интернете?..
Скорее всего, именно из-за этого возник к вам вопрос по использованию GPIO выводов.
А почему вы решили, что с программным использованием GPIO есть какие-то трудности? ... даже у самых начинающих!
В Linux как-раз существует а). цельная, б). простая, в). исчерпывающая поддержка GPIO на уровне
ядра. Тут вот рядом тема даже была отдельно:
GPIO в Linux. И там не нужно ничего
дописывать, это нужно просто
брать и использовать.
Одних только конфигурационных параметров ядра Linux относительно деталей функционирования подсистемы GPIO:
Код: Выделить всё
[olej@xenix ~]$ cat /boot/config-`uname -r` | grep GPIO | wc -l
80
Во! Аж 80 штук!
Но и этого ещё мало ... как-раз в сообществах Rapsberry/Orange появилась идея и проекты совсем уж "на коленке" - поддержка GPIO в пространстве
пользователя, проекты WiringPi / WiringOP, см.
GPIO.