Автор Тема: поддержка GPIO  (Прочитано 3920 раз)

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 494
  • Лайков: 161
  • Карма: +25/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: поддержка GPIO
« Ответ #15 : Июнь 11, 2018, 09:09:59 pm »
Цитата: ua3nbw
Никак, в arm нет аналога lspci.
У Allwinner-H6 есть PCI-Express шина, но так же как и у H5 не для внутренних устройств.
lspci там работать будет, но только для внешних устройств.
Цитата: Olej
Ещё раз спрошу здесь (уже спрашивал в других темах!):
- как посмотреть информацию о конкретных периферийных чипах на шинах?...
о каких периферийных шинах может быть речь, смотрю на свои одноплатники, вижу SoC, Ram, GMAC у некорорых, sata on SoC, sata через USB, usb-хаб, SD-карты eMMC NAND SPI-flash, WiFi на USB, и самое экзотичное WiFi на SPI.

Оффлайн Olej

Re: поддержка GPIO
« Ответ #16 : Июнь 11, 2018, 09:12:32 pm »
olej@orangepione:~$ lsmod | grep gpio
С помощью кого из них осуществляется поддержка GPIO на уровне общих стандартов Linux:
Никого. Нет никакого драйвера поддержки GPIO.
Просто они вкомпилировали поддержку GPIO непосредственно в ядро Linux, без всяких модулей:
olej@orangepione:~$ cat /boot/config-4.14.48-sunxi | grep GPIO
CONFIG_ARCH_NR_GPIO=416
CONFIG_RFKILL_GPIO=m
CONFIG_MTD_NAND_GPIO=y
# CONFIG_MDIO_BUS_MUX_GPIO is not set
# CONFIG_KEYBOARD_GPIO is not set
# CONFIG_KEYBOARD_GPIO_POLLED is not set
# CONFIG_MOUSE_GPIO is not set
# CONFIG_INPUT_GPIO_BEEPER is not set
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
CONFIG_INPUT_GPIO_DECODER=m
CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
CONFIG_SERIO_GPIO_PS2=m
CONFIG_I2C_ARB_GPIO_CHALLENGE=m
CONFIG_I2C_MUX_GPIO=m
# CONFIG_I2C_CBUS_GPIO is not set
# CONFIG_I2C_GPIO is not set
# CONFIG_SPI_GPIO is not set
CONFIG_PPS_CLIENT_GPIO=m
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
CONFIG_GPIOLIB=y
CONFIG_OF_GPIO=y
CONFIG_GPIOLIB_IRQCHIP=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
# Memory mapped GPIO drivers
# CONFIG_GPIO_74XX_MMIO is not set
CONFIG_GPIO_ALTERA=m
CONFIG_GPIO_AXP209=y
# CONFIG_GPIO_DWAPB is not set
# CONFIG_GPIO_FTGPIO010 is not set
# CONFIG_GPIO_GENERIC_PLATFORM is not set
# CONFIG_GPIO_GRGPIO is not set
# CONFIG_GPIO_MOCKUP is not set
# CONFIG_GPIO_MPC8XXX is not set
CONFIG_GPIO_SYSCON=m
# CONFIG_GPIO_XILINX is not set
# CONFIG_GPIO_ZEVIO is not set
# I2C GPIO expanders
# CONFIG_GPIO_ADP5588 is not set
# CONFIG_GPIO_ADNP is not set
# CONFIG_GPIO_MAX7300 is not set
# CONFIG_GPIO_MAX732X is not set
# CONFIG_GPIO_PCA953X is not set
CONFIG_GPIO_PCF857X=m
# CONFIG_GPIO_SX150X is not set
# CONFIG_GPIO_TPIC2810 is not set
# MFD GPIO expanders
# CONFIG_HTC_EGPIO is not set
# SPI GPIO expanders
# CONFIG_GPIO_74X164 is not set
# CONFIG_GPIO_MAX7301 is not set
# CONFIG_GPIO_MC33880 is not set
# CONFIG_GPIO_PISOSR is not set
# CONFIG_GPIO_XRA1403 is not set
# USB GPIO expanders
CONFIG_W1_MASTER_GPIO=m
CONFIG_POWER_RESET_GPIO=y
# CONFIG_POWER_RESET_GPIO_RESTART is not set
# CONFIG_CHARGER_GPIO is not set
CONFIG_SENSORS_GPIO_FAN=m
CONFIG_GPIO_WATCHDOG=m
# CONFIG_SSB_DRIVER_GPIO is not set
# CONFIG_BCMA_DRIVER_GPIO is not set
CONFIG_REGULATOR_GPIO=y
# CONFIG_IR_GPIO_CIR is not set
CONFIG_IR_GPIO_TX=m
CONFIG_BACKLIGHT_GPIO=m
# CONFIG_USB_GPIO_VBUS is not set
CONFIG_LEDS_GPIO=y
CONFIG_LEDS_TRIGGER_GPIO=m
CONFIG_EXTCON_GPIO=m
CONFIG_EXTCON_USB_GPIO=m
CONFIG_MUX_GPIO=m
CONFIG_TRACING_EVENTS_GPIO=y

