树莓派(Raspberry Pi,其中Pi的发音是pie)是一款售价35美元的个人电脑,大概有一张信用卡那么大。没有开玩笑-树莓派开发团队在设计印刷电路板(PCB:printed circuit board)时确实使用了一张信用卡作为模板。
Pi或RasPi或RPi(用户喜欢给设备创建别名)都源自于树莓派基金会(http://raspberrypi.org),该基金会是位于英国的一家慈善组织,它由博通公司(Broadcom)的硬件设计师Eben Upton所创立,参与创立的还有和他一起工作在博通公司、剑桥大学和其它公司以及教育机构的尊贵同事。
过去,基础教育甚至是大学层次的计算机科学课程,只要有相关的课程设置,都往往更多地关注理论而不是对计算概念的实际应用。Eben和基金会于2006年构想将树莓派作为使学生们更容易接受计算机科学的一种方式。
我和Eben是在同一时代成长起来的程序员,也可以说我们是在20世纪80年代早期才逐渐成长起来的,那时我们在Amstrad CPC、Commodore 64和 Tandy TRS-80等等这样的微电脑平台上尝试着学习BASIC(Beginner’s All-Purpose Symbolic Instruction Code)语言编程。
树莓派希望成为Acorn BBC Micro个人电脑的文化继承者,BBC Micro在20世纪80年代的英国特别受欢迎(如图1.1)。
BBC Micro搭载了一个2MHz的采用MOS技术的6502中央处理器(CPU:central processing unit)。在之后的型号中,特别是在Archimedes中,引入了ARM(Acorn RISC Machine)处理器。不管你信不信,ARM处理器平台在21世纪依然很有生命力;其应用主要针对移动手机和平板电脑。树莓派搭载的是内核为ARM1176JZF-S的CPU(通常简称为ARM11);在第2章(硬件组件快速学习)中,我们将学习更多有关树莓派硬件的知识。
注释:ARM及其架构
如果你是一个CPU爱好者,我要告诉你的是ARM11是一个32位的微处理器,它使用精简指令集计算机(RISC:Reduced Instruction Set Computing)处理器架构。
为什么需要树莓派?
很多人把树莓派作为给孩子和成人讲授计算机科学原理的一个理想平台,因为它需要的投资最少。任何感兴趣的人都可以用它来学习计算机软件编程的方法,而且可以直接使用其电子和计算机硬件进行工作。如果某次实验失败而导致树莓派无法修复,那么学生们的损失也只有35美元,而不是成百上千。
我是有意使用“计算机科学”(computer science)这个术语的。树莓派之所以那么棒是因为我们可以超越软件的表层,而直接和绝大多数人眼中的“黑盒子”的内部进行交互。基于树莓派的教育能够为炙手可热的软硬件工程技能奠定基础,这种技能在当今全球的就业市场中极具价值并能给人带来丰厚收入。
可以肯定的是,树莓派的爱好者们并非都是一些学者。还有一批忠实的追随者是DIY用户和硬件黑客,他们把树莓派作为软硬件黑客实验的重要组成部分。
搭建一个太阳能气象站怎么样?或者制作一个树莓派供电的夜视镜如何?仅仅通过智能手机就可以在世界上任何一个角落来控制自己家里的电子设备,你感觉怎样?所有的这些项目构想在合理的成本内都是很容易实现的,这要感谢树莓派。
注释:名字代表了什么?
如果你想了解的话,树莓派(Raspberry Pi)这个名字有着丰富多彩的历史。树莓(Raspberry)是一种水果的名字,它们在20世纪80年代早期的微机世界里扮演着重要的角色:苹果机(Apple Macintosh)、蜜桔Microtan 65(Tangerine Microtan 65)、杏子PC(Apricot PC)等等。
实际上Pi表示Python编程语言而不是标准数字。把Python作为他们的微型个人电脑所支持的专用编程语言是Eben和基金会的其他成员的最初设想。以后你会学习到,发烧友们可以在树莓派上使用各种各样的编程语言编写程序。
硬件版本
记住树莓派是一台功能完整的个人电脑而不仅仅是一个简单的微处理器。个人电脑是一个自包含的系统,它能执行下面的数据处理任务:
输入 计算机接收来自用户或程序的指令和数据。
处理 计算机对输入执行预先编写好的动作。
输出 计算机用一种或多种方式向用户或程序显示处理结果。
另外,个人电脑通常还包括永久性存储器和以用户界面为特色的操作系统。第2章和第3章(树莓派外围设备一览)将围绕这些主题进行更多的讨论。
足以证明,尽管树莓派的运行速度慢一些、尺寸小一些,但从根本上来说它可以完成各种桌面电脑或笔记本电脑所能完成的所有事情。
相比之下,微控制器却是一块更特殊的硬件。一块微控制器是和一台个人电脑类似的集成电路,当它收到输入时,对输入进行处理,最终产生某种类型的输出。
但是,微控制器与个人电脑截然不同,有以下四个方面的特征:
微控制器上的操作依赖于精确定时:因为微控制器通常是单一用途的设备,没有任何的驱动和操作系统开销来拖慢系统。因此,微控制器在执行工作时必须使用特别精确的时钟周期。树莓派很难完成这种时间依赖的操作,因为它必须通过多个软件层才能访问硬件。
微控制器的硬件可以完全并直接地访问:在第4章(操作系统的安装与配置)中你会学习到,绝大多数的树莓派硬件(尤其是博通BCM2835系统芯片)是专有的。相反,绝大多数的微控制器都是开源的(例如,作为Arduino核心的Atmel RISC芯片),因此用户可以对其完全访问。对树莓派来说,我们和主板的硬件部件进行交互仅限于通过软件应用程序接口(API:application programming interface)。
微控制器通常没有用户界面:程序员必须使用外部系统向其发送数据和接收数据。
微控制器通常被设计成仅具有单一用途:微控制器的用途是执行单一任务,并且能很好地精确完成。例如,一台Arduino驱动的气象站能够感知环境并报告空气温度、相对湿度和大气压力等等。
有代表性的Arduino微控制器(确切地说是Uno)主板如图1.2所示。
在第19章(树莓派和Arduino)中,你会学习到树莓派和Arduino平台可以很好地协同工作。同时,下面列出了一些如今仍在广泛使用的与树莓派兼容的微控制器:
Arduino (http://arduino.cc)
BeagleBone (http://beagleboard.org/bone/)
Dwengo (http://www.dwengo.org/products/dwengo-board)
好了,我们言归正传,开始正式介绍树莓派。
自2013年春天起,树莓派基金会推出了两种型号的树莓派,A型和B型。两者之间的区别如表1.1所示。
注释:身边的历史
树莓派甚至在命名方式上都要感谢英国广播公司(BBC:the British Broadcasting Company)的Micro个人电脑。碰巧的是,Micro BBC也有A型和B型,并且B型要比中规中矩的A型提供了更强大的处理能力。
那么除了价格不同外,A型和B型之间最关键的区别是什么呢?简单地说:
B型的RAM大小是A型的两倍。
B型板上配有一个RJ-45以太网插孔。
B型多了一个USB端口。
A型的额定功率是B型的30%。
如果你能花点时间对两种型号的树莓派进行分析的话(我当然希望你能各买一块并进行分析),你会发现两种型号的印刷电路板真的一模一样。
为了生产A型树莓派,基金会只是对B型板的有些部件进行了精简,而没有进行重新设计。观察一下图1.3所示的A型板图像,注意右下角,看到那个空槽位了吗?那就是B型板上以太网端口焊接的位置。
再来观察图像中以太网端口区域正上方那块空焊接区。这是基金会焊接SMSC LAN9512集成电路(IC:integrated circuit)的位置,该集成电路在B型板上用于控制以太网插孔。
由于购买B型板要多花费10美元,所以本书着重讨论B型板。但是,对于A型板的购买者来说,好消息是我们承诺所有的软件、硬件和程序在两种型号的板子上都可以运行。
注释:为何要生产A型板呢?
在你脑海中可能会闪现这样一个问题,“既然B型板会带来那么多的好处,为什么还有人购买A型板呢?”答案可能与功耗有关。因为A型板的功耗小的多,所以Pi迷们在制作低能耗项目或太阳能供电项目时,利用A型板要比B型板容易的多。
关于B型板特别要说的一件事是:自2013年春季后,树莓派基金会发布了B型印刷电路板(PCB)的两个修正版本。你可以检查一下树莓派USB端口右边的那排LED(the light-emitting diode)灯,一眼就能看出你的开发板属于哪个修正版本。查查看:
如果第一个状态LED灯的标记是OK,那么你的开发板属于修正版本1。
如果第一个状态LED灯的标记是ACT,那么你的开发板属于修正版本2。
在第2章中你会学习更多有关树莓派状态LED灯的知识。
树莓派开源吗?
在询问树莓派是否开源之前必须要回答一个更重要的问题,那就是“开源的含义是什么,我为何要在乎?”
开源是指硬件和软件可以免费提供和用于生产,同时拥有完整的知识产权。例如,开源的Linux操作系统允许普通公众下载、修改、改进和发布其底层源代码。
开源这个术语也适用于硬件。例如,Arduino微控制器的原理图可在Arduino网站(http://is.gd/VDVQfF)上自由获取;因此,世界上任何人都可以分析和理解基础级的Arduino印刷电路板(PCB)。
人们为什么愿意投入时间和金钱来开发开源的软硬件呢?仅仅就是为了向公众免费发布吗?归根到底,开源的支持者们都是自由信息交换的超级粉丝。
Linux之所以被视为世界上最安全的操作系统之一,其中最重要的原因就在于它的开放式架构。当发现有安全漏洞时,Linux社区会深入研究源代码以确认并解决这些问题,这样世界各地的所有Linux用户都可从中受益。
为了进行比较,我们来想一想微软公司的Windows和苹果公司的OS X桌面操作系统。众所周知,这些操作系统平台都是专有的,也就是说普通公众无法对其实施逆向工程以便分析其底层源代码。这种专有软件的闭源性带来了信息安全问题,因为只有软件供应商自己才能解决在其产品中出现的漏洞。
总而言之,开源的软硬件提供了增强的安全性,因为社区能够快速发现并修补漏洞。开源架构也非常适合教学,因为它们没有专利,没有隐藏其中的学习障碍。最后,你也无需担忧开源组件的价格-正如之前所述,它们大多都是免费的。
开源许可证
开源软件发布时通常遵循GNU通用公共许可证协议(GNU General Public License,也叫GPL)。该协议的主旨在于任何人都可以尽情地免费下载和使用GPL软件。并且也欢迎用户以他们认为的任何方式修改软件,只要他们在发布修改后的版本时也能遵循GPL协议即可。
注释:何为GNU?
GNU(通常读作guh-NU)是“GNU’S Not Unix”的递归缩写。这只是对Unix操作系统的机械引用,Unix是Linux的先驱。顺便提一句,gnu(读作nu)是一只又大又黑的羚羊,也被称为角马。
开源和树莓派
“树莓派是开源的吗?”这个核心问题的答案有点复杂。在树莓派上运行的是各种Linux操作系统(也叫GNU/Linux)。可以肯定的是它们都是免费且开源的。但是,树莓派硬件的核心,也就是博通BCM2835片上系统,却是私有和闭源的。
记得Eben以及树莓派基金会的其他一些成员和博通公司之间关系比较密切。博通公司能许可树莓派使用其片上系统(SoC)真是太好了。因此,如前所说,唯一遗憾的是博通片上系统背后的知识产权仍属保密。
如果说树莓派硬件的闭源局面有一线转机的话,那就是2012年末,博通公司开源了所有的ARM11代码给树莓派。这意味着,社区可以编译自己的设备驱动程序,尤其对于VideoCore图形处理单元(GPU:Graphics processing unit)来说,和默认的Broadcom驱动相比,它能提供更快的速度和更好的优化。
但是,经过仔细观察后,你会发现局面远要复杂的多。长话短说,Broadcom发布了一个基于GPL协议的“shim”驱动,它可以将用户和CPU(或GPU)之间的输入与输出联系起来。例如,VideoCore IV驱动本身含有专利,用户无法修改Broadcom提供的二进制大对象(BLOB)驱动。
说明白点就是:Broadcom片上系统的驱动代码是软件,至少应该开源吧。硬件及其附带的原理图可以对Broadcom以外的所有用户保密。
树莓派迷们为什么会在乎这些呢?首先,想要使用VideoCore GPU完整功能的硬件迷们,就需要获取其源代码。如果你购买了一个拼图玩具,但只给你了一半拼图,那么,想用这个玩具做点什么,是不是觉得有点受限呢?
如何购买树莓派?
树莓派基金会和它的原始设备制造商合作伙伴努力为树莓派提供了供应链。据Eben讲,最初的计划是仅限于在英国生产树莓派开发板。但是,鉴于生产流程和成本的问题,基金会开始寻找远东的制造合作伙伴。
然而,自2013年春季以后,由于索尼公司在威尔士建立了工厂,因此,现在所有的树莓派产品都在英国生产。产品专门由以下两个机构进行销售:
Premier Farnell/Element 14 (http://www.farnell.com/)
RS Components (http://uk.rs-online.com/web/generalDisplay.html?id=raspberrypi)
Farnell和RS的分销合作伙伴遍及世界各地,所以,无论你身在何处,要获得一个官方发布源,并不难。
要找到一个树莓派的发布源应该没啥问题,但实际上并非如此,在2012年末到2013年初这段时间内,由于需求一直超出供给,我通过观察拖欠订单情况,发现要从Farnell和RS购买B型和A型开发板都要经过长时间的等待。然而,当你读到这里时,树莓派供应链中的数量应该已经足够多了。能买到才是合理的。
或许你可以考虑改从一家信誉好的eBay卖家那里购买树莓派。在这一点上,我本人就非常幸运。我们都知道供求规则,所以,购买一块B型开发板的订单价格通常超过35美元,因为你需要支付一些附加费用。
换句话说,能从Farnell或RS上买到树莓派之前的数个月,你就可以用上它。总而言之,朋友,如果你想拥有一块树莓派,最通常的做法是从在线经销商那里购买。或许RadioShark和Best Buy这类消费电子产品商店能库存这些迷人设备的那一天终会到来(希望很快)。