1.6 一点背景
在进入第2章之前,先来熟悉一下关于树莓派和它的作品的一些背景细节是个好主意。树莓派作为一个通用计算机,可以完成和任何台式机、笔记本电脑或服务器同样的任务,尽管性能上会差一些。它被设计为一个单片机,旨在供爱好者和教育目的使用,这和通常意义下的计算机有着很多重要的不同之处。
1.6.1 ARM与x86
树莓派系统的核心部分使用的是一个称为Broadcom BCM2835的片上系统,这是一种多媒体处理器系统。这意味着绝大部分系统组件,包括中央处理单元、图形处理单元以及音频和通信硬件,都可以集成在一块芯片上,并放置于主板中央的一块内存芯片的下面。
Broadcom BCM2835片上系统和我们平常所使用的普通台式机或笔记本电脑不仅在处理器的设计工艺上有所不同,同时,它还使用一种不同的指令集架构(Instruction set architecture,ISA),即ARM架构。
ARM架构是Acorn电脑公司在20世纪80年代后期开发出来的,它主要使用在移动设备上,而很少使用在桌面计算机中。你口袋里的手机几乎都有至少一个基于ARM的处理内核。相比于桌面处理器芯片具有高功耗和复杂指令集计算机(CISC)架构而言,ARM芯片的精简指令集(RISC)结构简单、功耗低,因而成为移动用户的完美选择。
正是由于使用了基于ARM的BCM2835片上系统,树莓派能够在Micro-USB接口提供的5V和1A电源驱动下运行。由于芯片的低功耗,即使处理复杂的任务,产生的热量也很少,因此用户在这个树莓派设备上不会找到任何散热片。
然而,这也意味着树莓派与传统的PC软件不能很好地兼容。大多数台式机和笔记本电脑的软件都是使用x86指令集架构的,例如AMD、Intel或VIA的处理器。而这些基于x86架构的软件却不能直接运行在基于ARM架构的树莓派上。
BCM2835 片上系统使用的是一种叫作 ARM11 的处理器设计,它是基于ARMv6指令集结构设计的。值得注意的是:ARMv6是一个轻量级、功能强大的指令集结构,与之相对的ARM Cortex系列处理器使用了更加先进的ARMv7结构。和在x86上类似,ARMv7的软件也很遗憾地不能与树莓派上的BCM2835进行兼容,尽管开发人员可以通过一种被称为移植的过程来使软件能够在上面正常工作。
但这并不意味着限制了用户的选择。稍后在这本书中,你会发现,有非常多的适用于ARMv6指令集的软件,并且随着树莓派的普及,软件的数量还会越来越多。通过这本书,即使你没有任何编程经验,也能学会如何开发和创造你自己的软件。
1.6.2 Windows与Linux
除了尺寸和价格外,树莓派和台式机或笔记本电脑另外一个重要的不同点就是操作系统,即控制整台电脑的软件系统。
大多数台式机和笔记本电脑都使用微软的Windows操作系统或是苹果的OS X操作系统。这两个平台都是闭源的,在使用过程中有版权限制。
闭源操作系统最大的不同在于控制系统做什么的源代码是不对外开放的。闭源软件的源代码是绝对保密的。用户能够获得最终的软件产品,但无法知道它是如何编写的。
相比较而言,在树莓派上能够运行一种叫GUN/Linux的操作系统,即一种简单的Linux系统。和Windows和OSX不同,Linux是开源的:你可以下载整个操作系统的源代码,并且可以做任何修改。Linux操作系统没有任何隐藏,所有代码上的变更都是公开的。这种开源机制使得Linux可以很快被移植到树莓派上。在作者编写这本书的时候,已经有好几个Linux系统的发行版本移植到树莓派的BCM2835芯片上了,包括Raspbian、Pidora和Arch Linux。
不同的发行版本适合于不同的需求,但是它们都是开源的。它们也是相互兼容的:Debian上的软件可以很好地运行在Arch Linux上,反之亦然。
Linux系统不是树莓派上所独有的。几百种不同的发行版本运行在桌面计算机、笔记本电脑以及众多的移动设备中,例如,Google的Android操作系统就是基于Linux内核的。如果你喜欢在树莓派上使用Linux系统,那么你同样会喜欢在其他计算设备上使用它。Linux系统与你当前运行的系统欣然共存,当你的树莓派不能使用时,它将给你一个熟悉的Linux环境,让你去享受极大的便利。
如同ARM架构和x86架构的不同之处,Windows、OS X与Linux也有一个非常不一样的地方:为Windows或OS X编写的程序不能在Linux上运行。所幸,对于绝大多数常用的软件产品,在Linux上都有很多可供选择的替代软件了。更重要的是,这些软件中的大部分都是可以自由使用的开源软件,并且还可以安装在Windows和OS X上面,这可以使用户在3个平台上都能获得同样的体验。