Оффлайн Olej

Re: поддержка GPIO
« Ответ #17 : Июнь 11, 2018, 09:20:00 pm »
lspci там работать будет, но только для внешних устройств.
Цитата: Olej
Ещё раз спрошу здесь (уже спрашивал в других темах!):
- как посмотреть информацию о конкретных периферийных чипах на шинах?...
о каких периферийных шинах может быть речь, смотрю на свои одноплатники, вижу SoC, Ram, GMAC у некорорых, sata on SoC, sata через USB, usb-хаб, SD-карты eMMC NAND SPI-flash, WiFi на USB, и самое экзотичное WiFi на SPI.
C PCI всё понятно, оставили PCI, это я для иллюстрации назвал PCI...
Но вот те же устройства ... считыватель SD, например, или Ethernet чип - должны как-то идентифицироваться по типу чипа и способу подключения?
Какой командой вы отличите SoC с WiFi от такого же SoC без него? Вывод чего (команды) будет у них отличаться?

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 494
  • Лайков: 161
  • Карма: +25/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: поддержка GPIO
« Ответ #18 : Июнь 11, 2018, 09:24:39 pm »
Цитата: Olej
Ну так вот всё, что связано с прерываниями - работает через sysfs, а всё, что не работает с прерываниями - работает напрямую с портами I/O.
У портов PA PG и PL есть режим "внешнего прерывания" на аппаратном уровне.
как оно работает, не скажу, не разбирался.

Оффлайн Olej

Re: поддержка GPIO
« Ответ #19 : Июнь 11, 2018, 11:17:27 pm »
Цитата: Olej
Ну так вот всё, что связано с прерываниями - работает через sysfs, а всё, что не работает с прерываниями - работает напрямую с портами I/O.
У портов PA PG и PL есть режим "внешнего прерывания" на аппаратном уровне.
как оно работает, не скажу, не разбирался.
Внешние прерывания - это прерывания, идущие снаружи SoC.
Все книги по яду Linux учат, что только ядро Linux может обрабатывать прерывания, хоть аппаратные хоть программные, ... и более того, код обработчика - это неустойчивый фрагмент, который допускает безопасно только нищенскую часть набора API, и который обязан завершиться как можно быстрее.
Ничего подобного обрабатываться в пользовательском адресном пространстве не может ... иначе ОС очень скоро прийдёт полный капец с глухим зависанием.
 

Оффлайн Olej

