更改运行Angstrom Linux的BeagleBone UART0的波特率

时间:2013-05-20 22:08:36

标签: linux serial-port embedded-linux uart

我正在尝试为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

(从这个问题收集:Automatic login on 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,它会在检测到某些事情以较慢的速度发生时,以较慢的速度中断我的连接。

感谢所有帮助。我特别欣赏有关如何解决任何问题的信息:设备树,因为这是我将要面对的问题,因为我尝试将BeagleBone用于其他项目。

2 个答案:

答案 0 :(得分:1)

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

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

就设置波特率而言,您通常会使用cfsetispeed()中的cfsetospeed()termios.h,如in the Unix specification所述。

答案 1 :(得分:1)

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

无论如何,我认为您最好学习Serial Programming Guide for POSIX Operating Systems,这将为您提供有关如何在Linux中处理串口的大量信息