私はUbuntu 18.04がインストールされたup2boardと専用カーネルを持っているので、LEDなどのボード上の特定のハードウェアを使用できます。この LED を点灯するには、次のコマンドを使用します。
$ sudo -i
$ cd /sys/class/gpio
$ echo 432 > export
$ cd gpio432
$ echo "out" > direction
$ echo 1 > value
今私は2つを見つけたいと思います。
echo 1 > value
コマンドがユーザー空間からドライバに伝播される方法。このLEDサポートを担当するドライバを見つける方法。
答え1
とても簡単に:
のエントリは/sys
実際のファイルではありません。このタイプのマウントは、sysfs
カーネル内のカーネルの他の部分が自分で登録できるAPIに対応します。その後、そのファイルシステムの「ファイル」を読み書きするとき、sysfsはこれらの操作を登録済みモジュールに渡します。
gpio
カーネル(汎用I / O)層は、別のドライバが再び登録できる抽象化層です。通常、これはGPIOレジスタ自体があるチップまたはチップセット用のドライバです。これらのチップのGPIOピンの配線方法は、ハードウェアによって異なります。
詳細はDocumentation/gpio/gpio.txt
カーネルソースコードなどで確認できます。
ドライバを識別する1つの方法は、ll gpio432
gpioノードを作成してシンボリックリンクを調べることです。これは、GPIOレジスタを備えたチップ/チップセットを持つデバイスを指します。次に、デバイスのドライバを探します。
dmesg
別のアプローチは、GPIOを登録するときにドライバがメッセージを生成することを確認することです。
おそらく、この情報はを通じてアクセスすることができますudevadm
。