Re: поддержка GPIO
« Ответ #20 : Июнь 11, 2018, 11:44:37 pm »
Но вот те же устройства ... считыватель SD, например, или Ethernet чип - должны как-то идентифицироваться по типу чипа и способу подключения?
Какой командой вы отличите SoC с WiFi от такого же SoC без него? Вывод чего (команды) будет у них отличаться?
Что-то типа вот этого, но более детализировано - этого мало:
olej@orangepione:~$ sudo lshw 
orangepione                 
    description: ARMv7 Processor rev 5 (v7l)
    product: Xunlong Orange Pi One
    serial: 02c000815fd5e717
    width: 32 bits
    capabilities: smp
  *-core
       description: Motherboard
       physical id: 0
     *-cpu:0
          description: CPU
          product: cpu
          physical id: 0
          bus info: cpu@0
          size: 1200MHz
          capacity: 1200MHz
          capabilities: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm cpufreq
     *-cpu:1
          description: CPU
          product: cpu
          physical id: 1
          bus info: cpu@1
          size: 1200MHz
          capacity: 1200MHz
          capabilities: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm cpufreq
     *-cpu:2
          description: CPU
          product: cpu
          physical id: 2
          bus info: cpu@2
          size: 1200MHz
          capacity: 1200MHz
          capabilities: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm cpufreq
     *-cpu:3
          description: CPU
          product: cpu
          physical id: 3
          bus info: cpu@3
          size: 1200MHz
          capacity: 1200MHz
          capabilities: half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm cpufreq
     *-memory
          description: System memory
          physical id: 4
          size: 493MiB
  *-usbhost:0
       product: EHCI Host Controller
       vendor: Linux 4.14.48-sunxi ehci_hcd
       physical id: 2
       bus info: usb@1
       logical name: usb1
       version: 4.14
       capabilities: usb-2.00
       configuration: driver=hub slots=1 speed=480Mbit/s
  *-usbhost:1
       product: Generic Platform OHCI controller
       vendor: Linux 4.14.48-sunxi ohci_hcd
       physical id: 3
       bus info: usb@2
       logical name: usb2
       version: 4.14
       capabilities: usb-1.10
       configuration: driver=hub slots=1 speed=12Mbit/s
  *-usbhost:2
       product: EHCI Host Controller
       vendor: Linux 4.14.48-sunxi ehci_hcd
       physical id: 4
       bus info: usb@3
       logical name: usb3
       version: 4.14
       capabilities: usb-2.00
       configuration: driver=hub slots=1 speed=480Mbit/s
  *-usbhost:3
       product: Generic Platform OHCI controller
       vendor: Linux 4.14.48-sunxi ohci_hcd
       physical id: 5
       bus info: usb@4
       logical name: usb4
       version: 4.14
       capabilities: usb-1.10
       configuration: driver=hub slots=1 speed=12Mbit/s
     *-usb
          description: USB hub
          product: USB Hub 2.0
          vendor: ALCOR
          physical id: 1
          bus info: usb@4:1
          version: 7.02
          capabilities: usb-2.00
          configuration: driver=hub maxpower=100mA slots=4 speed=12Mbit/s
        *-usb:0
             description: Keyboard
             product: USB Keyboard
             vendor: Logitech
             physical id: 3
             bus info: usb@4:1.3
             version: 64.00
             capabilities: usb-1.10
             configuration: driver=usbhid maxpower=90mA speed=1Mbit/s
        *-usb:1
             description: Mouse
             product: USB OPTICAL MOUSE
             physical id: 4
             bus info: usb@4:1.4
             version: 1.00
             capabilities: usb-1.10
             configuration: driver=usbhid maxpower=100mA speed=1Mbit/s
  *-usbhost:4
       product: MUSB HDRC host driver
       vendor: Linux 4.14.48-sunxi musb-hcd
       physical id: 1
       bus info: usb@5
       logical name: usb5
       version: 4.14
       capabilities: usb-2.00
       configuration: driver=hub slots=1 speed=480Mbit/s
  *-network
       description: Ethernet interface
       physical id: 6
       logical name: eth0
       serial: 02:81:5f:d5:e7:17
       size: 100Mbit/s
       capacity: 100Mbit/s
       capabilities: ethernet physical tp aui bnc mii fibre 10bt 10bt-fd 100bt 100bt-fd autonegotiation
       configuration: autonegotiation=on broadcast=yes driver=st_mac100 driverversion=Jan_2016 duplex=full ip=192.168.1.201 link=yes multicast=yes port=MII speed=100Mbit/s

Оффлайн Olej

Re: поддержка GPIO
« Ответ #21 : Июнь 12, 2018, 11:43:58 pm »
У портов PA PG и PL есть режим "внешнего прерывания" на аппаратном уровне.
как оно работает, не скажу, не разбирался.
У ARM-процессоров/ОС для ARM - есть кольца безопасности?
Цитировать
Все платформы, предназначенные для поддержки операционных систем с изоляцией памяти, имеют некоторую систему привилегий. На процессорах x86 уровни привилегий называются "кольцом 0" через "кольцо 3". На процессорах ARM уровни привилегий называются "режимом супервизора" и "пользовательским режимом". Имена и реализации различны, но понятия одинаковы. Некоторые регистры сгруппированы, т.е. Имеется отдельный регистр в другом режиме; другие регистры разделены, поэтому более привилегированный режим должен позаботиться о том, чтобы проверить значение на входе, а не на утечку данных на выходе.
Или более строго - Registers and Processor Modes:
Цитировать
By now you may be wondering about these "modes", such as "FIQ" mentioned above.

User Mode, the usual mode for applications to run in. Your memory access is restricted and you cannot read directly from hardware devices.
Supervisor Mode (SVC Mode), used mainly by SWIs and the OS. This mode has additional privileges which allow greater control of the computer. For example, you have to go to Supervisor Mode in order to read from a podule. It cannot be done in User Mode.
Interrupt Mode (IRQ Mode), used to handle peripherals that issues interrupts. This mode is also privileged. Such devices causing IRQs are the keyboard, the VSync (when the screen refresh is occurring), IOC timers, serial, harddisc, floppy etc etc...
Fast Interrupt Mode (FIQ Mode), used to handle peripherals that issue fast interrupts. This mode is also privileged. Such devices causing FIQs are the floppy disc handling data, the serial port (on 82C71x machines such as the A5000) and Econet.
The difference between IRQ and FIQ is with FIQ you have to process your stuff as quickly as possible and then get the .... out of there. An IRQ may be interrupted by an FIQ but an IRQ cannot interrupt an FIQ. To make FIQs faster, they have more shadow registers. FIQs cannot call SWIs. FIQs must also disable interrupts. If it becomes necessary for an FIQ routine to re-enable interrupts, it's too slow and should be IRQ not FIQ. Phew!
Или "на пальцах", в моём изложении:
- во всех современных операционных системах с аппаратной защитой есть единственный способ взаимодействия программного кода пространства пользователя с ядром ОС: системный вызов, выполнение выделенной привилегированной команды для перехода на другой уровень защиты (user -> supervisor)
- тогда происходит аппаратное прерывание и смена уровня привилегий
- и нет никаких других способов
- а прерывания могут обрабатываться только в привилегированном коде ядра, и никак иначе
- это классика всех вообще UNIX систем

P.S. В Linux есть некоторый побочные, более поздние механизмы, когда ядро может взаимодействовать с кодом пользовательского пространства (supervisor -> user): широковещательные сообщения сокета netlink - подсистема udev, посылка сигнала UNIX выбранному процессу... Но это больше экзотика, чем правило.
И никогда наоборот (user -> supervisor).

Оффлайн Olej

Re: поддержка GPIO
« Ответ #22 : Ноябрь 23, 2018, 09:47:34 am »
Ещё раз пришлось вернуться к GPIO...
Вот в этой табличке WiringOP:
Установил WiringOP ... как пишут здесь: Установка и настройка WiringOP/WiringPi на Orange Pi PC (и ещё во множестве сходных мест)
Цитировать
08.11.2016
Orange Pi проекты
olej@orangepione:~/WiringOP$ gpio -v
gpio version: 2.20
Copyright (c) 2012-2014 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Banana Pro Details:
  Type: Banana Pro, Revision: 1.2, Memory: 1024MB, Maker: LeMaker
