7

/sys/kernel/debug/pinctrl/44e10800.pinmux/pins興味のあるピンをのぞいて見ることができます。

pin 38 (44e10898.0) 00000037 pinctrl-single 

これはGPIO[2]4、 またはに対応しP8.10ます。

kernel で Fedora 21 を使用しています3.17.7-300.fc21.armv7hl

マルチプレクサを に変更したいと思い0x27ます。つまり、これにより、ピンが内部プルダウン抵抗を持つように構成されます (以前はプルアップされていました)。

望ましい出力は次のようになります。

pin 38 (44e10898.0) 00000027 pinctrl-single 

何ができるでしょうか?

注: これは/sys/devices/bone_capemgr.*オングストロームではないため、 はありません。典型的な DTO アプローチでは、ケープ マネージャーを変更して変更をエクスポートします。これはオプションではありません。

編集:tadの考えからの調査に続いて、私は次のことを行いました: dtc -I dtb -O dts -o ~/am335x-boneblack.dts /boot/dtb-3.17.7-300.fc21.armv7hl/am335x-boneblack.dtb. このファイルを次のように編集しました。

...
    pinmux@44e10800 {
        ...

        example { 
            pinctrl-single,pins = <0x898 0x27>;
        };
    };
...

次に、 で再度コンパイルしdtc、 に貼り付けて、/boot/dtb-3.17.7-300.fc21.armv7hl/再起動しました。しかし、何も変わりませんでした。何が起こっていますか?

編集:

Charles Steinkuehler が示した0x800ように、オフセットから を差し引く必要があり、「何か」は「例」を参照する必要があります。

0x098 0x27のエントリに追加するとuser_leds_s0、目的の動作が観察されます。

...
    user_leds_s0 {
        pinctrl-single,pins = <0x54 0x7 0x58 0x17 0x5c 0x7 0x60 0x170 0x098 0x27>;
        linux,phandle = <0x3f>;
        phandle = <0x3f>;
    };
...

これですべて問題なく、目的の場所に移動できます。ただし、そのピンは実際には user_led ではありません。何らかの別のフィールドにある必要があります。では、「例」フィールドなどを機能させるために必要な「何か」は何ですか?

4

2 に答える 2

3

Cape Manager は 3.8 カーネル以降に移植されていないと思います。計画されているかどうかはわかりませんが、当面の間、代わりにフラット デバイス ツリーを編集できます。私が見つけた最も簡単な方法 (そして私はまだ最善の方法を探しています) は、次の場所にあるリポジトリを取得することです。

https://github.com/RobertCNelson/dtb-rebuilder

src/arm ディレクトリで、am335x-bone-common-pinmux.dtsi ファイルを編集します。その中で、「P8_10_default_pin:」を検索できます。このセクションは、デフォルト設定として 0x37 を使用するよう pinmux に指示します。これを 0x27 に変更して保存します。

ここで、make を実行して、新しくコンパイルされたデバイス ツリー (.dtb) ファイルをビルドします。ubuntu では、「make install」によってすべてのファイルが正しい場所に配置されます。Fedora でどこに行くのかはわかりませんが、/boot/ を掘り下げてみると興味深いことがわかるはずです。ubuntuでは、正しい場所は

/boot/dtbs/`uname -r`/

私の場合、3.14.26-ti-r43 を実行しています。再起動 (およびピンのエクスポート) 後、上記の変更によりレシーバーのプルダウンが有効になり、オープン状態 (値) が 0 として読み取られます。

root@arm:~# grep 898 /sys/kernel/debug/pinctrl/44e10800.pinmux/pins
pin 38 (44e10898.0) 00000027 pinctrl-single 

root@arm:~# echo 36 > /sys/class/gpio/export
root@arm:~# cat /sys/class/gpio/gpio36/value 
0

目標を達成するためのよりエレガントな方法があると確信していますが、これは私にとってはうまくいきます。

于 2015-01-20T20:30:59.730 に答える