首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FreeBSD 11 Beaglebone支持UART1和UART4

FreeBSD 11 Beaglebone支持UART1和UART4
EN

Stack Overflow用户
提问于 2019-09-16 08:19:44
回答 1查看 172关注 0票数 2

无法在freeBSD Beaglebone上使用UART1或UART4

代码语言:javascript
复制
    FreeBSD beaglebone 11.3-RELEASE FreeBSD

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

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

代码语言:javascript
复制
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 # 
代码语言:javascript
复制
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。对于我的情况来说,这是一种很好的选择。

代码语言:javascript
复制
# Linux way of moding
    config-pin p9.11 uart
    config-pin p9.13 uart

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-09-17 11:22:08

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

代码语言:javascript
复制
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 % 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57949119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档