天天看點

暗渡陳倉:用低消耗裝置進行破解和滲透測試2.2.2 BeagleBone

<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則更勝一籌。

繼續閱讀