1

現在、2.6.39 Linux カーネルで systemd を使用して Tixi ボードの起動時間を確認しようとしています。そのために、gpio を設定して使用する bash スクリプトを呼び出すサービス ファイルを作成しました。問題は、システムで gpio の値を変更できないことです。正常にエクスポートして方向を変更できますが、値は変更できません。一部のフォーラムで提案されているように、ハードウェアで値が変更されたがファイルで更新されていないかどうかを確認するためにオシロスコープを接続しましたが、同じでした: 値は変更されません! また、カーネル、ビジーボックス、およびファイルシステムの構成がまったく同じであるシステム V を使用する場合、同じスクリプトが機能することも指摘しておく必要があります。

皮肉なことに、私はすでにシステムのルートになっているにもかかわらず、ファイルのアクセス許可を変更しても、その値を変更することはできません。カーネルからの操作不可というフィードバックもなく、むしろできたように見えますが、値を確認すると、以前と同じでした。

また、3.12(systemdに変更)を使用してRaspbianで実行しようとしましたが、実際には、ユーザースペースから通常の方法で実行できました。

私はすでにアイデアを使い果たしているので、何が問題なのか考えていただければ幸いです。

ありがとう

PS: これは、bash ラインで動作するはずのコードです。

echo 0 > /sys/class/gpio/gpio104/value
more /sys/class/gpio/gpio104/value
// I get 1 not 0 as I requested

それにもかかわらず、同じボードの同じコード行は、systemV を使用すると機能しますが、systemd を使用すると機能しません

4

2 に答える 2

1

おそらく、/sys/class 内の gpio のパーミッションを変更する新しいセットアップに udev がないことが原因です。udev を元に戻して、問題が解決するかどうかを確認することもできます。

画像の設定はわかりませんが、使用する前に各 gpio ピンをエクスポートする必要があります。あなたはそれをやっていますか、それとも自動的に行われますか?omap mux カーネル スイッチがある場合は、次のようにします。

echo 0x104 > /sys/kernel/debug/omap_mux/cam_d5 (set mode 4 as stipulate in TI Sitara TRM)
echo 104 > /sys/class/gpio/export (export the pin)
echo out > /sys/class/gpio/gpio104/direction (set the pin as output)

dmesg | も実行します。gpio を grep して、gpio mux に初期化の問題がないかどうかを確認します。

于 2014-08-07T20:32:48.470 に答える
0

実際、私はあなたの問題に似た問題に直面しました。つまり、gpio ピンのセットの値を手動で変更できませんでした

最後に得られた結果は、そのピンの名前が gpio であっても、入力のみにしか使用できません(DM3730 gpiO_114 および gpio_115) でした。

そのため、データシートを参照して、I/O 操作に使用できることを確認してください。

于 2014-08-06T09:22:40.353 に答える