2015-01-11 7 views
6

私は/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ではありません。それはある種の別の分野にあるべきです。だから、私は "例"フィールドまたは同様の仕事を得るために行う必要がある "何か"は何ですか?

+0

が削除されました。物事を終わらせるために元の.dtsファイルを操作する必要があります。参考までに、これはルートファイルシステム(あなたの場合はAngstrom)のフレーバーとは関係ありません。これはまったくカーネルのバージョンに依存します。 – raghav3276

+0

私の無知; Fedoraが使用するdtsファイルが見つかったと仮定して、何が必要なのかをもう少し詳しく説明できますか? – ToBeReplaced

+0

"example"ピン定義を編集したか、追加しましたか?これを追加した場合は、2つの問題があります。まず、どこかで "example"ピンの設定を参照する必要があるか、何の効果もありません。第2に、あなたのpinmuxレジスタのオフセットは、私が期待していた0x800から外れています(つまり、0x898 pinmuxレジスタオフセットはデバイスツリーの0x098になります、AM335x pinmuxドライバは0x800を追加します)。これが編集したエントリであれば、私はあなたのカーネルのデバイスツリー命名規則に慣れていません。 –

答えて

3

私は、岬マネージャーのものが3.8カーネルを越えて移植されていないと思います。それが予定されているかどうかは不明ですが、その間にフラットデバイスツリーを編集することができます。私が発見した(と私はまだ最善の方法を探しています)最も簡単な方法は、SRC /腕ディレクトリで

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

でリポジトリをつかむam335x-骨共通pinmuxを編集することです。 dtsiファイル。その中で、 "P8_10_default_pin:"を検索することができます。このセクションでは、pinmuxにデフォルト設定として0x37を使用するよう指示します。これを0x27に変更して保存します。

ここで、makeを実行して新しいコンパイル済みデバイスツリー(.dtb)ファイルをビルドします。 ubuntuでは、 "make install"はすべてのファイルを正しい場所に置きます。私はfedoraでどこに行くのかは分かりませんが、/ boot /を掘り下げることは面白いことが分かります。 ubuntuでは、正しい場所は

/boot/dtbs/`uname -r`/ 

私の場合は3です。14.26-ti-r43。リブート(およびピンをエクスポート)した後、上記の変更は、受信機と開いた状態(値)のプルダウンを可能にし、私は確信している

[email protected]:~# grep 898 /sys/kernel/debug/pinctrl/44e10800.pinmux/pins 
pin 38 (44e10898.0) 00000027 pinctrl-single 

[email protected]:~# echo 36 > /sys/class/gpio/export 
[email protected]:~# cat /sys/class/gpio/gpio36/value 
0 

0として目標を達成するために、よりエレガントな方法がある読み込みしかし、これは私のために働く。

+0

あなたが提供するリポジトリとメソッドは、3.14のみです。一方、これは '/ boot/dtbs/$(uname -r)/'に.dtbファイルがあるので参考になりました。特定のカーネルの.dts(i)ファイルを変更する必要があるようですが、最終ステップを理解できないようです。https://github.com/torvalds/linux/blob/bfe01a5ba2490f299e1d2d5508cbbbadd897bbe9/arch/ arm/boot/dts/am335x-bone-common.dtsi。そのファイル(または他の骨ファイルのどれか)でP8.10を編集する方法を考えてください。 – ToBeReplaced

+0

3.19のレポにブランチもあります。あなたもそれを見てみることができます。私の推測では、ファイルが大きく異なるわけではありませんが、あなたが見ているピンのためには特にそうではありません。少なくとも、makefileが何をしているのかを見て、メインラインのカーネルソースツリーでそれを複製することができます。私はチャンスがあれば、私はフェドラのイメージをプルダウンし、ちょっと周りを撫でるでしょう。 – tad

+0

私は賞金を割り当てましたが、より完全な答えを探しています。私は 'dtc'を使って' am335x-boneblack.dts'ファイルを取得し、 'example {pinctrl-single、pins = <0x898 0x27>;} 'のような' pinmux @ 44e10800'ヘッダの下に新しいグループを追加しました。ピックアップされていないようです。 – ToBeReplaced

1

Robert Nelsonのカーネル(またはBeagleBoardのカーネル)を使用している場合、pinmuxはpinmuxヘルパードライバの制御下にあり、ピンマックスレジスタの実行時設定をさまざまな既定値に設定できます。/sys/devices/ocpファイルを探します。 /P8_10_pinmux。 /州。これが存在する場合は、することにより、プルダウンで入力するPINを変更することができます

# echo gpio_pd > /sys/devices/ocp.*/P8_10_pinmux.*/state 

...またはあなたはRCNのDebianののいずれかを実行している場合は、ビルドするか、あなただけのことができます私のユニバーサルオーバーレイをインストールしました:

$ config-pin P8.10 in- 

(3.8.13カーネル用)オーバーレイと(同様のpinmuxヘルパーデバイスツリーエントリを持つ任意のカーネル用)設定ピンユーティリティは、ここで見つけることができます:https://github.com/cdsteinkuehler/beaglebone-universal-ioオーバーレイの概念私の知る限り

+0

これは私のカーネルでは機能しません。最初の質問で述べたように、カーネルはFedoraが提供する '3.17.7-300.fc21.armv7hl'です。 – ToBeReplaced

関連する問題