私は一緒に働いています。ビーグル骨黒板(UbuntuARMアーキテクチャ用バージョン)、一部の汎用入力/出力(汎用入出力インタフェース)センサー/駆動モーターなどを読み取るためのインターフェースこれは、以下を使用して必要なピンを「エクスポート」することで設定できます。
bbb@arm:/sys/class/gpio$echo 30 > export
既定のフォルダとその内容は次のとおりです。
bbb@arm:~$ ls -l /sys/class/gpio/
total 0
-rwxrwxrwx 1 bbb users 4096 Jan 6 12:13 export
lrwxrwxrwx 1 bbb users 0 Jan 6 12:13 gpiochip0 -> ../../devices/platform/ocp/44e07000.gpio/gpio/gpiochip0
lrwxrwxrwx 1 bbb users 0 Jan 6 12:13 gpiochip32 -> ../../devices/platform/ocp/4804c000.gpio/gpio/gpiochip32
lrwxrwxrwx 1 bbb users 0 Jan 6 12:13 gpiochip64 -> ../../devices/platform/ocp/481ac000.gpio/gpio/gpiochip64
lrwxrwxrwx 1 bbb users 0 Jan 6 12:13 gpiochip96 -> ../../devices/platform/ocp/481ae000.gpio/gpio/gpiochip96
-rwxrwxrwx 1 bbb users 4096 Jan 6 12:13 unexport
このピンを一般ユーザーとして使用したいので、次のルールを使用して個人グループとユーザーグループを変更するためのいくつかのルールを設定しようとしました。
bbb@arm:~$ cat /etc/udev/rules.d/99-gpio.rules
KERNEL=="gpio*", SUBSYSTEM=="gpio", PROGRAM="/bin/sh -c 'chown -R bbb:users /sys/class/gpio; chmod -R 777 /sys/class/gpio'"
KERNEL=="gpio*", SUBSYSTEM=="gpio", PROGRAM="/bin/sh -c 'chown -R bbb:users /sys/class/virtual/gpio; chmod -R 777 /sys/class/virtual/gpio'"
うまく機能し、起動時にルールがロードされます。しかし、ピンをエクスポートする場合は、次を使用したいと思います。
bbb@arm:/sys/class/gpio$ echo 30 > export
bbb@arm:/sys/class/gpio$ cd gpio30
bbb@arm:/sys/class/gpio/gpio30$ ls -l
total 0
-rw-r--r-- 1 root root 4096 Jan 7 16:16 active_low
lrwxrwxrwx 1 root root 0 Jan 7 16:16 device -> ../../../44e07000.gpio
-rw-r--r-- 1 root root 4096 Jan 7 16:16 direction
-rw-r--r-- 1 root root 4096 Jan 7 16:16 edge
drwxr-xr-x 2 root root 0 Jan 7 16:16 power
lrwxrwxrwx 1 root root 0 Jan 7 16:16 subsystem -> ../../../../../../class/gpio
-rw-r--r-- 1 root root 4096 Jan 7 16:15 uevent
-rw-r--r-- 1 root root 4096 Jan 7 16:16 value
私が経験している問題は、すべてのサブディレクトリとフォルダがまだ所有者とグループにルートを持っているということです。したがって、私のユーザーアカウントを使用して単一のピン(gpio)を設定することはできません。
自分のユーザー名(bbb)とグループ(users)の下の新しいエクスポートフォルダ内のすべてのアイテムをインポートするには、自分のルールをどのように変更する必要がありますか? ? ?
答え1
さて、Piでテストした後、私が言ったすべての内容をキャンセルします。現在のファイルに追加のルールを追加します。
KERNEL=="gpio*",SUBSYSTEM=="gpio",ACTION=="add",PROGRAM="/bin/sh -c 'chown -R bbb:users /sys%p;chmod -R 770 /sys%p'"
それではテストしてみましょう。echo 30 > export
これを行うと、ls -l /sys/class/gpio30
まだrootが所有しているように見えますが、/sys/devices/virtual/gpio/gpio30へのリンクであることがわかります。
ls -la /sys/devices/virtual/gpio/gpio30
スクリプトが正常に実行されたことがわかります。
これは役に立つかもしれません:https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=9667