olej@orangepione:~/WiringOP$ gpio readall
 +-----+-----+----------+------+---+-Orange Pi+---+---+------+---------+-----+--+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |
 |  12 |   8 |    SDA.0 | ALT3 | 0 |  3 || 4  |   |      | 5V       |     |     |
 |  11 |   9 |    SCL.0 | ALT3 | 0 |  5 || 6  |   |      | 0v       |     |     |
 |   6 |   7 |   GPIO.7 | ALT3 | 0 |  7 || 8  | 0 | ALT3 | TxD3     | 15  | 13  |
 |     |     |       0v |      |   |  9 || 10 | 0 | ALT3 | RxD3     | 16  | 14  |
 |   1 |   0 |     RxD2 | ALT3 | 0 | 11 || 12 | 0 | ALT3 | GPIO.1   | 1   | 110 |
 |   0 |   2 |     TxD2 | ALT3 | 0 | 13 || 14 |   |      | 0v       |     |     |
 |   3 |   3 |     CTS2 | ALT3 | 0 | 15 || 16 | 0 | ALT3 | GPIO.4   | 4   | 68  |
 |     |     |     3.3v |      |   | 17 || 18 | 0 | ALT3 | GPIO.5   | 5   | 71  |
 |  64 |  12 |     MOSI | ALT3 | 0 | 19 || 20 |   |      | 0v       |     |     |
 |  65 |  13 |     MISO | ALT3 | 0 | 21 || 22 | 0 | ALT3 | RTS2     | 6   | 2   |
 |  66 |  14 |     SCLK | ALT3 | 0 | 23 || 24 | 0 | ALT3 | CE0      | 10  | 67  |
 |     |     |       0v |      |   | 25 || 26 | 0 | ALT3 | GPIO.11  | 11  | 21  |
 |  19 |  30 |    SDA.1 | ALT3 | 0 | 27 || 28 | 0 | ALT3 | SCL.1    | 31  | 18  |
 |   7 |  21 |  GPIO.21 | ALT3 | 0 | 29 || 30 |   |      | 0v       |     |     |
 |   8 |  22 |  GPIO.22 | ALT3 | 0 | 31 || 32 | 0 | ALT3 | RTS1     | 26  | 200 |
 |   9 |  23 |  GPIO.23 | ALT3 | 0 | 33 || 34 |   |      | 0v       |     |     |
 |  10 |  24 |  GPIO.24 | ALT3 | 0 | 35 || 36 | 0 | ALT3 | CTS1     | 27  | 201 |
 |  20 |  25 |  GPIO.25 | ALT3 | 0 | 37 || 38 | 0 | ALT3 | TxD1     | 28  | 198 |
 |     |     |       0v |      |   | 39 || 40 | 0 | ALT3 | RxD1     | 29  | 199 |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+-Orange Pi+---+------+----------+-----+-----+
Здесь есть 3 колонки относительно нумерации ног GPIO:
- Physical
- wPi - это, наверное, соответствует гребёнке GPIO Rapsberry Pi
- BCM - это что? ... наверное это соответствует Banana Pro, судя по заголовку версии программы. Но каким моделям Orange Pi это соответствует, или не соответствует... тем более, что распиновка GPIO моделей Orange Pi различаются.
 

Оффлайн AlDemin

  • Житель
  • ****
  • Сообщений: 494
  • Лайков: 161
  • Карма: +25/-1
  • OPi, OPi+, OPiOne, OPiZero, OPiPC2, BPi, RPiB.
    • Просмотр профиля
Re: поддержка GPIO
« Ответ #23 : Ноябрь 23, 2018, 01:39:07 pm »
Цитировать
- Physical
это номер контакта на гребенке
Цитировать
- wPi - это,
это логический номер порта условно так обозванный автором библиотеки.
Цитировать
- BCM - это что?
Это скорее всего номер ноги на чипе Broadcom: "Привет от малины."
Доки нормально не правлены, те кто переписывал WiringPi в WiringOP на это забил.
А не проще работать без этой прокладки?

Оффлайн Olej

Re: поддержка GPIO
« Ответ #24 : Ноябрь 23, 2018, 03:54:03 pm »
Цитировать
- Physical
это номер контакта на гребенке
Т.е. для своих устройств, макетов и т.д. нужно использовать именно этот номер как параметр программы gpio?
А не проще работать без этой прокладки?
1. наверное, иногда удобнее одно, а иногда - другое (т.е. системная поддержка GPIO со стороны ядра);
2. а это вы у ua3nbw спросите ;) - он очень любит WiringOP ... я думаю, что он вскоре появится и внесёт ясность;

Оффлайн Olej

