0

我正在尝试为我的 BeagleBone Rev5 启用类似 Arduino 的串行输出。

据我了解,UART映射是这样的:UART0 <=> /dev/ttyO0

我正在运行最新的 Angstrom 发行版:http: //downloads.angstrom-distribution.org/demo/beaglebone/Angstrom-Cloud9-IDE-GNOME-eglibc-ipk-v2012.12-beaglebone-2013.04.13.img.xz

我通过修改此文件禁用了 /dev/ttyO0 上的 Angstrom 默认 getty:

/etc/systemd/system/getty.target.wants/serial-gett@ttyO0.service

(从这个问题中收集:在 Angstrom Linux 上自动登录

我评论了我认为应该阻止 getty 从该端口启动的所有内容。完成后,我重新启动了电路板,并且不再能够通过串行控制台进行连接,因此这似乎可以工作。

但是我现在找不到任何关于如何配置该 UART 以便我可以传输数据的可靠信息。我进行了广泛的查看,但所有文档均指的是旧版本的 Angstrom,似乎并未反映最新版本。

例如,他们都说要执行这样的命令:

root@beaglebone:~# cat /sys/kernel/debug/omap_mux/uart1_rxd

http://www.gigamegablog.com/2012/01/22/beaglebone-coding-101-using-the-serial-and-analog-pins/

但是当我尝试这样做时,那里什么都没有:

root@beaglebone:/sys/kernel/debug# ls
asoc          gpio      musb-hdrc.0.auto  regulator       usb
atmel_mxt_ts  hid       musb-hdrc.1.auto  sched_features  wakeup_sources
bdi           iio       pinctrl           suspend_stats
bluetooth     kprobes   pm_debug          tracing
dri           memblock  pwm               ubi
f2fs          mmc0      regmap            ubifs
root@beaglebone:/sys/kernel/debug#

Angstrom 的最新版本似乎是从 2013 年 4 月开始的,这比我看到的大多数博客文章都要新。似乎新版本的 Angstrom 做事与旧版本不同。有谁知道如何在新版本的 Angstrom/BeagleBone 上实际使用各种硬件?

root@beaglebone:/sys/kernel/debug# uname -a
Linux beaglebone 3.8.6 #1 SMP Sat Apr 13 09:10:52 CEST 2013 armv7l GNU/Linux
root@beaglebone:/sys/kernel/debug#

我很想得到一个具体的答案,但我会对我能得到的关于在新版本的 Angstrom 中如何工作的任何信息感到非常满意。

编辑:原来我只是不够努力。我将 BeagleBone 插入网络并做了

opkg update
opkg install python-pyserial

一旦完成,我就可以编写一个小程序,它可以以我想要的任何数据速率通过内置的串行/USB 端口 (/dev/ttyO0) 转储。

禁用串行的 getty 后,我可以随心所欲地写。如果 getty 重新打开,它会在检测到某些事情以较慢的速度发生时中断我的连接,以较慢的速度。

感谢所有的帮助。我特别感谢关于如何没有发现 re:device 树的信息,因为这是我在尝试将 BeagleBone 用于其他项目时将面临的问题。

4

2 回答 2

1

您没有指定要使用的语言。

无论如何,我认为你最好学习一下POSIX 操作系统的串行编程指南,它会给你很多关于如何在 Linux 中处理串行端口的信息

于 2013-05-21T11:56:38.617 回答
1

您显示的命令与波特率无关,它控制引脚复用。许多微控制器的外设功能比 I/O 管脚多得多,因此 I/O 管脚需要映射到外设,并不是所有的连接都是可能的。对于您的情况,您需要将特定引脚指定为 UART 发送和接收。

我自己没有做过,但是我发现了大量的文档描述了通过 sysctl 和 proc 文件系统控制 pin muxing 最近被一个基于 Device-Tree 的新系统所取代。结果,几乎所有现有的例子都被打破了。更糟糕的是,对于某些命令,甚至可能没有基于设备树的有效等效命令。

至于设置波特率,您通常会使用cfsetispeed()and cfsetospeed()from termios.h,如Unix 规范中所述

于 2013-05-20T23:00:20.107 回答