首页 > 解决方案 > FreeBSD 11 Beaglebone 启用 UART1 和 UART4

问题描述

无法让 UART 1 或 UART4 在 freeBSD Beaglebone 上工作


    FreeBSD beaglebone 11.3-RELEASE FreeBSD

我对 am335x-boneblack.dts 做了以下更改。这是一个差异文件。

freebsd@beaglebone:~/dtb % diff ./am335x-boneblack-original.dts ./am335x-boneblack.dts
814a815,841
> pinmux_uart1_pins {
>         pinctrl-single,pins = <0x184 0x8 0x180 0x28>;
>         linux,phandle = <0xF1>;
>         phandle = <0xF1>;
> };
> 
> pinmux_uart4_pins {
>         pinctrl-single,pins = <0x74 0xe 0x70 0x2e>;
>         linux,phandle = <0xF2>;
>         phandle = <0xF2>;
> };
> 
> 
>   pinmux_serial1_pins {
>             pinctrl-single,pins = <0x180 0x20 0x184 0x0>;
>             linux,phandle = <0xD1>;
>             phandle = <0xD1>;
>         };
>  
>          
>         pinmux_serial4_pins {
>             pinctrl-single,pins = <0x070 0x26 0x074 0x06>;
>             linux,phandle = <0xD4>;
>             phandle = <0xD4>;
>         };
>          
> 
1192c1219
<           status = "disabled";
---
>           status = "okay";
1205c1232
<           status = "disabled";
---
>           status = "okay";
1218c1245,1247
<           status = "disabled";
---
>           status = "okay";
>           dmas = <0x29 0x1e 0x0 0x29 0x1f 0x0>;
>           dma-names = "tx", "rx";
1229c1258,1260
<           status = "disabled";
---
>           status = "okay";
>           dmas = <0x29 0x1e 0x0 0x29 0x1f 0x0>;
>           dma-names = "tx", "rx";
2231a2263,2264
>       uart1_pins = "/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_uart1_pins";
>       uart4_pins = "/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_uart4_pins";

现在我什至可以看到内核加载了 UARTS


freebsd@beaglebone:~/dtb % dmesg | grep uart
uart0: <TI UART (16550 compatible)> mem 0x44e09000-0x44e0afff irq 11 on simplebus0
uart0: console (115384,n,8,1)
uart1: <TI UART (16550 compatible)> mem 0x48022000-0x48023fff irq 12 on simplebus0
uart2: <TI UART (16550 compatible)> mem 0x48024000-0x48025fff irq 13 on simplebus0
uart3: <TI UART (16550 compatible)> mem 0x481a6000-0x481a7fff irq 14 on simplebus0
uart4: <TI UART (16550 compatible)> mem 0x481a8000-0x481a9fff irq 15 on simplebus0

但我无法接收/发送任何东西。我在 UART 4 (P9-11 P9-13) 上捆绑了 RX - TX 我用 gpioctl 检查了引脚,并尝试 cat/echo 但引脚已死。它们充当 gpio 的

root@beaglebone:/home/freebsd/dtb # gpioctl -lv | grep 31
pin 31: 0   gpio_31<>, caps:<IN,OUT,PU,PD,UNKNOWN,UNKNOWN,UNKNOWN,UNKNOWN,UNKNOWN>
root@beaglebone:/home/freebsd/dtb # gpioctl -lv | grep 30
pin 30: 0   gpio_30<>, caps:<IN,OUT,PU,PD,UNKNOWN,UNKNOWN,UNKNOWN,UNKNOWN,UNKNOWN>
root@beaglebone:/home/freebsd/dtb # 
root@beaglebone:/home/freebsd # stty -f /dev/cuau4
speed 9600 baud;
lflags: echoe echoke echoctl
oflags: tab0
cflags: cs8 -parenb clocal
root@beaglebone:/home/freebsd # stty -f /dev/ttyu4
speed 9600 baud;
lflags: echoe echoke echoctl
oflags: tab0
cflags: cs8 -parenb