Re: поддержка GPIO
« Ответ #25 : Ноябрь 23, 2018, 07:36:52 pm »
Распиновку разъёмов всех (почти всех?) моделей Orange Pi находим здесь: 
Orange Pi проекты
Цитировать
Распиновка всех моделей Orange Pi (Orange Pi pinout / Pin definition), назначение и описание разъемов GPIO
04.12.2016
В данной статье я собрал распиновки (Orange Pi pinout) всех моделей Orange Pi: Orange Pi, Orange Pi 2, Orange Pi Mini, Orange Pi Mini 2, Orange Pi One, Orange Pi Lite, Orange Pi PC, Orange Pi PC 2, Orange Pi Plus, Orange Pi Plus 2, Orange Pi Plus 2E, Orange Pi Zero. В основном распиновка GPIO у всех почти одинакова — по 40 выводов общего назначения, кроме Orange Pi — 26 + 18 выводов и Orange Pi Zero — 26 + 13 выводов.
В частности, для OPI One (что меня на сегодня интересует) это так (выглядит плохо, но понять можно):
Цитировать
2×20 Выводов (H3)
1	3.3V	2	VCC-5V
3 PA12 (TWI0-SDA/DI_RX/EINT12) 4 VCC-5V
5 PA11 (TWI0-SCK/DI_TX/EINT11) 6 GND
7 PA6 (SIM_PWREN/PWM1/PA_EINT6) 8 PA13 (SPI1_CS/UART3_TX/PA_EINT13)
9 GND 10 PA14 (SPI1_CLK/UART3_RX/PA_EINT14)
11 PA1 (UART2_RX/JTAG_CK0/PA_EINT1) 12 PD14(RGMII_NULL/MII_TXERR/RMII_NULL)
13 PA0 (UART2_TX/JTAG_MS0/PA_EINT0) 14 GND
15 PA3 (UART2_CTS/JTAG_DI0/PA_EINT3) 16 PC4 (NAND_CE0)
17 3.3V 18 PC7 (NAND_RB1)
19 PC0 (NAND_WE/SPI0_MOSI) 20 GND
21 PC1 (NAND_ALE/SPI0_MISO) 22 PA2 (UART2_RTS/JTAG_DO0/PA_EINT2)
23 PC2 (NAND_CLE/SPI0_CLK) 24 PC3 (NAND_CE1/SPI0_CS)
25 GND 26 PA21 (PCM0_DIN/SIM_VPPPP/PA_EINT21)
27 PA19 (PCM0_CLK/TWI1_SDA/PA_EINT19) 28 PA18 (PCM0_SYNC/TWI1_SCK/PA_EINT18)
29 PA7 (SIM_CLK/PA_EINT7) 30 GND
31 PA8 (SIM_DATA/PA_EINT8) 32 PG8 (UART1_RTS/PG_EINT8)
33 PA9 (SIM_RST/PA_EINT9) 34 GND
35 PA10 (SIM_DET/PA_EINT10) 36 PG9 (UART1_CTS/PG_EINT9)
37 PA20 (PCM0_DOUT/SIM_VPPEN/PA_EINT20) 38 PG6 (UART1_TX/PG_EINT6)
39 GND 40 PG7 (UART1_RX/PG_EINT7)

Оффлайн Olej

Re: поддержка GPIO
« Ответ #26 : Ноябрь 23, 2018, 07:41:10 pm »
В частности, для OPI One (что меня на сегодня интересует) это так (выглядит плохо, но понять можно):
Это очень похоже на то, что мне даёт экспериментально запущенная программ gpio, в колонке Physical:
Цитировать
olej@orangepione:~/WiringOP$ gpio readall
 +-----+-----+----------+------+---+-Orange Pi+---+---+------+---------+-----+--+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 |     |     |     3.3v |      |   |  1 || 2  |   |      | 5v       |     |     |
 |  12 |   8 |    SDA.0 | ALT3 | 0 |  3 || 4  |   |      | 5V       |     |     |
 |  11 |   9 |    SCL.0 | ALT3 | 0 |  5 || 6  |   |      | 0v       |     |     |
 |   6 |   7 |   GPIO.7 | ALT3 | 0 |  7 || 8  | 0 | ALT3 | TxD3     | 15  | 13  |
 |     |     |       0v |      |   |  9 || 10 | 0 | ALT3 | RxD3     | 16  | 14  |
 |   1 |   0 |     RxD2 | ALT3 | 0 | 11 || 12 | 0 | ALT3 | GPIO.1   | 1   | 110 |
 |   0 |   2 |     TxD2 | ALT3 | 0 | 13 || 14 |   |      | 0v       |     |     |
 |   3 |   3 |     CTS2 | ALT3 | 0 | 15 || 16 | 0 | ALT3 | GPIO.4   | 4   | 68  |
 |     |     |     3.3v |      |   | 17 || 18 | 0 | ALT3 | GPIO.5   | 5   | 71  |
 |  64 |  12 |     MOSI | ALT3 | 0 | 19 || 20 |   |      | 0v       |     |     |
 |  65 |  13 |     MISO | ALT3 | 0 | 21 || 22 | 0 | ALT3 | RTS2     | 6   | 2   |
 |  66 |  14 |     SCLK | ALT3 | 0 | 23 || 24 | 0 | ALT3 | CE0      | 10  | 67  |
 |     |     |       0v |      |   | 25 || 26 | 0 | ALT3 | GPIO.11  | 11  | 21  |
 |  19 |  30 |    SDA.1 | ALT3 | 0 | 27 || 28 | 0 | ALT3 | SCL.1    | 31  | 18  |
 |   7 |  21 |  GPIO.21 | ALT3 | 0 | 29 || 30 |   |      | 0v       |     |     |
 |   8 |  22 |  GPIO.22 | ALT3 | 0 | 31 || 32 | 0 | ALT3 | RTS1     | 26  | 200 |
 |   9 |  23 |  GPIO.23 | ALT3 | 0 | 33 || 34 |   |      | 0v       |     |     |
 |  10 |  24 |  GPIO.24 | ALT3 | 0 | 35 || 36 | 0 | ALT3 | CTS1     | 27  | 201 |
 |  20 |  25 |  GPIO.25 | ALT3 | 0 | 37 || 38 | 0 | ALT3 | TxD1     | 28  | 198 |
 |     |     |       0v |      |   | 39 || 40 | 0 | ALT3 | RxD1     | 29  | 199 |
 +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+
 | BCM | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | BCM |
 +-----+-----+----------+------+---+-Orange Pi+---+------+----------+-----+-----+
