我可以/sys/kernel/debug/pinctrl/44e10800.pinmux/pins
偷看,看看我感興趣的針:如何在Linux內核3.17上編輯BeagleBone Black的pinmux?
pin 38 (44e10898.0) 00000037 pinctrl-single
這相當於GPIO[2]4
,或P8.10
。
我使用的是Fedora 21,內核爲3.17.7-300.fc21.armv7hl
。
我想將多路複用器更改爲0x27
。換言之,這將配置引腳具有內部下拉電阻(在上拉之前)。
所需的輸出將是:
pin 38 (44e10898.0) 00000027 pinctrl-single
可以做些什麼?
注意:沒有/sys/devices/bone_capemgr.*
,因爲這不是在Angstrom。典型的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>;
};
};
...
然後,我用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。它應該在某種獨立的領域。那麼,我需要做些什麼才能讓「示例」字段或類似的工作?
AFAIK覆蓋的概念被拆除。您需要操作原始.dts文件才能完成任務。僅供參考,這與根文件系統的風格無關(在你的情況下,Angstrom)。這完全取決於內核版本。 – raghav3276
請原諒我的無知;你能否詳細說明一下需要什麼,假設我找到了Fedora使用的dts文件? – ToBeReplaced
您是編輯「示例」引腳定義還是添加它?如果你加了這個,我看到兩個問題。首先,某處需要引用「示例」引腳配置,否則它將不起作用。其次,您的pinmux寄存器偏移量與我所期望的相同(即:0x898 pinmux寄存器偏移量在器件樹中變爲0x098,因爲AM335x pinmux驅動程序會爲您添加0x800)。如果這是您編輯的條目,我不熟悉特定內核的設備樹命名約定。 –