我正在尝试启用 Beaglebone Black (UART 1-5) 上的所有 UART。我正在运行 debian 9.3 并使用 BeagleBone Black rev C。我尝试通过修改 uEnv.txt 文件来启用所有 UART(我已将此文件放在根目录和 /boot 目录中,无论哪种方式都具有相同的结果)。
这是我的 uEnv.txt 文件:
uname_r=4.9.82-ti-r102
enable_uboot_overlays=1
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
uboot_overlay_addr4=/lib/firmware/BB-UART3-00A0.dtbo
cmdline=coherent_pool=1M net.ifnames=0 quiet cape_universal=enable
cape_disable=bone_capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMINN
cape_enable=bone_capemgr.enable_partno=BB-UART1,BB-UART2,BB-UART3,BB-UART4,BB-UART5
我已经在几个 BeagleBone Black 上尝试过这个文件。在其中两个上,该文件有效并启用了所有 5 个 UART 设备(显示了所有 /dev/ttyO1-5)。然而,在其他一些 BeagleBone Black 上,仅启用 UART 1-4(通过 /dev/ttyO1-O4 显示并可用来证明,但 /dev/ttyO5 不可用); UART 5 未启用。
在我的试验中,操作系统映像没有其他任何不同。我一直在 SD 卡上使用新的 debian 9.3,唯一的修改是 uEnv.txt。事实上,我什至从一台正在运行的 BeagleBone 中取出同一张 SD 卡,将其放入无法启用所有 5 个 UART 的卡中,并以相同的结果启动; UART 5 将不会启用。我怀疑这可能是 bootlaoder 问题,因为它似乎特定于我正在使用的非常特定的 BeagleBone black,而不是操作系统。
有谁知道为什么这个文件可以在一个 beaglebone 上工作而不能在另一个 beaglebone 上工作?不幸的是,由于我正在开发的应用程序,仅使用有效的 beaglebone 无法解决这个问题;我需要找到一个可靠的解决方案。
正如我之前所说,我怀疑这可能是引导加载程序问题,但我很不确定。我正在考虑的下一步涉及更新引导加载程序,或者转到不同的 Debian 版本。
预先感谢您的帮助!
编辑:我认为进一步检查后这可能是 HDMI 的问题。我尝试在 uEnv.txt 文件中禁用 HDMI,但是在检查 /sys/devices/platform/bone_capemgr/slots 时似乎没有禁用 HDMI 的行。这是有道理的,因为 UART 5 与 HDMI 接口绑定在一起,如果它没有被禁用的话,如果我没记错的话。但是,我不太确定如何解决这个问题。