使用 Angstrom linux 在 Beaglebone Black 上设置 tty 端口

使用 Angstrom linux 在 Beaglebone Black 上设置 tty 端口

我使用的是 Beaglebone Black,运行预加载的 Angstrom v2012.12 版本。我希望能够通过 GPIO 接头上的 UART 连接将另一个设备连接到串行端口。问题是我无法判断/dev/tty这些映射到哪些设备。当我尝试访问/dev/ttyS?设备(例如使用 od /dev/ttyS2)时,我收到“读取错误:输入/输出错误”。

谁能告诉我 UARTS 是否默认映射到 tty 设备,如果是,是哪些设备,如果不是,我如何创建正确的设备?

答案1

你可以检查一下。它应该很简单。 http://hipster Circuits.com/enable-serialuarttty-on-beaglebone-black/

有人说必须重建 Ångström 才能使用新内核启用串行端口。那是没有必要的。设备树编译器 (DTC) 安装在我的 BBB 上,因此编译相当轻松(一旦我发现示波器已连接到正确的 BeagleBone..),BBB_SRM 中的 UART4 是设备树系统中的 UART5,而 ttyO4 是骨头。 TXD(从设备上看发送)引脚是 P9_13,RXD(从设备上看接收)引脚是 P9_11。然后您可以让它们说话,如上图所示,或者您可以使用一个 BeagleBone 在启动时查看另一个 BeagleBone 的调试消息。非常适合调试..

在你的 beaglebone 上,开始nano

nano enable-uart5.dts

将以下内容复制粘贴到 nano 中:

/*
 * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
/dts-v1/;
/plugin/;

/ {
    compatible = "ti,beaglebone", "ti,beaglebone-black";

    /* identification */
    part-number = "uart5";

    fragment@0 {
        target = <&am33xx_pinmux>;
        __overlay__ {
            pinctrl_uart5: pinctrl_uart5_pins {
                pinctrl-single,pins = <                                    
                        0x070 0x26  /* P9_11 = GPIO0_30 = GPMC_WAIT0 , MODE6 */
                        0x074 0x06  /* P9_13 = GPIO0_31 = GPMC_WPN, MODE6 */
                >;
            };
        };
    };

    fragment@1{
        target = <&uart5>;
        __overlay__ {
            status          = "okay";
        };
    };

    fragment@2 {
        target = <&ocp>;
        __overlay__ {
            test_helper: helper {
                compatible = "bone-pinmux-helper";
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_uart5>;
                status = "okay";
            };
        };
    };
};

保存文件(Ctrl-o)

退出 nano (Ctrl-x)

如果您有 BeagleBone Black,则可以编译用于设备树覆盖的固件,而无需安装 squat:

dtc -O dtb -o enable-uart5-00A0.dtbo -b 0 -@ enable-uart5.dts

您现在应该有一个名为enable-uart5-00A0.dtbo 的文件。

将该文件复制到固件目录中:

cp enable-uart5-00A0.dtbo /lib/firmware/

然后启用覆盖:

echo enable-uart5 > /sys/devices/bone_capemgr.*/slots

现在 /dev 中应该有一个名为 ttyO4 的文件。你可以尝试通过cat来听它:

cat /dev/ttyO4

或者你可以发送一些东西给它:

echo test > /dev/ttyO4

如果没有该文件/dev/ttyO4,请检查内核日志:

dmesg

要检查并确保引脚已正确复用,请检查引脚组中的列表:

cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pingroups

您应该会看到 uart5 的引脚组。

相关内容