实用程序 gpioctl 没有 uart 模式,也就是 Linux。I t hac IN OUT OD PP TS PU PD II IO 适用于我的情况。

# Linux way of moding
    config-pin p9.11 uart
    config-pin p9.13 uart

谢谢你。

标签: freebsduart

解决方案


dts 适用于版本 11。版本 12 和 13 不适用于我。这是使 UART4 工作的补丁文件。

reebsd@beaglebone:~/dtb % diff -u am335x-boneblack-original.dts.orig /boot/dtb/am335x-boneblack.dts
--- am335x-boneblack-original.dts.orig  2019-07-05 05:41:32.905063000 +0000
+++ /boot/dtb/am335x-boneblack.dts  2019-09-17 03:08:26.704636000 +0000
@@ -812,6 +812,15 @@
                        phandle = <0x2d>;
                    };

+
+                   pinmux_uart4_pins {
+                       pinctrl-single,pins = <0x070 0x2e 0x074 0x06>; 
+                       linux,phandle = <0xce>;
+                       phandle = <0xce>;
+                       };
+
+
+
                    pinmux_clkout2_pin {
                        pinctrl-single,pins = <0x1b4 0x3>;
                        linux,phandle = <0x20>;
@@ -1189,7 +1198,7 @@
            clock-frequency = <0x2dc6c00>;
            reg = <0x48022000 0x2000>;
            interrupts = <0x49>;
-           status = "disabled";
+           status = "okay";
            dmas = <0x29 0x1c 0x0 0x29 0x1d 0x0>;
            dma-names = "tx", "rx";
            linux,phandle = <0x84>;
@@ -1202,7 +1211,7 @@
            clock-frequency = <0x2dc6c00>;
            reg = <0x48024000 0x2000>;
            interrupts = <0x4a>;
-           status = "disabled";
+           status = "okay";
            dmas = <0x29 0x1e 0x0 0x29 0x1f 0x0>;
            dma-names = "tx", "rx";
            linux,phandle = <0x85>;
@@ -1215,9 +1224,13 @@
            clock-frequency = <0x2dc6c00>;
            reg = <0x481a6000 0x2000>;
            interrupts = <0x2c>;
-           status = "disabled";
+           status = "okay";
+           dmas = <0x29 0x1e 0x0 0x29 0x1f 0x0>;
+           dma-names = "tx", "rx";
            linux,phandle = <0x86>;
            phandle = <0x86>;
+           pinctrl-0 = <0xce>;
+           pinctrl-names = "default";
        };

        serial@481a8000 {
@@ -1226,9 +1239,13 @@
            clock-frequency = <0x2dc6c00>;
            reg = <0x481a8000 0x2000>;
            interrupts = <0x2d>;
-           status = "disabled";
+           status = "okay";
+           dmas = <0x29 0x1e 0x0 0x29 0x1f 0x0>;
+           dma-names = "tx", "rx";
            linux,phandle = <0x87>;
            phandle = <0x87>;
+           pinctrl-names = "default"; 
+           pinctrl-0 = <0xce>; 
        };

        serial@481aa000 {
@@ -2229,6 +2246,7 @@
        i2c0_pins = "/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins";
        i2c2_pins = "/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c2_pins";
        uart0_pins = "/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_uart0_pins";
+       uart4_pins = "/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_uart4_pins";
        clkout2_pin = "/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_clkout2_pin";
        cpsw_default = "/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/cpsw_default";
        cpsw_sleep = "/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/cpsw_sleep";
freebsd@beaglebone:~/dtb % 
freebsd@beaglebone:~/dtb % 
freebsd@beaglebone:~/dtb % uname -a
FreeBSD beaglebone 11.3-RELEASE FreeBSD 11.3-RELEASE #0 r349754: Fri Jul  5 03:41:31 UTC 2019     root@releng2.nyi.freebsd.org:/usr/obj/arm.armv6/usr/src/sys/BEAGLEBONE  arm
freebsd@beaglebone:~/dtb % 


推荐阅读