本博客已逐步移至我的个人网站:www.zj-fighting.cn,欢迎访问。
今天成功地进行了对串口的操作和配置(其实比较简单), 想记录一下。
首先,由于Beaglebone Black采用了3.8的Linux内核,引进了设备树的概念。所以要想操作特定的外设,首先要先和设备树打交道。
好在今天要操作的是串口,串口的设备树已经被包含在文件系统中了, 可以查看一下:
其中有UART1-UART5共5个uart串口,UART0供调试使用。
该目录下的*dtbo是由*dts编译之后生成的文件,所以,如果你想写自己的设备树文件,可以参考这里的*,dts的写法。
在操作UART(这里我们先尝试使用UART2)之前,我们先看看系统默认已经加载的一些设备:
首先,由于我们经常会操作/sys/devices/bone_capemgr.8/slots这个文件,不妨设置一个环境变量SLOTS
echo SLOTS=/sys/devices/bone_capemgr.8/slots >> /home/root/.profile
(见过有的网友会把这其中的bone_capemgr.8写成bone_capemgr.*,因为他们的可能是bone_capemgr.9。这个我没有具体研究过,不过他们的做法显然可移植性更好)
可以看到eMMC和HDMI是默认加载好的。注意我的$SLOTS的实际值,如果你想跟着我来一起操作,关注一下倒数第二行。
为了能够加载UART2,我们只需要在终端输入:
cd /lib/firmware
echo BB-UART2 > $SLOTS
这时,我们看看是否加载成功了:
echo "Hello world of Beaglebone Black" > /dev/ttyO2
cat /dev/ttyO2
直接在BBB的终端键入
stty -F /dev/ttyO2 115200
就可以将串口2的波特率设置为115200了。(具体用法可以参考Advanced Programming in the Unix Environment)
为了测试,需要更改minicom的配置。
在Ubuntu的终端键入
sudo minicom -s
会出现如下画面:
通过上下箭头将高亮移动到第三个选项(Serial port setup),按下Enter确认:
直接键入E: