我可以看一下/sys/kernel/debug/pinctrl/44e10800.pinmux/pins
并查看我感兴趣的图钉:
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 方法通过修改 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
需要从偏移量中减去,并且“某事”需要引用“示例”。
如果我添加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。它应该在某种单独的领域中。那么,要使“示例”字段或类似字段正常工作,我需要做什么“事情”?