1. 程式人生 > >BeagleBone Black 上手體驗

BeagleBone Black 上手體驗

發展歷史

第一代 BeagleBoard 開發板推出於2008年,第三代開發板被命名為 BeagleBone,從這一代開始將 GPIO 口統一放置到開發板的兩側了。BeagleBone Black 誕生於2013年,它是繼 BeagleBone 後的新版本,中國版的價格是 399 RMB。BeagleBoard 家族的開發板均採用德州儀器的 ARM 處理器,BeagleBoard 系列開發板的一大優點是它的開源硬體設計及預設執行開源軟體。這意味著 BeagleBoard 所有版本的設計原理圖都是開放的,這些設計可以被任何人複製、修改和使用。

在這裡插入圖片描述

硬體概覽

在這裡插入圖片描述

序號 模組 描述
1 處理器 德州儀器 Sitara AM3358 ARM [email protected] 1 GHz
處理器下面的是 512MB DDR3 RAM
2 電源介面 BBB 需要 5V/1000mA 的直流電
大部分的 5V DC電源介面卡都可以給 BBB 供電
在電源插口附近有一個電壓保護器
如果接入 5~12V 的電源,它可以保護你的板子不被燒壞
但是,最好保證你給板子的是 5V 電源
3 乙太網口 標準的 RJ45 乙太網埠
你可以用網線連線板子,也可連線 WiFi
4 復位按鈕 復位鍵
5 USB Host 就像電腦一樣,可以通過 USB Host 連線鍵盤滑鼠、WiFi 介面卡
6 板載 LEDs 板子上有幾個 LED 燈
其中靠近電源插口的是用來指示有電源供電
而靠近reset的4個led你可以用程式控制他們
預設情況下
led 0 代表你的系統正在運轉,以心跳模式閃爍
led 1 代表 micro SD 卡在使用中
led 2 閃爍表示 CPU 正在活動
led 3 閃爍代表板載快閃記憶體正在被使用中
7 GPIO 擴充套件口 可以直接插入其他硬體外掛板實現更多功能
最多連續疊加4塊外掛板
8 Mini USB 介面 當通過這個 USB 口連上電腦時,可以像一個裝置那樣被電腦識別
電腦可以通過這個埠給板子供電,也可以通過這個埠與板子通訊。
同時,在電腦上的板子就像一個儲存裝置一樣
不過,用這個埠給板子供電時,處理器速度會變慢來減少板子的耗電
9 Micro SD card 插槽 BBB 沒有硬碟驅動器,取而代之的是 Micro SD 卡,
可以用來儲存作業系統,程式以及你的資料,
在 BBB 上作業系統儲存在板載快閃記憶體上
可以通過 Micro SD 卡來升級
10 Micro HDMI 介面 可以用 micro HDMI 介面來把 BBB 連線到顯示器或者電視上
這個介面看上去和 Mini USB 介面很相似,所以你最好看清楚
11 除錯串列埠 可以通過 USB 轉串列埠裝置連線電腦和這個除錯串列埠,從而登入終端控制檯
12 板載快閃記憶體 2 GB eMMC Flash 儲存器
13 Boot Switch 按鈕 長按這個鍵可以讓你的板子從 Micro SD 而不是板載快閃記憶體啟動

登入控制檯

BeagleBone Black 比上一代 BeagleBone 新增了串列埠除錯引腳,我們直接把串列埠轉 USB 模組的 TXD,RXD 和地線連到對應的引腳上(如圖所示),無需進行任何配置,立刻就能開始使用了。

在這裡插入圖片描述

登入使用者:root

在這裡插入圖片描述

系統檢查

板載快閃記憶體

BeagleBone Black 中國版配置的板載快閃記憶體大小為 2GB,這類似於電腦配置一個 2GB 的硬碟的概念。

[email protected]:~# df -h
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                  1.7G  1.4G  237M  86% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                   100M  556K   99M   1% /run
/dev/disk/by-uuid/7dcc1ad1-bbf5-4d1d-acb9-5bbfd7e4630f  1.7G  1.4G  237M  86% /
tmpfs                                                   249M     0  249M   0% /dev/shm
tmpfs                                                   249M     0  249M   0% /sys/fs/cgroup
tmpfs                                                   100M     0  100M   0% /run/user
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
/dev/mmcblk0p1                                           96M   72M   25M  75% /boot/uboot

