私は/sys/kernel/debug/pinctrl/44e10800.pinmux/pins
でかいま見を取り、私が興味を持ってピン見ることができます:これはGPIO[2]4
、またはP8.10
に対応BeagleBone BlackのpinmuxをLinuxカーネル3.17で編集するにはどうしたらいいですか?
pin 38 (44e10898.0) 00000037 pinctrl-single
を。
カーネルが3.17.7-300.fc21.armv7hl
のFedora 21を使用しています。
マルチプレクサを0x27
に変更したいと思います。言い換えれば、これはピンが内部プルダウン抵抗を持つように構成されます(前にプルアップされています)。
所望の出力は次のようになります。
pin 38 (44e10898.0) 00000027 pinctrl-single
何ができますか?
注:これはAngstromではないため、/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
です。私が持っているために、このファイルを編集した:
...
[email protected] {
...
example {
pinctrl-single,pins = <0x898 0x27>;
};
};
...
その後、私は/boot/dtb-3.17.7-300.fc21.armv7hl/
でそれを立ち往生、dtc
で再びそれをコンパイルし、再起動します。しかし、何も変わっていない。何が起こっていますか?
編集:
チャールズSteinkuehler、offsetから減算する0x800
ニーズ、及び「何か」によって示されるように、「例」を参照する必要があります。
私はuser_leds_s0
のための私のエントリに0x098 0x27
を追加する場合は、望ましい行動が観察された:
...
user_leds_s0 {
pinctrl-single,pins = <0x54 0x7 0x58 0x17 0x5c 0x7 0x60 0x170 0x098 0x27>;
linux,phandle = <0x3f>;
phandle = <0x3f>;
};
...
、これはすべての罰金と私は行く必要がどこに私を取得します。しかし、そのピンは実際にはuser_ledではありません。それはある種の別の分野にあるべきです。だから、私は "例"フィールドまたは同様の仕事を得るために行う必要がある "何か"は何ですか?
が削除されました。物事を終わらせるために元の.dtsファイルを操作する必要があります。参考までに、これはルートファイルシステム(あなたの場合はAngstrom)のフレーバーとは関係ありません。これはまったくカーネルのバージョンに依存します。 – raghav3276
私の無知; Fedoraが使用するdtsファイルが見つかったと仮定して、何が必要なのかをもう少し詳しく説明できますか? – ToBeReplaced
"example"ピン定義を編集したか、追加しましたか?これを追加した場合は、2つの問題があります。まず、どこかで "example"ピンの設定を参照する必要があるか、何の効果もありません。第2に、あなたのpinmuxレジスタのオフセットは、私が期待していた0x800から外れています(つまり、0x898 pinmuxレジスタオフセットはデバイスツリーの0x098になります、AM335x pinmuxドライバは0x800を追加します)。これが編集したエントリであれば、私はあなたのカーネルのデバイスツリー命名規則に慣れていません。 –