управление gpio на 64-битной руке Ubuntu 20.04 Raspberry Pi

Я написал программу на C, которая использует контакты gpio на Raspberry Pi. Когда я писал программу, она нормально работала на Ubuntu 18.04 armhf (32 бит). Однако теперь на моем Raspberry pi 4, работающем под управлением Ubuntu 20.04 arm64, я получаю следующую ошибку при работе с sudo:

    initPeripherals: mmap gpio failed (Operation not permitted)

Насколько я понимаю, эта ошибка является результатом компиляции ядра с опцией

    CONFIG_STRICT_DEVMEM=y

Как могу ли я решить эту проблему без перекомпиляции ядра? Я попытался установить iomem = relaxed и strict-devmem = 0, но безрезультатно. Я также пробовал добавлять правила в /etc/udev/rules.d/, которые, похоже, тоже не работают. Кроме того, я попытался изменить членство в группе, но опять же, я запускаю это как root с помощью sudo.

Edit: ядро ​​arm64 18.04 работает нормально. Думаю, я буду доволен этим.

0
задан 6 June 2020 в 08:48

1 ответ

Похоже, проблема с правами доступа.

$ sudo apt install rpi.gpio-common

После этого вы должны быть в состоянии

$ echo "21" > /sys/class/gpio/export
$ echo "1" > /sys/class/gpio/gpio21
$ echo "21" > /sys/class/gpio/unexport

Если это так, не должно быть проблем с работой с gpio из кода C.

Пакет устанавливает только этот файл правил. Я видел в Интернете решения, предоставляющие правила udev, но большинство из них не работают.

$ cat /lib/udev/rules.d/60-rpi.gpio-common.rules 
SUBSYSTEM=="bcm2835-gpiomem", KERNEL=="gpiomem", GROUP="dialout", MODE="0660"
SUBSYSTEM=="gpio", KERNEL=="gpiochip*", ACTION=="add", PROGRAM="/bin/sh -c 'chown root:dialout /sys/class/gpio/export /sys/class/gpio/unexport ; chmod 220 /sys/class/gpio/export /sys/class/gpio/unexport'"
SUBSYSTEM=="gpio", KERNEL=="gpio*", ACTION=="add", PROGRAM="/bin/sh -c 'chown root:dialout /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value ; chmod 660 /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value'"

Вы также можете вручную поместить файл в /etc/udev/rules.d/.

0
ответ дан 28 January 2021 в 10:57

Другие вопросы по тегам:

Похожие вопросы: