我正在尝试为我的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/[email protected]
(从这个问题中得到:Automatic login on Angstrom Linux)
我评论了所有我认为应该阻止盖蒂从那个港口出发的事情。完成后,我重新启动了主板,不再能够通过串行控制台连接,所以这似乎是可行的。
但是我现在找不到任何关于如何配置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被重新打开,它将中断我的连接,每当它检测到某件事情正在以较低的速度发生,在较低的速度。
谢谢你的帮助。我特别感谢你告诉我:设备树是如何解决问题的,因为这是我在尝试将BeagleBone用于其他项目时要面对的一个问题。
最佳答案
您所显示的命令与波特率无关,它控制引脚复用。许多微控制器具有比I/O管脚更多的外围功能,因此I/O管脚需要映射到外围设备,并非所有连接都是可能的。对于您的情况,您需要将特定的管脚指定为UART发送和接收。
我自己还没有做过,但是我发现了大量的文档描述了通过SysTL控制PIMUXIN,并且PROC文件系统最近被一个基于设备树的新系统所取代。因此,几乎所有现有的例子都被打破了。更糟糕的是,对于某些命令,甚至可能没有基于工作设备树的等效命令。
至于设置波特率,您通常使用cfsetispeed()
和cfsetospeed()
fromtermios.h
,如in the Unix specification所述。