在 Beaglebone Black 上启用 UART

Posted

技术标签:

【中文标题】在 Beaglebone Black 上启用 UART【英文标题】:Enabling UART on Beaglebone Black 【发布时间】:2016-06-23 05:56:29 【问题描述】:

我无法启用 UART。关于如何启用和排除从更新 uEnv.txt 文件到更新内核的故障,我已经经历了许多不同的指导。我得出的结论是,使用与说明不同的内核可能会出现问题,但我不确定? 我对 Beaglebone 不太了解,我还在学习中。每当我尝试使用 Python 测试 UART 并输入以下内容时:

将 Adafruit_BBIO.UART 导入为 UART

UART.setup("UART1")

我收到错误:文件“stdin”,第 1 行,在模块中

RuntimeError: 无法导出 UART 通道。

我也开始担心我根本没有 capemgr。当我运行命令时:

ls 系统/设备

我没有列出 capemgr。

我正在使用最新的 Debian 映像:Jessie Debian 8.3 (2016-01-24)

我运行的内核版本是 4.1.17-ti-rt-r46。

而我的 DTC 版本是 1.4.1-g1e75ebc9

我非常感谢任何帮助。这几天我一直在纠结这个问题。谢谢!

【问题讨论】:

在他们的 github repo 上打开问题会更好:github.com/adafruit/Adafruit_Python_GPIO 由于您的开发板运行的是 Linux 操作系统,您无法直接访问任何 UART。检查系统日志以查看串行端口是否已正确探测和安装(例如dmesg | grep serial)。检查 /dev 目录是否有 ttyS*ttyO* 设备,即串行终端。 [thing-printer.com/cape-manager-is-back-baby/]查看此链接 【参考方案1】:

我已经回答了这个HERE,但让我重新发布一下:

我可以使用这种方法为 Debian 10 担保:

我能够在启动时自动启用所有 4.5 UART。与 Debian 9 和更早的版本不同,uEnv.txt 存在于 /boot/ 中。

    备份此文件。

    使用sudo 权限编辑此文件:

$ sudo nano uEnv.txt

启用所有 4.5 UART 的最终版本应如下所示:

#Docs: http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0

uname_r=4.19.94-ti-r42
#uuid=
#dtb=

###U-Boot Overlays###
###Documentation: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays
###Master Enable
enable_uboot_overlays=1
# UART 1
uboot_overlay_addr0=/lib/firmware/BB-UART1-00A0.dtbo
# UART 2
uboot_overlay_addr1=/lib/firmware/BB-UART2-00A0.dtbo
# UART 4
uboot_overlay_addr2=/lib/firmware/BB-UART4-00A0.dtbo
# UART 5
uboot_overlay_addr3=/lib/firmware/BB-UART5-00A0.dtbo
# UART 3 (only TX). Note that in "uboot_overlay_addrX", the X need not be = UART id
uboot_overlay_addr4=/lib/firmware/BB-UART3-00A0.dtbo

###
###Overide capes with eeprom
#uboot_overlay_addr0=/lib/firmware/<file0>.dtbo
#uboot_overlay_addr1=/lib/firmware/<file1>.dtbo
#uboot_overlay_addr2=/lib/firmware/<file2>.dtbo
#uboot_overlay_addr3=/lib/firmware/<file3>.dtbo
###
###Additional custom capes
#uboot_overlay_addr4=/lib/firmware/<file4>.dtbo
#uboot_overlay_addr5=/lib/firmware/<file5>.dtbo
#uboot_overlay_addr6=/lib/firmware/<file6>.dtbo
#uboot_overlay_addr7=/lib/firmware/<file7>.dtbo
###
###Custom Cape
#dtb_overlay=/lib/firmware/<file8>.dtbo
###
###Disable auto loading of virtual capes (emmc/video/wireless/adc)
#disable_uboot_overlay_emmc=1
#disable_uboot_overlay_video=1
#disable_uboot_overlay_audio=1
#disable_uboot_overlay_wireless=1
#disable_uboot_overlay_adc=1
###
###PRUSS OPTIONS
###pru_rproc (4.14.x-ti kernel)
#uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-14-TI-00A0.dtbo
###pru_rproc (4.19.x-ti kernel)
uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-19-TI-00A0.dtbo
###pru_uio (4.14.x-ti, 4.19.x-ti & mainline/bone kernel)
#uboot_overlay_pru=/lib/firmware/AM335X-PRU-UIO-00A0.dtbo
###
###Cape Universal Enable
enable_uboot_cape_universal=1
###
###Debug: disable uboot autoload of Cape
#disable_uboot_overlay_addr0=1
#disable_uboot_overlay_addr1=1
#disable_uboot_overlay_addr2=1
#disable_uboot_overlay_addr3=1
###
###U-Boot fdt tweaks... (60000 = 384KB)
#uboot_fdt_buffer=0x60000
###U-Boot Overlays###

