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