<b>2.2.2 beaglebone</b>
beaglebone于2011年万圣节(10月31日)发布(http://beagleboard.org/products/beaglebone)。2009年arduino duemilanove(http://arduino.cc)发布之后,很多人开始对用微控制器搭建自己的电子设备感兴趣。可能有人不熟悉arduino,它是另一个开源硬件项目。这个板子售价不到35美元,发布后,很快就围绕它形成了一个社区。通过可以接插扩展板(shield)的硬件和带有大量功能库、易于使用的编程环境,arduino把单片机引入到了非技术群体。虽然可以用基于16mhz 8位avr单片机的arduino做很多事情,但一些项目需要更强的计算能力,这正是beaglebone大显身手的地方。
beaglebone可以看作是一个威力大大加强的“类arduino”板。很多arduino那 16mhz 8位单片机无能为力的情况,德州仪器的主频达720mhz的32位cortex-a8处理器则游刃有余。除了提升通用计算和数学处理的能力之外,beaglebone还能运行完整的操作系统(arduino的处理能力只够运行一个装载到其中的程序)。与arduino类似,它也被设计成能够使用扩展板。每个板子的扩展插针的布局不一样。beaglebone的扩展板叫作“马夹”——cape,它们经常在以太网口的地方开个豁口,样子很像一个马夹,这个称呼显得尤为形象。beaglebone如图2.5和图2.6所示。
图2.5 beaglebone的正面 图2.6 beaglebone的背面
以下信息来自于《beaglebone system reference manual》,该手册可以从http://circuitco.com/support/index.php?title?beaglebone#rev_a6a获取。与beagleboard-xm相似,beaglebone也采用cortex-a8处理器,但芯片封装不同,运行速度稍慢。最大的好处是beagleboard-xm能运行的操作系统和软件它都能运行。要知道,beagleboard诞生至今,已有大量的操作系统和软件可用。
beaglebone载有256mb ddr2内存,只有beagleboard-xm内存量的一半,这在运行某些大软件(例如metasploit框架)时可能会有问题。但这与arduino 2k 的ram相比还是很有优势的。beaglebone的板名、版本和序列号等信息都存储在32kb(早期版本是4kb)板上的eeprom中。其余大部分剩余eeprom空间留给操作系统和应用软件使用。巧合的是arduino也有32kb以flash实现的非易失存储,它用来存储bootloader和唯一的程序。
beaglebone可由5v直流电源或usb供电。beaglebone使用了ti公司的tps65127b电源管理芯片。需要注意,当通过usb口供电时,为了确保板子运行和usb外设工作的电力充足,cpu速度被限制在了500mhz。推荐使用5±0.1v,1a的直流电源供电。
beaglebone相对于arduino的另一个强项在usb方面,它带有一个usb集线器,允许使用一条usb线带起多个usb设备。当beaglebone连接到pc时,上位机会检测到一个调试串口、一个jtag端口和一个usb0端口,这个usb0端口直接连到beaglebone处理器上。当采用直流电源供电时,usb host端口能提供500ma,5v供电能力。当采用usb供电时,则usb host端口只能使用低功耗的设备,例如键盘鼠标等。
与beagleboard-xm一样,beaglebone也有一个microsd插槽,因为beaglebone没有內置存储,所以用microsd卡来存储操作系统和其他文件。microsd卡的读写是4位的(这是sd卡的标准)。beaglebone支持3.3v的microsd卡,包括高容量卡。arduino没有内置sd卡存储支持,如果不介意占用几个gpio,有一些扩展板可以提供sd卡支持。
比起arduino,beaglebone的另一个优势是内建快速以太网。与beagleboard-xm不同,以太网是由专用的网络芯片实现的,而不是用usb实现的。采用的芯片是smsc
lan8710a。因为这个不同,beaglebone每次启动都会报告相同的mac地址,会通过dhcp获得相同的ip地址。
扩展cape被通过46针的插头连接到beaglebone上,最多可以同时堆叠4个cape,只要它们互相之间不冲突。难以想象有什么样的项目是beaglebone实现不了的。它有66个可用的gpio(而arduino只有14个)。一个需要注意的要点是,beaglebone的gpio是3.3v的,而不是5v。beaglebone支持一个带有背光的全功能lcd触摸屏。通过扩展插座上的处理器引脚,还可以扩展出一个额外的sd/mmc卡接口。
在嵌入式电子系统中有两种常用的串行外设互联标准:spi和i2c。beaglebone完全支持这两种标准,它有2路spi和2路i2c接口。每一路都可以连接多个设备。其中第二路i2c必须小心使用,因为它被beaglebone用来识别和配置扩展cape(后面会有详细说明)。arduino只有1路spi和1路i2c接口。
扩展插座上引出了4路串口,在破解攻击机应用中,可以用其中的一个连接ieee 802.15.4无线。beaglebone还支持2路can总线,这是一种在汽车上常用的低速但高可靠性的总线,在其他环境中也有应用。
定时器、模数转换器(adc)、脉宽调制器(pwm)进一步提高了beaglebone的扩展能力。4路定时器信号被输出到扩展插头上,这些定时器对于周期性工作或重启cape上的组件很有用。beaglebone提供了7路每秒100 000次采样的adc,可用来连接一组老式的模拟传感器。adc是1.8v的,必须小心使用,因为这些信号直接连在处理器上。pwm可调节输出信号的占空比,常用来驱动步进电机或用来调节led的亮度。
虽然没有制作cape的统一规则,但有一些最大化兼容性的推荐标准。为了使一款cape能够被beagle产品经销商出售,板上至少要有一个eeprom,beaglebone以此来识别这个cape。前边所说的第2路i2c总线用于和eeprom通信。需要2个跳线或拨码开关来设置eeprom的i2c地址,使eeprom互相不干扰,从而使系统支持多达4个堆叠的cape。
像beagleboard-xm的情况一样,也强烈建议为beaglebone配上保护外壳。有一些像special computing(http://specialcomp.com)和adafruit industries(http://adafruit.com)这样厂商出售外壳。根据使用不同cape的情况,优化的外壳方案也不同。如果beaglebone板子不是嵌入到其他东西里工作,至少要用铜柱固定上亚克力板或其他绝缘板以防短路。如果自己设计制作外壳,一定要使用最小的铜柱,因为板上的某些表贴原件离安装孔很近,很容易被碰坏。
到这里,读者应该明白为什么beaglebone在这些铁杆硬件玩家中如此流行了吧。通过本书你会看到,beaglebone还是一个功能强大、体积小巧的计算机系统,而接下来要介绍的新推出的升级版——beaglebone black则更胜一筹。