cmdline=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet

#In the event of edid real failures, uncomment this next line:
#cmdline=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet video=HDMI-A-1:1024x768@60e

##enable Generic eMMC Flasher:
##make sure, these tools are installed: dosfstools rsync
#cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh

#cape_enable=capemgr.enable_partno=BB-UART1,BB-UART2,BB-UART4,BB-UART5

    保存并重新启动。享受吧!

【讨论】:

【参考方案2】:

您可以更改 /boot/uEnv.txt 首先启用UARTS:

cape_disable=bone_capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN
cape_enable=bone_capemgr.enable_partno=BB-UART1,BB-UART2,BB-UART4,BB-UART5

然后不要忘记使用适当的 dtbo 配置 pinmux:

###Overide capes with eeprom
uboot_overlay_addr0=/lib/firmware/BB-UART1-00A0.dtbo
uboot_overlay_addr1=/lib/firmware/BB-UART2-00A0.dtbo
uboot_overlay_addr2=/lib/firmware/BB-UART4-00A0.dtbo
uboot_overlay_addr3=/lib/firmware/BB-UART5-00A0.dtbo

【讨论】:

他们为什么要四处走动uEnv.txt?!这个适用于我的发行版/设置,这是一个 BBB 无线,uname -a 给了我Linux beaglebone 4.9.78-ti-r94 #1 SMP PREEMPT Fri Jan 26 21:26:24 UTC 2018 armv7l GNU/Linux【参考方案3】:

您需要检查您正在使用的 UART 引脚是否用于其他用途。为此,您需要先查看引脚图。如果发生冲突,您必须放弃 EMMc 或 hdmi 之类的东西,并且需要使这些引脚成为可能。首先禁用 uEnv.txt 中的冲突配置。然后您可以按如下方式激活引脚。

    #! /bin/sh cd /sys/devices/platform/bone_capemgr File=slots if grep -q "Override Board Name,00A0,Override Manuf,univ-emmc" "$File";  then    
    cd
    echo "\n Pin configuration available"
    echo "\n UART 4 configuration p9.11 and p9.13"
    sudo config-pin P9.11 uart
    sudo config-pin -q P9.11
    sudo config-pin P9.13 uart
    sudo config-pin -q P9.13
    echo "\n UART 1 configuration p9.26 and p9.24"
    sudo config-pin P9.24 uart
    sudo config-pin -q P9.24
    sudo config-pin P9.26 uart
    sudo config-pin -q P9.26
    echo "\n UART 5 configuration p8.38 and p8.37"
    sudo config-pin P8.38 uart
    sudo config-pin -q P8.38
    sudo config-pin P8.37 uart
    sudo config-pin -q P8.37
    echo "\n UART configuration end"  else    
    echo "Oops!!configuration is not available"
    echo "Please check uEnv.txt file and only disable HDMI" fi

【讨论】:

【参考方案4】:

显然,就像更改文件以使我们保持警觉一样的权力。

TamusJRoyce 在这里留下了评论:http://www.thing-printer.com/cape-manager-is-back-baby/ 这对我有帮助:

/media/BEAGLEBONE/env.txt and /boot/uBoot/uEnv.txt has moved to /etc/default/capemgr (file which may not exist). It also has a new syntax. Add "CAPE=BB-SPI-01,BB-UART1,BB-UART2,BB-UART4" to get main ports working. Then reboot.

在运行 Debian 8 的 Beaglebone Black 上启用 UART1 和 UART2

第 1 步:sudo nano /etc/default/capemgr 第 2 步:将#CAPE= 更改为:CAPE=BB-UART1,BB-UART2 第三步:重启 第四步:ls /dev/ttyO* 结果:/dev/ttyO0 /dev/ttyO1 /dev/ttyO2

【讨论】:

这应该是公认的答案。我正在寻找几个小时试图让我的 4.1.17 UARTS 工作。不知道为什么我能找到的文档都没有提到 capemgr 的新文件位置。只是一个注释。我在逗号分隔 UART 端口后有一个空格,这也导致它失败。没有空格!

以上是关于在 Beaglebone Black 上启用 UART的主要内容,如果未能解决你的问题,请参考以下文章

BeagleBone Black教程之BeagleBone Black设备的连接

Beaglebone Black – 连接 GY-91 MPU9250+BMP280 九轴传感器

在 BeagleBone Black 上构建 gcc 失败

Beaglebone Black扩展板开发(零):缘起

使用设备树覆盖在 beaglebone black 上更改心跳

如何在 beaglebone black 上安装 lamp/xampp 服务器