大家好,
我们用AM4379做工控板,把自带的6个串口全部启用。但是现在碰到所有串口的流控脚都没有信号。TX脚可以正常发出。
问题1:不知在哪里需要配置或启用流控脚信号? 流控脚是否需要改内核代码吗?
现已在 am437x-gp.evm.dts 内定义了各个串口的寄存器。详细如下。
请大神帮忙查看是否存在错误/遗漏? 非常感谢~~
在文件 am437x-gp-evm.dts, 添加修改如下:
aliases {
display0 = &lcd0;
serial0 = &uart0;
serial1 = &uart1;
serial2 = &uart2;
serial3 = &uart3;
serial4 = &uart4;
serial5 = &uart5;
};
uart1_pins: uart1_pins {
pinctrl-single,pins = <
0x180 (PIN_INPUT | MUX_MODE0) /* uart1_rxd.uart1_rxd */
0x184 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_txd.uart1_txd */
/*0x178 (PIN_INPUT_PULLUP | MUX_MODE0) uart1_ctsn.uart1_ctsn */
0x17C (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_rtsn.uart1_rtsn */
>;
};
uart2_pins: uart2_pins {
pinctrl-single,pins = <
0x1F8 (PIN_INPUT | MUX_MODE2)
0x1FC (PIN_OUTPUT_PULLDOWN | MUX_MODE2)
0x204 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)
>;
};
uart3_pins: uart3_pins {
pinctrl-single,pins = <
0x228 (PIN_INPUT | MUX_MODE0) /* uart3_rxd.uart3_rxd */
0x22c (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart3_txd.uart3_txd */
/*0x230 (PIN_INPUT_PULLUP | MUX_MODE0) uart3_ctsn.uart3_ctsn */
0x234 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart3_rtsn.uart3_rtsn */
>;
};
uart4_pins: uart4_pins {
pinctrl-single,pins = <
0x168 (PIN_INPUT | MUX_MODE1)
0x16C (PIN_OUTPUT_PULLDOWN | MUX_MODE1)
0x0F0 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)
>;
};
uart5_pins: uart5_pins {
pinctrl-single,pins = <
0x108 (PIN_INPUT | MUX_MODE3)
0x144 (PIN_OUTPUT_PULLDOWN | MUX_MODE3)
0x0FC (PIN_OUTPUT_PULLDOWN | MUX_MODE2)
>;
};
uart0_pins_default: uart0_pins_default {
pinctrl-single,pins = <
/*0x168 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE0)
0x16C (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE0)*/
0x170 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE0) /* uart0_rxd.uart0_rxd */
0x174 (PIN_INPUT | PULL_DISABLE | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE0) /* uart0_txd.uart0_txd */
>;
};
uart0_pins_sleep: uart0_pins_sleep {
pinctrl-single,pins = <
/*0x168 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
0x16C (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)*/
0x170 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE0) /* uart0_rxd.uart0_rxd */
0x174 (PIN_INPUT_PULLDOWN | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE0) /* uart0_txd.uart0_txd */
>;
};
&uart1 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart1_pins>;
};
&uart2 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart2_pins>;
};
&uart3 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart3_pins>;
};
&uart4 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart4_pins>;
};
&uart5 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart5_pins>;
};
&uart0 {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&uart0_pins_default>;
pinctrl-1 = <&uart0_pins_sleep>;
};
文件 am437x.dtsi 修改如下:
uart0: serial@44e09000 {
compatible = "ti,am4372-uart","ti,omap2-uart";
reg = <0x44e09000 0x2000>;
interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "uart1";
};
uart1: serial@48022000 {
compatible = "ti,am4372-uart","ti,omap2-uart";
reg = <0x48022000 0x2000>;
interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "uart2";
clock-frequency = <48000000>;
status = "okay";
};
uart2: serial@48024000 {
compatible = "ti,am4372-uart","ti,omap2-uart";
reg = <0x48024000 0x2000>;
interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "uart3";
clock-frequency = <48000000>;
status = "okay";
};
uart3: serial@481a6000 {
compatible = "ti,am4372-uart","ti,omap2-uart";
reg = <0x481a6000 0x2000>;
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "uart4";
clock-frequency = <48000000>;
status = "okay";
};
uart4: serial@481a8000 {
compatible = "ti,am4372-uart","ti,omap2-uart";
reg = <0x481a8000 0x2000>;
interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "uart5";
clock-frequency = <48000000>;
status = "okay";
};
uart5: serial@481aa000 {
compatible = "ti,am4372-uart","ti,omap2-uart";
reg = <0x481aa000 0x2000>;
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "uart6";
clock-frequency = <48000000>;
status = "okay";
};
问题2.
加载生成的 am437x-gp-evm.dtb. 启动后串口部分显示 有: no wakeirq for uart0 这个是否正常?需要在哪里修改?
[ 0.458500] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 0.461537] omap_uart 44e09000.serial: no wakeirq for uart0
[ 0.461562] omap_uart 44e09000.serial: No clock speed specified: using default: 48000000
[ 0.461683] 44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 104, base_baud = 3000000) is a OMAP UART0
[ 1.207482] console [ttyO0] enabled
[ 1.211769] omap_uart 48022000.serial: no wakeirq for uart0
[ 1.217832] 48022000.serial: ttyO1 at MMIO 0x48022000 (irq = 105, base_baud = 3000000) is a OMAP UART1
[ 1.228165] omap_uart 48024000.serial: no wakeirq for uart0
[ 1.234105] 48024000.serial: ttyO2 at MMIO 0x48024000 (irq = 106, base_baud = 3000000) is a OMAP UART2
[ 1.244472] omap_uart 481a6000.serial: no wakeirq for uart0
[ 1.250513] 481a6000.serial: ttyO3 at MMIO 0x481a6000 (irq = 76, base_baud = 3000000) is a OMAP UART3
[ 1.260740] omap_uart 481a8000.serial: no wakeirq for uart0
[ 1.266775] 481a8000.serial: ttyO4 at MMIO 0x481a8000 (irq = 77, base_baud = 3000000) is a OMAP UART4
[ 1.276972] omap_uart 481aa000.serial: no wakeirq for uart0
[ 1.282916] 481aa000.serial: ttyO5 at MMIO 0x481aa000 (irq = 78, base_baud = 3000000) is a OMAP UART5
再次感谢~提供任何信息~