GPIO в Linux

Вопросы программного кода и архитектуры Linux

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO в Linux

Непрочитанное сообщение Olej » 26 авг 2022, 01:13

Olej писал(а):
26 авг 2022, 00:56
Rasberry Pi / Raspbian:

Код: Выделить всё

olej@raspberrypi:~/2022/kernel/examples/GPIO $ ls -l /dev/gpio*
crw-rw---- 1 root gpio 254, 0 авг 25 14:14 /dev/gpiochip0
crw-rw---- 1 root gpio 245, 0 авг 25 14:14 /dev/gpiomem

Код: Выделить всё

olej@raspberrypi:~/2022/kernel/examples/GPIO $ sudo ./info /dev/gpiomem
Unable to get chip info from ioctl: Inappropriate ioctl for device
Этого я не понимаю... Да и само имя /dev/gpiomem выпадает из правила - должны быть имена /dev/gpiochip* :

Код: Выделить всё

olej@raspberrypi:~/2022/kernel/examples/GPIO $ sudo ./info /dev/gpiochip0
Chip name: gpiochip0
Chip label: pinctrl-bcm2835
Number of lines: 54
Полная форма вывода:

Код: Выделить всё

olej@raspberrypi:~/2022/kernel/examples/GPIO $ sudo ./info -v /dev/gpiochip0
Chip name: gpiochip0
Chip label: pinctrl-bcm2835
Number of lines: 54
offset: 0, name: ID_SDA, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 1, name: ID_SCL, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 2, name: SDA1, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 3, name: SCL1, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 4, name: GPIO_GCLK, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 5, name: GPIO5, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 6, name: GPIO6, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 7, name: SPI_CE1_N, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 8, name: SPI_CE0_N, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 9, name: SPI_MISO, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 10, name: SPI_MOSI, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 11, name: SPI_SCLK, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 12, name: GPIO12, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 13, name: GPIO13, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 14, name: TXD0, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 15, name: RXD0, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 16, name: GPIO16, consumer: . Flags:	[OUTPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 17, name: GPIO17, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 18, name: GPIO18, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 19, name: GPIO19, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 20, name: GPIO20, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 21, name: GPIO21, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 22, name: GPIO22, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 23, name: GPIO23, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 24, name: GPIO24, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 25, name: GPIO25, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 26, name: GPIO26, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 27, name: GPIO27, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 28, name: SDA0, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 29, name: SCL0, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 30, name: NC, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 31, name: LAN_RUN, consumer: . Flags:	[OUTPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 32, name: CAM_GPIO1, consumer: . Flags:	[OUTPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 33, name: NC, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 34, name: NC, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 35, name: PWR_LOW_N, consumer: led1. Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[KERNEL]
offset: 36, name: NC, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 37, name: NC, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 38, name: USB_LIMIT, consumer: . Flags:	[OUTPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 39, name: NC, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 40, name: PWM0_OUT, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 41, name: CAM_GPIO0, consumer: cam1_regulator. Flags:	[OUTPUT]	[ACTIVE_HIGHT]	[...]	[...]	[KERNEL]
offset: 42, name: SMPS_SCL, consumer: . Flags:	[OUTPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 43, name: SMPS_SDA, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 44, name: ETH_CLK, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 45, name: PWM1_OUT, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 46, name: HDMI_HPD_N, consumer: hpd. Flags:	[INPUT]	[ACTIVE_LOW]	[...]	[...]	[KERNEL]
offset: 47, name: STATUS_LED, consumer: led0. Flags:	[OUTPUT]	[ACTIVE_HIGHT]	[...]	[...]	[KERNEL]
offset: 48, name: SD_CLK_R, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 49, name: SD_CMD_R, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 50, name: SD_DATA0_R, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 51, name: SD_DATA1_R, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 52, name: SD_DATA2_R, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 53, name: SD_DATA3_R, consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
Это те же 54 линии, но полученные из программного кода.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO в Linux

Непрочитанное сообщение Olej » 26 авг 2022, 01:23

Olej писал(а):
26 авг 2022, 00:56
Orange Pi / Armbian:

Код: Выделить всё

olej@orangepione:~/2022/kernel/examples/GPIO$ ls -l /dev/gpio*
crw------- 1 root root 254, 0 авг 25 17:17 /dev/gpiochip0
crw------- 1 root root 254, 1 авг 25 17:17 /dev/gpiochip1
Краткая форма:

Код: Выделить всё

olej@orangepione:~/2022/kernel/examples/GPIO$ sudo ./info /dev/gpiochip0
Chip name: gpiochip0
Chip label: 1c20800.pinctrl
Number of lines: 224

Код: Выделить всё

olej@orangepione:~/2022/kernel/examples/GPIO$ sudo ./info /dev/gpiochip1
Chip name: gpiochip1
Chip label: 1f02c00.pinctrl
Number of lines: 32
Полная форма:

Код: Выделить всё

olej@orangepione:~/2022/kernel/examples/GPIO$ sudo ./info -v /dev/gpiochip1
Chip name: gpiochip1
Chip label: 1f02c00.pinctrl
Number of lines: 32
offset: 0, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 1, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 2, name: , consumer: usb0-vbus. Flags:	[OUTPUT]	[ACTIVE_HIGHT]	[...]	[...]	[KERNEL]
offset: 3, name: , consumer: sw4. Flags:	[INPUT]	[ACTIVE_LOW]	[...]	[...]	[KERNEL]
offset: 4, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 5, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 6, name: , consumer: vdd-cpux. Flags:	[OUTPUT]	[ACTIVE_HIGHT]	[...]	[...]	[KERNEL]
offset: 7, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 8, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 9, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 10, name: , consumer: orangepi:green:pwr. Flags:	[OUTPUT]	[ACTIVE_HIGHT]	[...]	[...]	[KERNEL]
offset: 11, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 12, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 13, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 14, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 15, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 16, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 17, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 18, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 19, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 20, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 21, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 22, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 23, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 24, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 25, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 26, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 27, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 28, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 29, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 30, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 31, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]

Код: Выделить всё

olej@orangepione:~/2022/kernel/examples/GPIO$ sudo ./info -v /dev/gpiochip0
Chip name: gpiochip0
Chip label: 1c20800.pinctrl
Number of lines: 224
offset: 0, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 1, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 2, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 3, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 4, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 5, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 6, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 7, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 8, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 9, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 10, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 11, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 12, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 13, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 14, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 15, name: , consumer: orangepi:red:status. Flags:	[OUTPUT]	[ACTIVE_HIGHT]	[...]	[...]	[KERNEL]
offset: 16, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 17, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 18, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 19, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 20, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 21, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 22, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 23, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 24, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 25, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 26, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 27, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 28, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 29, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 30, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 31, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 32, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 33, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 34, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 35, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 36, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 37, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 38, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 39, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 40, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 41, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 42, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 43, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 44, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 45, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 46, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 47, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 48, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 49, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 50, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 51, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 52, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 53, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 54, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 55, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 56, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 57, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 58, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 59, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 60, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 61, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 62, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 63, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 64, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 65, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 66, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 67, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 68, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 69, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 70, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 71, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 72, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 73, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 74, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 75, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 76, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 77, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 78, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 79, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 80, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 81, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 82, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 83, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 84, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 85, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 86, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 87, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 88, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 89, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 90, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 91, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 92, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 93, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 94, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 95, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 96, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 97, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 98, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 99, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 100, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 101, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 102, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 103, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 104, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 105, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 106, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 107, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 108, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 109, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 110, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 111, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 112, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 113, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 114, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 115, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 116, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 117, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 118, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 119, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 120, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 121, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 122, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 123, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 124, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 125, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 126, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 127, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 128, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 129, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 130, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 131, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 132, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 133, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 134, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 135, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 136, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 137, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 138, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 139, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 140, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 141, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 142, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 143, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 144, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 145, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 146, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 147, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 148, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 149, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 150, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 151, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 152, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 153, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 154, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 155, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 156, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 157, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 158, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 159, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 160, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 161, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 162, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 163, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 164, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 165, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 166, name: , consumer: cd. Flags:	[INPUT]	[ACTIVE_LOW]	[...]	[...]	[KERNEL]
offset: 167, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 168, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 169, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 170, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 171, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 172, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 173, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 174, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 175, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 176, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 177, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 178, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 179, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 180, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 181, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 182, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 183, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 184, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 185, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 186, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 187, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 188, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 189, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 190, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 191, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 192, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 193, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 194, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 195, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 196, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 197, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 198, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 199, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 200, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 201, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 202, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 203, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 204, name: , consumer: usb0_id_det. Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[KERNEL]
offset: 205, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 206, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 207, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 208, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 209, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 210, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 211, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 212, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 213, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 214, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 215, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 216, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 217, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 218, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 219, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 220, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 221, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 222, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]
offset: 223, name: , consumer: . Flags:	[INPUT]	[ACTIVE_HIGHT]	[...]	[...]	[]

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO в Linux

Непрочитанное сообщение Olej » 26 авг 2022, 01:26

Olej писал(а):
26 авг 2022, 01:00
чуть позже я его приложу
Код:

Код: Выделить всё

#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <getopt.h>
#include <linux/gpio.h>

#define DEV_NAME "/dev/gpiochip0"

int main(int argc, char* argv[]) {
   int fd, ret, debug = 0;
   struct gpiochip_info info;
   struct gpioline_info line_info;
   char dev_name[80];
   while ((ret = getopt(argc, argv, "v")) != -1) {
      switch (ret) {
         case 'v':
            debug++;
            break;
         default:
            fprintf(stderr,
                    "Usage: %s options dev_name.\n"
                    "Options:\n"
                    "\t -v increase output level\n",
                    argv[0]);
            return -1;
      }
   }
   strcat(dev_name, 1 == argc ? DEV_NAME : argv[optind]);
   fd = open(dev_name, O_RDONLY);
   if (fd < 0) {
      printf("Unabled to open %s: %s\n", dev_name, strerror(errno));
      return 1;
   }
   // Query GPIO chip information
   ret = ioctl(fd, GPIO_GET_CHIPINFO_IOCTL, &info);
   if (ret == -1) {
      printf("Unable to get chip info from ioctl: %s\n", strerror(errno));
      close(fd);
      return 2;
   }
   printf("Chip name: %s\n", info.name);
   printf("Chip label: %s\n", info.label);
   printf("Number of lines: %d\n", info.lines);
   if (0 == debug)
      return 0;
   for (int i = 0; i < info.lines; i++) {
      line_info.line_offset = i;
      ret = ioctl(fd, GPIO_GET_LINEINFO_IOCTL, &line_info);
      if (ret == -1) {
         printf("Unable to get line info from offset %d: %s\n", i, strerror(errno));
      }
      else {
         printf("offset: %d, name: %s, consumer: %s. Flags:\t[%s]\t[%s]\t[%s]\t[%s]\t[%s]\n",
                i,
                line_info.name,
                line_info.consumer,
                (line_info.flags & GPIOLINE_FLAG_IS_OUT) ? "OUTPUT" : "INPUT",
                (line_info.flags & GPIOLINE_FLAG_ACTIVE_LOW) ? "ACTIVE_LOW" : "ACTIVE_HIGHT",
                (line_info.flags & GPIOLINE_FLAG_OPEN_DRAIN) ? "OPEN_DRAIN" : "...",
                (line_info.flags & GPIOLINE_FLAG_OPEN_SOURCE) ? "OPENSOURCE" : "...",
                (line_info.flags & GPIOLINE_FLAG_KERNEL) ? "KERNEL" : "");
      }
   }
   (void)close(fd);
   return 0;
}

Код: Выделить всё

olej@orangepione:~/2022/kernel/examples/GPIO$ ./info -z
./info: invalid option -- 'z'
Usage: ./info options dev_name.
Options:
	 -v increase output level
Вложения
info.c
(2.3 КБ) 30 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO в Linux

Непрочитанное сообщение Olej » 26 авг 2022, 01:55

Olej писал(а):
26 авг 2022, 01:00
делаю своё 1-е приложение
А 2-е приложение - это минимально подправленное приложение из статьи.
Makefile:

Код: Выделить всё

CC        = gcc -Wall
CFLAGS   += -O2 -Wall
LDFLAGS  +=
CPPFLAGS +=

%:    %.c
        $(CC) $(CFLAGS) $< -o $@

PROGLIST = info allops

all:    $(PROGLIST)

clean disclean:
        @rm -f *.o $(PROGLIST)

Код: Выделить всё

olej@orangepione:~/2022/kernel/examples/GPIO$ make
gcc -Wall -O2 -Wall allops.c -o allops

Код: Выделить всё

olej@orangepione:~/2022/kernel/examples/GPIO$ ./allops
Usage: ./allops options dev_name.
Options:
     -l: print gpio chip info
     -r <offset>: Read GPIO value at offset (INPUT mode)
     -w <offset>: Write GPIO value at offset (OUTPUT mode). Option -v should be set
     -v <0|1>: value that should be written to the GPIO, used only with option -w
     -p <offset>: Polling raising event on the GPIO at offset

Код: Выделить всё

olej@orangepione:~/2022/kernel/examples/GPIO$ ls -l /dev/gpio*
crw------- 1 root root 254, 0 авг 25 17:17 /dev/gpiochip0
crw------- 1 root root 254, 1 авг 25 17:17 /dev/gpiochip1

Код: Выделить всё

olej@orangepione:~/2022/kernel/examples/GPIO$ sudo ./allops -l /dev/gpiochip1
Chip name: gpiochip1
Chip label: 1f02c00.pinctrl
Number of lines: 32
offset: 0, name: , consumer: . Flags:   [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 1, name: , consumer: . Flags:   [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 2, name: , consumer: usb0-vbus. Flags:  [OUTPUT]        [ACTIVE_HIGHT]  [...]   [...]   [KERNEL]
offset: 3, name: , consumer: sw4. Flags:        [INPUT] [ACTIVE_LOW]    [...]   [...]   [KERNEL]
offset: 4, name: , consumer: . Flags:   [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 5, name: , consumer: . Flags:   [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 6, name: , consumer: vdd-cpux. Flags:   [OUTPUT]        [ACTIVE_HIGHT]  [...]   [...]   [KERNEL]
offset: 7, name: , consumer: . Flags:   [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 8, name: , consumer: . Flags:   [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 9, name: , consumer: . Flags:   [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 10, name: , consumer: orangepi:green:pwr. Flags:        [OUTPUT]        [ACTIVE_HIGHT]  [...]   [...]   [KERNEL]
offset: 11, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 12, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 13, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 14, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 15, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 16, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 17, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 18, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 19, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 20, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 21, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 22, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 23, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 24, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 25, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 26, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 27, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 28, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 29, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 30, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []
offset: 31, name: , consumer: . Flags:  [INPUT] [ACTIVE_HIGHT]  [...]   [...]   []

Код: Выделить всё

olej@orangepione:~/2022/kernel/examples/GPIO$ sudo ./allops -r11 /dev/gpiochip1
Value of GPIO at offset 11 (INPUT mode) on chip /dev/gpiochip1: 0

Код: Выделить всё

olej@orangepione:~/2022/kernel/examples/GPIO$ sudo ./allops -w11 -v1 /dev/gpiochip1
Write value 1 to GPIO at offset 11 (OUTPUT mode) on chip /dev/gpiochip1

Код: Выделить всё

olej@orangepione:~/2022/kernel/examples/GPIO$ sudo ./allops -r11 /dev/gpiochip1
Value of GPIO at offset 11 (INPUT mode) on chip /dev/gpiochip1: 1
Вложения
allops.c
(6.66 КБ) 32 скачивания

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPIO в Linux

Непрочитанное сообщение Olej » 26 авг 2022, 02:07

И к вопросу о том, насколько множество одноплатных моделей и не только с AMD процессором изготавливаются сейчас для промышленных проектов с GPIO:
udoo-bolt-v8-640x360.jpg
udoo-bolt-v8-640x360.jpg (44.08 КБ) 371 просмотр
AMD Ryzen Embedded SBC c UDOO Bolt V8 с четырехъядерным/восьмиядерным процессором V1605B.
UDOO Bolt поставляется с двумя слотами SO-DIMM для оперативной памяти до 64 ГБ, флэш-памятью eMMC на 32 ГБ, разъемами M.2 и SATA для хранения, поддержкой до четырех дисплеев 4K через порты HDMI 2.0 и USB-C, Gigabit Ethernet и т. д.
Цена порядка 459 долларов.

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей