1.1 平台介绍
BeagleBone是紧凑的、低成本的、开源的Linux计算平台,它连接了顶层软件和底层电路,可用于构建复杂的应用开发。它利用了Linux强大和免费的优点,对于原型设计和产品设计都是理想的平台,并且结合了输入/输出引脚和总线的直接访问特性,可以使主板与电子元件,模块和USB设备进行连接。BeagleBone平台的特征如下所示。
功能强大,它包含了一个执行速度为20亿条指令/秒的处理器。
低成本,可用的成本仅仅在45~55美元。
提供了许多电子设备的标准接口。
低功耗,运行时功耗在1W(空闲时)与2.3W(峰值)之间。
可通过使用子板和USB设备进行扩展。
有大量的创新者和爱好者论坛支持。
它是一种开源硬件,能够支持开源软件工具和应用。
BeagleBone可运行Linux操作系统,这意味着你能够使用很多开源软件库并直接应用它进行开发。开源软件驱动程序的可用性也使你能直接使用这些设备,例如项目中用到的USB摄影机、键盘和Wi-Fi适配器,可以不必再另行开发驱动源码库。因此,你可以获得由开源社区所建立的这些综合源码库;另外,重要的是要记住这些源码是没有任何保证的。如果出现问题,你必须依靠社区的热心网友来帮忙解决。当然,你也可以自己修复这些问题并给公众提供可行的解决方案。
BeagleBone平台是由印制电路板(printed circuit board,PCB)上集成的高性能微处理器和扩展软件组成的系统。物理PCB不是一个完整的产品,而是一种原型参考设计,你可以根据这个原型设计构建一个完整的产品。BeagleBone是一种开源硬件平台,这意味着你能够下载和使用BeagleBone硬件原理图并且在其上直接设计自己的产品。事实上,尽管BeagleBone平台非常引人注目,但它并没有完全显示出德州仪器公司Sitara AM335x微处理器的所有特征和接口。
BeagleBone另一个引人注目的特征是它的功能可通过子板进行扩展,这些子板称为capes,它们通过P8和P9插头(图1-1所示的两个黑色2×23连接器)与BeagleBone相连。你可以设计自己的子板并且使用这些插头安全地将子板插到BeagleBone上。另外,也可以购买许多可用的子板来帮助你扩展自己的BeagleBone平台的功能。本章结尾将给出一些实例进行介绍。
BeagleBone的印制电路板(PCB)是由Gerald Coley设计的,他是BeagleBoard.org基金会的一个共同创始人。主板和几个它的子板是由CircuitCo(www.circuitco.com)公司生产的。BeagleBone Black的PCB布局也是由CircuitCo设计的。最近,Element14(www.element14.com)已经开始生产一种BeagleBone Black与BeagleBoard.org的联合版本。因此,当你购买一个BeagleBone开发板时,你不能直接从BeagleBoard.org购买,BeagleBoard.org对于社区的开发者和用户来说都是一个聚焦平台。
注意
CircuitCo在tiny.cc/ebb101提供了一个关于BeagleBone Black生产过程的短视频。它强调了设备的复杂性和它的生产制造工作。
1.1.1 谁该使用BeagleBone
任何希望转变工程概念为真实交互的电子产品、项目、原型设计或工艺品的人应该考虑使用BeagleBone。也就是说,集成顶层软件和底层电路并不是一件容易的工作。然而,实施中的困难主要依赖于项目要求的复杂性级别。
BeagleBone社区正努力保证BeagleBone平台可以走进任何对BeagleBone感兴趣的人们的项目中,无论是学生、制造者、艺术家或者爱好者都可以使用。BeagleBone的开发工具和软件开发环境,例如Jason Kridner 的BoneScript脚本库(Kridner是BeagleBoard.org的一位创始人和本书的技术编辑)和Cloud9集成开发环境(integrated devetopment environment,IDE),能够使用户在Web浏览器中直接编写和创建代码,Web浏览器还具有控制电子硬件的能力。BoneScript脚本将在第2章中介绍。像Blockly(code.google.com/p/blockly)和Snap(snap.berkeley.edu)的开发已经被潜在地集成到BoneScript脚本中,以进一步提高新用户的可访问性。
对于高级用户,具有一定电子或计算机知识的用户,BeagleBone平台能够额外开发和定制以满足特殊的项目需求。不过,这种定制不是件简单的事:你可能是一个电子专家,但是顶层的软件编程和Linux操作系统可能会使你感到困难。或者,你可能是一个编程高手,但是你从没接通过LED(发光二极管)!本书的目的在于迎合各类用户的需求,不管你先前的经验水平如何,本书都能够提供给每种读者足够的Linux、电子和软件方面的知识内容,以确保你可以开发出自己的产品。
1.1.2 何时使用BeagleBone
BeagleBone所集成的顶层软件和底层电子硬件可被完美地用于开发任何类型的项目。无论你是想要构建一个自动家庭管理系统、机器人、智能显示、传感器网络、自动售货机或者是互联网连接工作,BeagleBone都具有这样的处理能力来完成你想要设计的任何嵌入式设备。
BeagleBone比其他传统的嵌入式系统(例如Arduino、PIC 和AVR微控制器)体现出的主要优点是它采用了Linux操作系统。例如,如果你想使用BeagleBone建立一个家庭自动化系统并且决定想使某些信息在互联网上可用,你可以简单地安装Apache 网络服务器。为了获取或者共享信息,你可以使用服务器脚本或者自己喜欢的编程语言来与家庭中的自动化系统进行交互。另外,你的项目应该允许安全的远程Shell访问。在那种情况下,你可以通过使用简单的Linux命令sudo apt-get install sshd(这些命令在第2章给出)来安装一个安全的Shell(SSH)服务器。这可能会节省你开发工作的时间。另外,你可以很欣慰地知道同样的软件正安全地运行在全世界的上百万台机器上。
Linux对许多USB外部设备和适配器提供了设备驱动支持。可以使你的摄像机、Wi-Fi适配器和其他低成本用户外设直接连接到平台上,而不需要复杂或者昂贵的软件驱动的开发。
1.1.3 何时你不该使用BeagleBone
Linux操作系统不适合用于实时或者预见性处理方面的设计。它的内核不是基于优先权的,也就是说一旦处理器开始执行内核代码,则无法中断。如果是这样将会存在一些问题,例如,你希望每百万分之一秒精确地对传感器采样一次。如果在精确的时间内进行采样并且内核又在忙于一个不同的任务,那么内核将不能被中断。因此,在默认状态下,对于实时系统的应用,BeagleBone不是一个理想的平台。Linux的实时版本是可用的,但是目前主要是针对非常有Linux开发经验的开发者的。然而,BeagleBone对实时任务的处理有一个板载解决方案,在某种程度上可以解决这个问题。BeagleBone的AM335x有两个板载微控制器,称为可编程实时单元(Programmable Real-time Units,PRU),它可以通过编程实现对实时接口的应用。这是一个高级应用,将在第13章介绍。
BeagleBone有一种低成本的可用的专用解决方案,对于实时采样和控制任务(例如,TI Stellaris ARM 平台)可能更适用。对于分布式控制系统,采用BeagleBone作为中央处理器,你可以通过电子总线(例如I2C、UART、CAN总线和以太网)连接实时微控制器到BeagleBone上。这个概念将在第9章和第10章介绍。
第2种应用类型是BeagleBone平台很难用于播放高清视频。软件解码处理的额外开销和进行视频流的编码的开销是非常巨大的,并且对高清视频的解决处理能力超出了BeagleBone的能力范围。树莓派(www.raspberrypi.org)主板具有这种能力,因为它的Broadcom BCM2835处理器[1]主要设计用于多媒体应用,并且它具有H.264/MPG-4和MPG-2/VC-1解码器和编码器(经由附加许可)的硬件装置。对于运行像XBMC家庭媒体中心(www.xbmc.org)这样的应用,你最好购买树莓派(模型B+),但是对于创建与电子设备交互的高级应用,BeagleBone是一个明确的选择。