GDE专栏 | Android Things开发环境搭建

2023-11-02 20:10

本文主要是介绍GDE专栏 | Android Things开发环境搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


文| 谷歌开发技术专家 (GDE) 王玉成 (York Wang)


物联网 (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 到你的硬盘上去了!


最安全的烧写流程如下:

  1. $ df -h 命令,查看一下当前有哪些设备,如果电脑不能识别 SD 卡,那么开始第 2 步,如果电脑已经识别 SD 卡,记下来 SD 卡是哪个设备,就可以走第 3 步了;

  2. 把 SD 卡插上,重复第一步;

  3. $ sudo dd bs=4M if=iot_rpi3.img of=/dev/sdx 命令,确定自己的 SD 卡的设备号,然后把下载的 img 文件烧写到 SD 卡上 ,这一步需要 root 权限哦。这儿要提醒一句,不是烧写到 SD 卡的某个分区,而是烧写到这个 SD 卡所在的设备上。

  4. $ sync 命令,同步数据到 SD 卡。


Windows 系统下,用 Win32DiskImager 工具,用管理员权限,烧写 img 文件到 SD 卡即可。


Mac 系统下也是用 Linux 下的命令: 

$ sudo dd bs=1m if=image.img of=/dev/rdisk<disk# from diskutil>



启动开发板

把已经烧写过 Android Things 的 mciroSD 卡插到 Raspberry Pi 3 的对应位置,就可以启动开发板了。


按以下的步骤去启动开发板:

  1. 用 microUSB 供电;

  2. 插入网线;

  3. 插入 HDMI 接口。


大概第一次系统启动要一到两分钟,耐心等待就行。


这儿准备了一个 Windows下烧写镜像的视频教程:

class="video_iframe" data-vidtype="1" allowfullscreen frameborder="0" height="417" width="556" data-src="https://v.qq.com/iframe/preview.html?vid=s0379na1hgi&width=500&height=375&auto=0">

视频最后,显示器显示了当前有线网的的 IP 地址,以及 Wi-Fi 还没有连接上的状态。那么,我们可以借助有线网的 IP,去连接 ADB:

$ adb connect <ip-address>

connected to <ip-address>:5555



由于 Raspberry Pi 是支持 DNS 广播的,如果你的电脑支持 MDNS 功能,运行命令:

$ adb connect Android.local


连接成功后,会返回:

connected to <ip-address>: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 Things 方面的想法,都欢迎大家在下方留言,我们会把好的建议转交给 Android Things 的产品部门。 也许在某一天,你的建议就是 Andorid Things 的一部分。


作者其他文章:

GDE专栏 | 物联网到底是什么?

GDE专栏 | 完美支持Android Things的开发板都在这里了


scrolling="no" frameborder="0" class="vote_iframe js_editor_vote_card" data-display-style="height: 172px;" data-display-src="/cgi-bin/readtemplate?t=vote/vote-new_tmpl&__biz=MzAwODY4OTk2Mg==&supervoteid=447207884&token=1170709080&lang=zh_CN" data-src="/mp/newappmsgvote?action=show&__biz=MzAwODY4OTk2Mg==&supervoteid=447207884#wechat_redirect" data-supervoteid="447207884" allowfullscreen>


这篇关于GDE专栏 | Android Things开发环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/333005

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装