乙太網

BeagleBone Black 配置了乙太網口,該網口允許通過乙太網將 BBB 連線到網路中,最大速率為 100Mbit/s

[email protected]:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr c8:a0:30:aa:45:33  
          inet addr:192.168.3.2  Bcast:192.168.3.255  Mask:255.255.255.0
          inet6 addr: fe80::caa0:30ff:feaa:4533/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2867283 errors:0 dropped:7770 overruns:0 frame:0
          TX packets:41726 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:224632977 (214.2 MiB)  TX bytes:3013218 (2.8 MiB)
          Interrupt:40 

也可以通過 USB Host 口外接 WiFi 介面卡來提供無線網路,這種連線方式會更加方便。

GPIO 介面

BeagleBone Black 的兩側是 GPIO 介面,在物理上分為兩個叢集,分別是 P8 和 P9,每個叢集又分別有46個介面,可以插入連線線。通過這些 GPIO 介面,我們可以連線其他模組來實現更多功能。

在這裡插入圖片描述

訪問 Web 伺服器

我們可以將 BeagleBone Black 通過 USB 線連線到電腦,為了和 BBB 通訊,需要在你的電腦中安裝相應的驅動程式。如果你的電腦是 Win7,只需通過 USB 介面將 BBB 連線到電腦,預先儲存在 BBB 上的驅動程式將自動安裝,所以不需要花費額外的時間去尋找這些驅動。大夥也可以從 BeagleBoard 的網站下載相應的驅動程式。

因為我手頭上沒有 mini USB 線,所以我準備直接通過網口訪問。

根據工作環境的情況,我將修改 /etc/network/interfaces 檔案,為 eth0 網絡卡設定靜態 IP:

auto eth0
iface eth0 inet static
    address 192.168.3.2
    netmask 255.255.255.0
    network 192.168.3.0
    gateway 192.168.3.1

開啟 Chrome 或 Firefox 瀏覽器,輸入 http://192.168.3.2 即可訪問 BeagleBone Black 的 Web 伺服器。如果你使用 USB 連線,預設情況下則應該輸入 http://192.168.7.2

在這裡插入圖片描述

程式設計:點燈實驗

想編寫可以在 BeagleBone Black 上執行的程式,除了使用 C/C++ 之外,還可以使用 Python 和 BoneScript 語言。

在上面開啟的網頁中,左邊導航欄找到 “Cloud9 IDE”,點選進去按提示操作即可在新標籤頁中開啟一個 Cloud9 線上程式設計環境,這是一個強大的、直接執行在 BeagleBone Black 上的 Web 版本的 IDE。接下來,我們將在這裡實現點燈實驗。

首先點選 Cloud9 IDE 主視窗中的 “+” 按鈕,選擇 “New File” 開啟一個空白檔案,儲存為 blink.js。然後,編寫如下程式碼:

var bbb = require('bonescript');
var state = bbb.LOW;

bbb.pinMode('USR1', bbb.OUTPUT);
setInterval(blink, 1000);
console.log('Hello, World!');

function blink() {
    if(state == bbb.LOW) {
        state = bbb.HIGH;
    } else {
        state = bbb.LOW;
    }
    
    bbb.digitalWrite('USR1', state);
}

儲存程式碼,點選 “Run” 即可執行,你會在 Cloud9 IDE 的頁面底部標籤 “/blink.js - Running” 中看到打印出來的 “Hello, World!”。

在這裡插入圖片描述

這個實驗是通過 BoneScript 庫來控制 LED 燈閃爍及列印訊息到控制檯。需要注意的是,BoneScript 只在 bonescript 庫中做了定義,底層的語法和結構是用 JavaScript 編寫的。可以看到,使用 BoneScript 程式設計非常方便,但也有它的侷限性。如果面對更復雜的程式碼和功能,還是建議使用 C/C++ 和 Python 來編寫。