我可以查看
然后,我用
/sys/kernel/debug/pinctrl/44e10800.pinmux/pins
并找到我感兴趣的引脚:pin 38 (44e10898.0) 00000037 pinctrl-single
这对应于GPIO[2]4
,或者P8.10
。
我正在使用带有内核3.17.7-300.fc21.armv7hl
的Fedora 21。
我想将mux更改为0x27
。换句话说,这将配置引脚具有内部下拉电阻器(之前是上拉)。
期望的输出将是:
pin 38 (44e10898.0) 00000027 pinctrl-single
有什么可以做的吗?
注意:Angstrom系统中没有 /sys/devices/bone_capemgr.*
,因此典型的DTO方法通过修改cape管理器来导出更改是不可行的。
编辑:在跟随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
,并且 "something" 需要引用 "example"。如果我为 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>;
};
...
现在,这一切都很好,并且能够帮助我实现目标。然而,该引脚并不是真正的用户 LED 引脚。它应该在某种分离的字段中。那么,我需要做些什么才能让 "示例" 字段或类似字段起作用?
0x98 0x27
添加到其中一个定义中,或将“example”重命名为“pinmux_P8_07_default_pin”,但都无法使其正常工作。反编译的dtb看起来与https://github.com/torvalds/linux/blob/bfe01a5ba2490f299e1d2d5508cbbbadd897bbe9/arch/arm/boot/dts/am335x-boneblack.dts在包含之后是相同的。值得注意的是,我没有看到任何地方出现“0x98”,因此我不知道它是如何首先设置为“0x37”的。 - ToBeReplaced