物聯(lián)網(wǎng) (IoT) 的應(yīng)用開發(fā),離不開跟開發(fā)板打交道,我們需要配置好開發(fā)板的各種環(huán)境,最后才能用 Android Studio 進行應(yīng)用開發(fā)。
我們今天就以 Raspberry Pi 3 為例,一起來搭建 Android Things 的開發(fā)環(huán)境。
硬件準備
Raspberry Pi 3 的硬件開發(fā)板就長這樣:
開發(fā)板是有了,但是我們應(yīng)該怎么用開發(fā)板呢?那好,我們先進一步了解并分析開發(fā)版的功能:
玩過 Raspberry Pi 3 的人可以略過這段,但是對于首次上手的玩家,有幾點要注意:
事項 1:別費盡心思找電源了,開發(fā)板用的 Micro USB 口做供電接口。別找個電源適配器,拼命往音頻接口上塞啦,這么搞廠商也很頭疼的。
事項 2:做什么樣的事找什么樣的位置。每個接口有每個接口特定的作用。看著文字對上號,根據(jù)方案選擇特定的模塊就行了。
那么多 GPIO 口啊……怎么辦?我有針腳恐懼癥的。
- 沒問題,我們就先來了解針腳的作用,就可以玩轉(zhuǎn)開發(fā)板了。
等等,我怎么知道開發(fā)板哪個地方是第一根針腳啊?
- 在電路板上,找到 GPIO 針腳,離 USB 接口最遠的那一端,對了,開發(fā)板上應(yīng)該有一個 J8 標記, 就是那位置為 1 號針腳,只需要找到這幾根針腳就夠了。供電是引出 5V 還是 3.3V 的電源針腳,跟你自己的電路有關(guān),切記在連線之前把電壓搞清楚,不然會燒掉器件的。接下來認出 UART, SPI, PWM, I2C 接口,依據(jù)自己的需求,找一個面包板,就可以拉線出來干活了。
硬件認清楚了,這是第一步,還要找找開發(fā)版的外設(shè),一般說外設(shè)就是供電,顯示,存儲,輸入這幾大塊。
microUSB 給電源供電;
HDMI 用來顯示;
有線或者 Wi-Fi 用來連接網(wǎng)絡(luò);
microSD 卡以及讀卡器用來燒寫系統(tǒng)。
配備完這些外設(shè),搭好面包板,就可以動手燒寫系統(tǒng)了。
下載鏡像
開始找地方下載鏡像了,鏡像鏈接在此:
developer.android.com/things/preview/download.html
上一講提到的 4 個開發(fā)版的鏡像都可以下載。
Raspberry Pi 3 最新的鏡像壓縮包名為 androidthings_rpi3_devpreview_2.zip,下載完壓縮包,解壓縮之后,只有一個文件 iot_rpi3.img,我們來看看是什么格式的文件:
這些信息好像還不足以讓我們判斷鏡像的內(nèi)容,但是可以明確的是,這是一個可以做啟動的鏡像文件。那我們來看看鏡像內(nèi)部包含了哪些內(nèi)容?
通過鏡像的內(nèi)容,我們看到鏡像的內(nèi)部結(jié)構(gòu)。其中 rpi boot 是 Raspberry Pi 的 secondary boot,后續(xù)就是 uboot,接下來,就是 uboot 所引導的系統(tǒng)文件了。做過 uboot 級別移植的人,應(yīng)該十分清楚 bl1, bl2, uboot 的一些概念,這里就不做詳細解釋了。
這里再啰嗦幾句,我們看一下 Developer Preview 1 版本的鏡像,以 Edison 開發(fā)版的鏡像為例:
可以看到,在 Developer Preview 1 這一版中,分成了許多文件,并且提供了燒寫腳本,還提供了 fastboot 和 ADB 工具。但是,對于初學者來說,如何正確使用這些工具成了一個難題。所以在 Dev Preview 2 的版本中,把這些文件合并成一個 image 文件,燒寫就變的很簡單了。還是要為 Google 的貼心贊一贊,每一版的改進都會讓開發(fā)者用起來更方便。
細心的讀者會發(fā)現(xiàn),兩個開發(fā)版的鏡像文件中,有些文件內(nèi)容是不同的,主要是 bootloader 及之前的可執(zhí)行代碼。有興趣的讀者可以對比一下 x86 和 arm 的架構(gòu)的 bootloader 的不同的地方及作用。
Edision 的鏡像文件中間,還包括一個文件,似乎在回顧著某種歷史,如果你找出來了,就請在下方留言吧。
燒寫鏡像到 SD 卡
Raspberry Pi 的外接存儲設(shè)備是 microSD 卡,以下簡稱 SD 卡。由于 Linux, Windows, Mac 的燒寫的工具也不盡相同,我們以 Linux 為例說一下燒寫步驟,燒寫的命令只要是 dd,但是千萬不要 dd 到你的硬盤上去了!
最安全的燒寫流程如下:
$ df -h 命令,查看一下當前有哪些設(shè)備,如果電腦不能識別 SD 卡,那么開始第 2 步,如果電腦已經(jīng)識別 SD 卡,記下來 SD 卡是哪個設(shè)備,就可以走第 3 步了;
把 SD 卡插上,重復第一步;
$ sudo dd bs=4M if=iot_rpi3.img of=/dev/sdx 命令,確定自己的 SD 卡的設(shè)備號,然后把下載的 img 文件燒寫到 SD 卡上 ,這一步需要 root 權(quán)限哦。這兒要提醒一句,不是燒寫到 SD 卡的某個分區(qū),而是燒寫到這個 SD 卡所在的設(shè)備上。
$ sync 命令,同步數(shù)據(jù)到 SD 卡。
Windows 系統(tǒng)下,用 Win32DiskImager 工具,用管理員權(quán)限,燒寫 img 文件到 SD 卡即可。
Mac 系統(tǒng)下也是用 Linux 下的命令:
$ sudo dd bs=1m if=image.img of=/dev/rdisk
啟動開發(fā)板
把已經(jīng)燒寫過 Android Things 的 mciroSD 卡插到 Raspberry Pi 3 的對應(yīng)位置,就可以啟動開發(fā)板了。
按以下的步驟去啟動開發(fā)板:
用 microUSB 供電;
插入網(wǎng)線;
插入 HDMI 接口。
大概第一次系統(tǒng)啟動要一到兩分鐘,耐心等待就行。
系統(tǒng)啟動完之后,顯示器顯示了當前有線網(wǎng)的的 IP 地址,以及 Wi-Fi 還沒有連接上的狀態(tài)。那么,我們可以借助有線網(wǎng)的 IP,去連接 ADB:
$ adb connect
connected to :5555
由于 Raspberry Pi 是支持 DNS 廣播的,如果你的電腦支持 MDNS 功能,運行命令:
$ adb connect Android.local
連接成功后,會返回:
connected to :5555
這樣我們的 ADB 就正常連上Raspberry Pi 3了。借助 ADB ,我們可以連接 Wi-Fi 了。
其中包含了用戶名和密碼,如果你的密碼為空,不加 -e passphrase 這個參數(shù)即可。
接下來就要檢查 Wi-Fi 是否正確連上了:
出現(xiàn)上面的消息,表明 Wi-Fi 是正常啟動了。那 DNS 是否通呢?撥下網(wǎng)線,然后 ping 一下試試。
連接串口用于調(diào)試
現(xiàn)在雖然 ADB 連上去了,網(wǎng)絡(luò)也通了,但是事情才剛剛開始。我們在工作前期,引入一種比較方便的調(diào)試方法,那就是嵌入式開發(fā)中骨灰級的調(diào)試方式:串口調(diào)試:
對著上圖,拿著 USB 轉(zhuǎn) TTL 的線,找到 GPIO 的針腳上的 UART 的 TXD 和 RXD 兩根針。然后再找到地線,連接相應(yīng)的杜邦線就可以了。稍等,四個針腳,為啥有一個針腳不連呢,那個不是供電線嗎?由于 USB 轉(zhuǎn) TTL 線,在 USB 這端已經(jīng)供電了,所以 VCC 接口不需要連了。
這兒需要注意的是,RX 和 TX 是交叉的,不是直連的。因為開發(fā)板上的 TX 就是 USB 這邊的 RX。RS-232 和 TTL 的區(qū)別,這兒就略過了。
然后就要開始用 PC 機上的串口調(diào)試軟件來連接 USB 轉(zhuǎn)串口了。三大系統(tǒng)的工具又不太一樣。Windows下有 putty, secruCRT 等,Linux 下有 Mimicom, Mac 下有 Serial。根據(jù)自己的操作系統(tǒng)來選用吧。不過記各把波特率設(shè)為 115200, 8N1, 然后不要用流控,不管硬流控也好,還是軟流控也好,統(tǒng)統(tǒng)的不選。以前看過太多的血一般的教訓,選了流控,結(jié)果花好長時間跟蹤,串口什么打印也沒有,但是示波器上卻能看到串口數(shù)據(jù)……這時間不值。
關(guān)掉開發(fā)板電源,然后撥出 SD 卡。用 PC 機讀 SD 卡。然后把 cmdline.txt 這個文件中的這一行:
刪掉即可。不過作為嵌入式開發(fā)人員,誰舍得關(guān)串口呢?是么?當然,如果你的開發(fā)中,有串口設(shè)備做其它用途,是可以關(guān)掉串口輸出的。
下一講就開始 Android Things 的 SDK 的分析了。
-
Android
+關(guān)注
關(guān)注
12文章
3926瀏覽量
127161 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2904文章
44306瀏覽量
371472
發(fā)布評論請先 登錄
相關(guān)推薦
評論