今天我们来聊聊一款非常有名的开源的嵌入式Linux开发板——BeagleBoneBlack(简称BBB)。
这款板子基于Ti的AM3358处理器芯片,单核的ARM Cortex A8核心,主频1GHz。比较有趣的是,为了更好地面向工业应用,AM3358芯片还带有两个32位的ARM Cortex M4 的PRU微控制核心(MCU)。
板子的资源跟现在最主流的开发板(如友善之臂T4)相比,略微有些低,只有512MB DDR3内存,和4GB eMMC闪存。
BBB的系统镜像可以去BeagleBone官网下载到。另外,你也可以在BeagleBone官网上找到BBB的入门教程。BBB是支持网页编程的,在浏览器输入BBB的IP地址就可以跟着WEB界面上的提示一步步实验各种功能。比如,我们来玩一下获取平台信息的代码,如下图所示。
当然,本人今天要给大家带了的不是这种WEB端图形化的入门教程,而是更接近常规嵌入式linux操作的命令行教程。
下面要进入正题啦!
在工业应用里,很多时候都需要实时linux内核来减小延时。我将演示一下怎样用命令行给BBB装上实时linux内核,很荣幸能与大家分享这些知识。
我们打开电脑端软件Putty,用ssh以命令行方式远程登录BBB,初始用户名是debian,密码temppwd。登进去以后,你可以用uname命令查看一下linux系统的内核版本。我们这个系统是3.14.71版本。操作过程如下图所示。
然后,用passwd和sudo passwd分别更新debian和root用户的密码。另外,root用户默认不允许直接通过ssh服务登录,我们通过编辑下面这个文档把权限给打开,文档路径、名称和要改的句子都如下图所示。
前面已经提到过,BBB是面向工业应用的。所以,为了提高控制的实时性,它肯定会支持Linxu实时内核。实时内核不需要你自己编译,apt的源里已经给你提供了,截图如下,已经用红线标出了。
板子开机后先要做什么呢?更新软件?我们在更新软件前先要把安装源更新一下。命令是apt update,过程如下图所示。
上面那一步,我发现更新速度有些慢。
怎么呢办?换国内源呀!
但是国内源也有好几个呢,换哪个源呢,选择恐惧症了吧。
我有个小建议,ping一下看谁快。中科大的源,刚刚因为服务器重启,没有ping通,平时正常应该在45毫秒左右。清华的源的速度还可以,我们就选下图中那第2个清华的源吧。
要注意一下的是,清华的源是https的。所以我们先装个apt-transport-https包,让apt支持https,如下图所示。这一步先不要改源,用默认的源安装。
前面已经配置了root登录,用service ssh restart重启一下sshd服务就可以支持root用户直接登录了。接下来,可以把源改成清华的了。下图中使用的软件是winscp。
再更新一次安装源。换了清华的源以后,这次速度快很多了,如下图所示,最后只用了12秒。
下面可以更新已安装的软件包了,期间会提示有新版本的sshd_config文件问你是否覆盖,选择保留老版本文件就好,不然还得再改一次允许root登录。
安装常用软件,各种需要的软件的名字可以写进一个apt install命令里,如下图所示。我装的主要是git和各种编程软件。你可以根据需要再添加cmake、automake等软件。
把python的setuptools和pip更新一下先,我知道很多人都喜欢用Python语音开发。
我用sudo pip install future安装future库没有成功,所以用apt-get install python-future命令安装future库。
把opt目录里的系统脚本更新一下,这里面有很多为BBB量身定制的功能,比如扩展系统分区,还有更新内核。我们下一步要更新实时内核。
通过uname -a命令,我们已经知道我们的系统的原内核是4,14版本的,所以我们这次更新4.14的实时内核,命令这样写
sudo /opt/scripts/tools/update_kernel.sh --bone-rt-kernel --lts-4_14 截图如下:
工业应用里有一种应用叫空中机器人,或者叫无人驾驶飞行器(UAV)。
BBB就有一个开源的做飞控的例子,通过一个叫BBBmini的扩展板接入惯导传感器,然后就可以作为飞控控制板了。下面这个小四旋翼的图片我引用了BBBmini项目里的图片。
飞控软件上,也有一个开源的项目,叫Ardupilot,Ardupilot程序的二进制文件在BBB官网镜像里也有,你能从如下图目录里找到。(虽然版本有些低。)
BBBmini的硬件是开源的,所以它的PCB文件可以从github上下载到。我已经把BBBmini的PCB交给工厂打板了,过几天就会到。
我们把BBBmini的dtb和ADC添加到boot的uEnv文件里,ADC将用于飞行器的动力电池的电压和电流的采集。
让CPU频率一直跑在1GHz,这可以让软件跑得更流畅。
Ardupilot的BBBmini程序,可以交叉编译,也可以BBB上本地编译。我选择了交叉编译,速度很快的。
下图是我在虚拟机里交叉编译了Ardupilot的程序。
好了,今天只教BBB的命令行操作;Ardupilot飞控代码的编译环境搭建和代码设置,属于另一篇教程了,我以后会专门再为Ardupilot写一篇文章。
原创作品,未经权利人授权禁止转载。详情见转载须知。 举报文章
我要举报该内容理由
×