所以我通过获取设备树blob,反编译它,并从设备树覆盖文件中合并并重新编译来实现这一点.我意识到我需要uarts 1和2而不是2和4,所以这与我原来的问题略有不同.
要反编译设备树blob:
dtc -I dtb -O dts -o am335x-boneblack.dts am335x-boneblack.dtb
我以现有的uart0为例向我展示了正确的部分.
我在uart0部分的pinmux部分添加了uart1和uart2的部分.它现在看起来像这样:
pinmux_uart0_pins {
pinctrl-single,pins = <0x170 0x30 0x174 0x0>;
linux,phandle = <0x27>;
phandle = <0x27>;
};
bb_uart1_pins: pinmux_bb_uart1_pins {
pinctrl-single,pins = <
0x184 0x20 /* P9.24 uart1_txd.uart1_txd OUTPUT */
0x180 0x20 /* P9.26 uart1_rxd.uart1_rxd INPUT */
>;
};
bb_uart2_pins: pinmux_bb_uart2_pins {
pinctrl-single,pins = <
0x150 0x21 /okay* spi0_sclk.uart2_rxd | MODE1 */
0x154 0x01 /* spi0_d0.uart2_txd | MODE1 */
>;
};
然后,需要启用串行部分并告知要使用的引脚.我修改了现有的uart部分,它现在看起来像这样:
serial@44e09000 {
compatible = "ti,omap3-uart";
ti,hwmods = "uart1";
clock-frequency = <0x2dc6c00>;
reg = <0x44e09000 0x2000>;
interrupts = <0x48>;
status = "okay";
dmas = <0x26 0x1a 0x26 0x1b>;
dma-names = "tx","rx";
pinctrl-names = "default";
pinctrl-0 = <0x27>;
};
serial@48022000 {
compatible = "ti,hwmods = "uart2";
clock-frequency = <0x2dc6c00>;
reg = <0x48022000 0x2000>;
interrupts = <0x49>;
status = "okay";
dmas = <0x26 0x1c 0x26 0x1d>;
dma-names = "tx","rx";
pinctrl-names = "default";
pinctrl-0 =
要重新编译设备树:
dtc -I dts -O dtb -o am335x-boneblack.dtb am335x-boneblack.dts
简而言之,尽管几乎不知道设备树是如何工作的,但我设法让它工作.
我还需要通过在hdmi部分中将状态设置为“disabled”来禁用hdmi.