В принципе, не просто совпадает, а в точности идентично ... насколько я могу сравнить.
« Последнее редактирование: Ноябрь 23, 2018, 07:48:44 pm от Olej »

Оффлайн Olej

Re: поддержка GPIO
« Ответ #27 : Ноябрь 23, 2018, 07:54:06 pm »
Это очень похоже на то, что мне даёт экспериментально запущенная программ gpio, в колонке Physical:
И это означает, насколько я понимаю, по этой таблице, для того, чтобы лёргать пином N 40-контактного разъёма, я должен программно (из shell, C - не важно) дёргать GPIO с номером M, где, например:
GPIO     PIN
21        29
22        31
23        33
24        35
25        37

12        01
16        04
18        05

« Последнее редактирование: Ноябрь 23, 2018, 08:13:55 pm от Olej »

Оффлайн Olej

Re: поддержка GPIO
« Ответ #28 : Ноябрь 23, 2018, 08:23:34 pm »
Т.е. чтобы системными средствами (через /sys) управлять выходом pin 37 нужно делать что-то типа следующего c GPIO25:
# echo 25 > /sys/class/gpio/export 
# echo out > /sys/class/gpio/gpio25/direction
# echo 1 > /sys/class/gpio/gpio25/value
...
# echo 0 > /sys/class/gpio/gpio25/value

Оффлайн Olej

Re: поддержка GPIO
« Ответ #29 : Ноябрь 23, 2018, 09:56:22 pm »
Это очень похоже на то, что мне даёт экспериментально запущенная программ gpio, в колонке Physical:
И это означает, насколько я понимаю, по этой таблице, для того, чтобы лёргать пином N 40-контактного разъёма, я должен программно (из shell, C - не важно) дёргать GPIO с номером M, где, например:
GPIO     PIN
21        29
22        31
23        33
24        35
25        37

12        01
16        04
18        05

P.S. Дописано позже: всё написанное выше - неверно. И всё разъясняет:
olej@orangepione:~/WiringOP$ man gpio
....
Очень обстоятельный man!
И все параметры gpio задаются не в номерах GPIO, а непосредственно в pin!
Например:
# gpio mode 16 output
...
# gpio write 16 1
...
Там же (в man) находим такие интересные опции:
Цитировать
       -g     Use the BCM_GPIO pins numbers rather than wiringPi pin numbers.  Note: The  BCM_GPIO  pin  numbers  are
              always used with the export and edge commands.

       -1     Use  the physical pin numbers rather than wiringPi pin numbers.  Note: that this applies to the P1 con‐
              nector only. It is not possible to use pins on the Revision 2 P5 connector this way, and as with -g the
              BCM_GPIO pin numbers are always used with the export and edge commands.