Intel Edison智能硬件开发指南——基于Yocto Project(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-17 15:56:18

点击下载

作者:陈士凯,程晨,臧海波 等

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Intel Edison智能硬件开发指南——基于Yocto Project

Intel Edison智能硬件开发指南——基于Yocto Project试读:

PREFACE 推荐序

中国如今已经成为全球最大的计算消费品市场。随着智能手机、平板电脑、穿戴式设备的普及,中国也在随着用户需求的多样化,一®步步成为电子产品设计和创新的热土。正如英特尔前首席执行官Paul Otellini十几年前所讲的:“中国是计算技术的青春之泉!”随着中国“大众创业,万众创新”和创客运动的兴起,中国在未来几年对信息技术创新的工具和方法的需求必将进一步迅猛增长。这本关于Edison芯片及开发技巧的书恰逢其时,一定会引起众多创客和物联网专业人士的关注。®

英特尔在信息技术普及的年代,开发了各式方便、好用的 PC 相关芯片,伴随着大家从生活到工作,从单机到联网,不断地丰富人类信息交流、多媒体互动和日常沟通的方式。随着物联网和智能终端®的快速发展,基于高性能、高集成度的前沿技术基础,英特尔推出了22nm的Edison芯片。

Edison是一款专门针对小型智能设备设计的双核芯片,采用x86架构处理器内核,支持Linux并能运行复杂的高级应用程序,可以通过Wi-Fi和蓝牙对外沟通。而在整体的处理性能上,相当于一台完整的“奔腾级电脑”,但是在体积上,却仅相当于一张SD卡,功耗对比传统电脑更是微不足道。®

主笔陈士凯过去曾在英特尔软件与服务部门任职,他也常在各式工程期刊发表文章,对于Edison系列平台的应用开发,有其深厚的基础和独到的见解,另外两位作者程晨和臧海波也是业内资深人士。本书的前半部除了深入浅出地介绍了Edison控制板的硬件和软件知识,还带领读者一步一步地实现各个有趣的功能。在实作的过程描述中,根据作者的经验,还提出了许多常犯的错误的规避方式,让读者®可以少走许多冤枉路。本书的后半部引用了作者群和英特尔中国研究院的多个实际案例,读者可以从中学习到更多深度的知识,并且不同的案例可以触发每个人更多的想象可能性。对于看完了全部章节但是还有疑问的读者,在本书最后的附录中还可以找到更多技术互动论坛和零组件的相关资源,你在那里可以随时和不同的Edison牛人交流。

这本书就如同Edison控制板一样,麻雀虽小,五脏俱全,精简而全面,非常适用于Edison 系列平台的初学者和有兴趣利用 Edison 从事新的穿戴式物联网应用开发的人士。我坚信Edison芯片虽小,但它对未来穿戴式物联网发展会具有里程碑意义。我也衷心希望这本书成为读者们迈向创新和创业的征程上的一个加油站。愿大家成为爱迪生(Thomas Edison)一样的发明家!®

英特尔软件与服务事业部中国区总经理何京翔2015.3.26

FOREWORD 前言

这些年,随着创客运动和开源硬件的发展,大家一直都在期待一种新的硬件模块的出现,这种模块既要资源丰富、性能强劲、可扩展性强,还要简单易用、功耗不大、体积小巧。树莓派、Arduino都在这个方向上做过一些尝试,还有很多的团队也在这个方向上做出过努力和贡献,但最后的结果都不太令人满意。

大家的期盼在 2014 年初终于看到了一丝希望,这一年的 1 月,®®Intel推出了名为Edison的微型计算平台,这是Intel针对智能硬件、可穿戴设备、物联网市场推出的一款产品,只有SD卡大小,采用22nm Quark双核SoC,集成Wi-Fi、BLE、内存、存储区,预装 Yocto Project Linux 系统,支持 Arduino、Python 以及 Wolfram 环境,兼容超过30项业内标准I/O接口。在功耗方面,在正常模式下它的最高功率约为1W,而在低功耗模式下只有250mW,甚至更低。这基本上满足了大家对新的硬件模块的期望,一时间到处都充斥着关于Edison的®报道。但这款Edison并没有正式发售,Intel在小范围合作的客户中收集反馈意见,在不到一年的时间里,不断迭代更新,终于在2014年年底推出了第二版Edison,虽然尺寸稍微放大了一些,但也远小于大家的想象。

Edison的出现,不但满足了广大电子爱好者、创客、开发人员的需求,同时也非常适用于学校的计算机、嵌入式硬件的教学工作。同样一块硬件模块,针对初学者可以偏重于电子电路、Arduino编程,对于中级用户可以偏重于Python、网络应用,而对于高级用户可以偏重于Linux操作系统。每个阶段都可以做到相互独立,互不影响,都可以基于本阶段的学习内容完成电子作品的制作。

正是由于以上的原因,当我在玩了一段时间的Edison之后,就有一种想分享给更多人的冲动,让更多的爱好者能够了解到这个优秀的硬件模块。不过由于本人水平有限,只能完成前面入门教学部分的内®容,后面的内容由曾在Intel和盛大创新院任职的陈士凯写作。

这本书应该是国内第一本关于Edison开发的原创技术书籍,这里®®要感谢Intel的大力协助,Intel内部很多部门的很多技术牛人都参与了本书书稿的审阅,同时也要感谢人民邮电出版社在图书出版过程中做出的努力。最后还要感谢现在正捧着这本书的您,感谢您肯花费时间和精力阅读本书。由于时间有限,书中难免存在疏漏与错误,诚恳地希望您批评指正,您的意见和建议将是我巨大的财富。我希望通过Edison结识更多的朋友。程晨2015.3.25

THANKS 致谢

®

感谢来自Intel的以下朋友为本书做出的贡献(排名不分先后)。CHAPTER 01初识Edison

创客运动的不断发展,让沉寂许久的硬件领域又热闹了起来,智能硬件、可穿戴设备、物联网这些新兴的事物陆续出现在我们的视野中。不管是硬件工程师,还是之前不怎么接触硬件的软件工程师、艺术家、设计师,大家纷纷加入到这场新工业革命中,而众多的硬件厂商也察觉到了这个快速成长的市场,陆续参与进来,这其中就包括全®球最大的个人计算机零件和CPU制造商——Intel。1.1 Edison介绍1.1.1 第一版Edison

在2014年1月的CES(国际消费类电子产品展览会)上,Edison®®这个伟大的名字被Intel赋予了新的含义——Intel将其生产的一款号称“即插即用”的微型计算平台命名为Edison(见图1.1)。这是®Intel针对智能硬件、可穿戴设备、物联网市场推出的一款产品,它®只有SD卡大小,而Intel希望在围绕Edison构建一个新的硬件生态的同时,使其成为下一代计算平台的标准。图1.1 第一版Edison

随着智能手机的普及以及开源硬件的发展,如今以蓝牙、Wi-Fi等技术作为核心通信手段的物联网在不断升温,各种智能机器人也接踵而至,整个行业似乎要经历一场以新一代更轻巧、功耗更低的设备取代传统PC、平板电脑甚至智能手机的大变革。采用Atom架构的®Intel Edison正是在这样的大背景下推出的。

Edison 采用 22nm Quark 双核 Soc,集成Wi-Fi、BLE、内存、存储区,预装Yocto Linux系统,支持Arduino、Python以及Wolfram编程环境,兼容超过30项业内标准I/O接口。在功耗方面,在正常模式下, Edison最高功率约为1W,而在低功耗模式下只有250mW甚至®更低。但这款Edison并没有正式发售,Intel仅在小范围的合作客户中收集反馈意见,在不到一年的时间里,不断迭代更新,到2014年年底推出了第二版Edison(本书之后的表述中如无特殊说明,均指第二版Edison)。1.1.2 第二版Edison

第二版Edison和第一版相比已经有了不小的变化,正反面如图1.2和图1.3所示。图1.2 第二版Edison正面图1.3 第二版Edison反面

首先从外观上看,第二版Edison比SD卡稍大(见图1.4)。造成Edison“身材”走样的原因主要是因为其内部的处理器由Quark换成了更为强劲的Atom,而Atom处理器需要单独的微控制器来驱动模块的输入输出部分。升级后的Edison核心性能提高了一个数量级,不过核心功耗也增加了不少。图1.4 Edison和SD卡的对比

虽然第二版Edison稍大了一些,但总的来说,作为一个微型计算平台,这样的尺寸也是相当小了,和邮票大小差不多。它几乎能够嵌入任何设备(如椅子、背包、帽子、咖啡机甚至水杯)当中,为这些设备提供一颗强劲的心。1.2 Edison的硬件参数1.2.1 Edison的性能

上一节已经提到了,虽然Edison体积小,只有35.5mm×25mm×3.9mm,但是其功能非常强大,几乎相当于一台完整的PC。虽然缺少了视频输出以及以太网功能,但这些功能都可以通过USB接口进行扩充。另外Edison的功耗非常低,在一般情况下,电流消耗不会超过200mA,而在利用Wi-Fi传输数据时,尖峰电流可能达到600mA。在 ®Intel Edison 的官方说明文档中,我们可以看到整个Edison模块的完整架构,如图1.5所示。图1.5 Edison模块的完整架构

基本上只要给Edison供电,一部完整的PC便可以开始工作了。表1.1给出了Edison模块的具体硬件配置情况。表1.1 Edison模块的硬件配置

在配置表中,我们其实可以发现Edison中实际上还包含了一个Quark内核,不过主频只有100MHz。当然,这个主频如果针对一个单片机而言,运算速度也不算慢了。不过目前该Quark内核还没法使®用,Intel表示将在今后开放对于Quark内核的开发支持。®

32bit Intel Atom处理器、1GB内存、4GB Flash、2.4GHz/5GHz双频WiFi、低功耗蓝牙……所有这些都集中在35.5mm×25mm×3.9mm大小的板子上,下面让我们看看它的内部是如何摆放的。1.2.2 Edison的硬件布局图1.6 Edison模块正面(无屏蔽罩)图1.7 Edison模块反面(无屏蔽罩)

图1.6和图1.7所示分别是Edison模块去掉屏蔽罩后的正反面,正面主要是4GB的EMMC和博通公司的5GHz Wi-Fi蓝牙集成芯片BCM43340,而背面主要是处理器、内存和电源管理芯片,内存采用POP封装,与处理器堆叠在一起,以减小模块总体的尺寸。1.2.3 70PIN接口引脚定义

同样是为了减小整体的尺寸,Edison对外的接口是一个上下两排(间距为0.4mm)的70PIN接插件,如图1.8所示,70PIN接口中各个引脚的定义见表1.2。图1.8 Edison上的70PIN接口表1.2 Edison的70PIN接口定义

通过表1.2,我们能够发现在40个GPIO中,有些GPIO除了当作普通的输入输出端口外,还有附加功能,包括:

1个SD卡接口

2个UART(其中一个只有Rx/Tx)2

2个IC

1个SPI总线(有2个片选)2

1个IS

4个PWM输出

通过这些附加功能,我们可以连接更多的外部硬件设备。Edison®上的PWM是直接从引脚引出的。根据 Intel手册,其PWM输出频率最高可达19.2MHz,并提供8bit的占空比控制。客观来说,这个配置并不算高级,如今很多MCU都可以实现上百兆的PWM输出频率,也可以提供10bit以上的占空比分辨率。但以Edison的定位而言,这样的PWM性能对于一般的电机驱动都是足够的。1.2.4 Edison的软件架构

之前介绍过,Edison内部预装了Yocto Project Linux系统,Yocto Project是一个针对嵌入式应用,由全球各地开发人员共同开发、维护的开源软件合作项目。该项目提供模板、工具和方法,帮你创建定制的Linux系统和嵌入式产品,而无需关心硬件体系,适合嵌入式Linux开发人员使用,极大地简化了开发过程,因为你不用从头裁剪一个包含很多你并不需要的软件的完整的Linux发布版本。

不过由于Edison采用了Atom架构,因此其他的Linux发行版可以比较容易地移植到Edison中运行。除了基于Yocto Project的核心外,®Intel还为Edison提供了包含Middleware、远端云服务的面向物联网®的全套解决方案,这里直接引用Intel的官方文档中的框图(见图1.9),感兴趣的读者可以自行查阅相关资料。®图1.9 Intel官方文档中的框图1.2.5 Yocto Project

Yocto Project 起源于一群年轻人想给他们自己的PDA编写一个操作系统,当时没有一家公司给PDA编写操作系统,于是这些人便想自己写一个。他们采用了Linux Gentoo 桌面的几个工具,尤其是采用了编译工具bitbake。刚开始bitbake和元数据是打包在一起的,但几年后bitbake从元数据中分离出来,形成了现在的OpenEmbedded。当时有些公司采用了OpenEmbedded作为他们的工具,但大多数的嵌入式系统厂商依然采用自己的工具和流程来裁剪Linux。

到了2010年,由于看到大多数公司花费大量的人力和财力干相®同的事情, Wind River Systems和Intel开源技术中心牵头成立了一个开源项目,旨在开发一套标准的构建工具,这套工具采用了OpenEmbedded的几个关键组件,任何人都可以使用,任何人都可以贡献。这个项目不以赢利为目的,而是保持开放和中立,为需要他们的社区提供工具和支持,因此这个项目开始与Linux基金会合作,由此诞生了Yocto Project。

如今,Yocto Project 已经成为嵌入式Linux系统创建的标准方式,有18个组织和社区成员,这包括了数十家公司、数百名贡献者,以及超过140个国家的开发人员。这是世界上最大的合作开源软件项目之一。

由于采用了OpenEmbedded的几个关键组件,Yocto Project 兼容 OpenEmbedded项目,你可以简单、可靠地进行编译和开发,完全支持通过QEMU模拟器的硬件和设备仿真。通过Yocto项目开发出来的Image可以在QEMU模拟器中进行引导。1.3 接口扩展板1.3.1 两种官方扩展板

小尺寸、低功耗、性能强大的Edison对外的接口是一个上下两排(间距为0.4mm)的70PIN接插件,70PIN接口中的各个引脚在第一章已经介绍过了。如此小的脚间距非常不方便焊接,使用者需要制作一块与70PIN接口对应的电路板,否则很难直接应用Edison平台,这让很多电子爱好者止步于对Edison性能的了解,不能快速上手试用这个强大的平台。®

针对这个问题,Intel面向爱好者和创客市场推出了 Edison kit for Arduino,这个套件除了包含一块Edison,还有一块扩展板,这块扩展板能将Edison扩展成一个带有标准Arduino接口的开发板(本书之后将其简称为Arduino扩展板)。Edison kit for Arduino中包含的器材如图1.10所示。图1.10 Edison kit for Arduino

套件中除了主要的Edison和Arduino扩展板之外,还有2个固定Edison用的螺母以及4个作为支脚的尼龙螺柱及螺丝,可以视桌面情况决定是否要将支脚安装在扩展板上。®®

此外,Intel还提供了一个极简接口的扩展板形式:Intel Edison Breakout Board。该扩展板仅包含了给Edison供电的电源接口以及开发所必需的2组USB口。相比而言,Breakout Board 这种形式更加简洁,只需要简单地连接一条USB线给Edison供能,一个完整的计算机系统便可以开始工作了。可以直接通过Edison自带的 Wi-Fi、USB HOST 完成几乎所有的事情。连接了 Edison 的 Breakout Board 如图1.11所示。图1.11 连接了Edison的Breakout Board1.3.2 Arduino扩展板接口说明

Arduino扩展板上提供了丰富的接口,各个接口的定义如图1.12所示。图1.12 Arduino扩展板的接口定义

板子的左下角有一个白色的方框,内有一个70PIN的接插件,这个位置就是安装Edison模块的位置,方框内还有两个螺柱,对应的就是Edison上的两个固定孔。扩展板左上方有5个功能按键,这5个功能按键分成两排,第一排有4个,从左到右依次 是 RM、FW、PWR 和 SHLD RST; 第二排只有一个按键,是RESET,它的功能是重启Edison和Arduino扩展板。第一排中,RM和FW是配合使用的,当Arduino扩展板在按下FW的情况下加电,则扩展板上的Edison会进入固件更新模式,可以从Flash中更新,也可以从USB设备中更新,而RM决定了采用哪种形式更新,按下RM时是从USB设备中更新;而未按下RM时就是从Flash中更新。第三个功能按键PWR是一个软按键,可以调整Edison的供电模式:按住该按键会关闭Edison,再按下则会重启Edison;如果Edison已经启动,按下该按键会让Edison在低功耗休眠模式和正常模式间切换。最后一个功能按键SHLD RST也是一个重启键,不过它只是重启扩展板而不会重启Edison。

功能按键旁边是一个SD卡插槽,可以外扩Micro-SD卡。再往右侧就是一个标准的Arduino接口,根据插排的位置分为数字引脚区、模拟输入引脚区、电源功能引脚区以及ICSP接口。在Arduino标准接口和Edison接口中间有组PWM跳线,它的功能是分配PWM功能引脚,因为Edison上只有4个GPIO具有PWM输出功能,而Arduino的接口中有6个引脚有PWM输出功能,所以需要这组跳线,具体的功能我们稍后再详细介绍。

Arduino标准接口具有20个数字I/O口(包括14个数字引脚区的I/O口和6个模拟输入区的I/O口)、1个ICSP下载口。不同的区域有不同的文字标识,每一个引脚旁边都有针对该引脚的标识字符,数 字0~13、A0~A5都 是I/O口,+5V、GND、RESET等都是功能引脚,使用者可以通过它们很方便地了解怎样进行硬件连接以及程序中使用的引脚。我们在这里还是把Arduino标准接口的引脚定义再重新强调一下,接口定义见表1.3。表1.3 Arduino标准接口定义

像一般的Arduino一样,Edison的Arduino扩展板上数字引脚区的13脚同样连接了一个板载的LED,如果我们通过程序修改13脚的状态,能很直观地看到端口状态的变化。对于很多没有硬件基础的人来说,这个接好了的LED省去了自己连接硬件的困惑,同时又能体会到控制硬件的喜悦,大大减少了因为对硬件这个领域的陌生而产生的茫然。

说明:Arduino标准接口作为普通I/O时可参照表1.3中对应Edison2的GPIO,如果用作特殊功能,比如SPI、IC,可能就对应到其他引脚上了,而扩展板上的AD功能则是Edison通过SPI控制AD芯片ADS7951来实现的。

Arduino扩展板的右侧包括电源接口和一组USB口。电源接口的输入电压是7~15V。电源接口的下方是一个USB HOST。前面我们介绍过Edison本身只有一个 USB OTG,在 Arduino 扩展板上是通过一个USB复用芯片在物理连接上把这个USB OTG分为一个USB HOST和一个USB从设备接口。USB从设备接口是MicroUSB 的形式,就在 USB HOST 接口下方,而两个接口的切换是通过接口之间的一个拨动开关来实现,拨到哪边就是哪个功能,Arduino扩展板出厂时默认拨到下方,当我们使用Arduino的方式开发Edison时,就是使用USB从设备模式,所以这里不需要改动。右下角的MicroUSB口是一个调试串口,通过这个接口能以命令行的形式登录Edison内的Yocto Project Linux系统。装上Edison之后的Arduino扩展板如图1.13所示。图1.13 装上了Edison的扩展板1.3.3 Breakout Board

相对而言,Breakout Board 上的接口就比较简单了,仅包含了给Edison供电的电源接口以及开发所必需的2组USB口。接口定义如图1.14所示。图1.14 Breakout Board的接口定义

板子下沿中间是用来安装Edison模块的,我们能够看到熟悉的70PIN接插件。在板子右侧分别是调试串口、USB HOST以及电源接口,电源接口输入的电压范围是7~15V。

而在左侧是一个电池接口、一个功能跳线以及一个功能按键。左下角的功能按键的是一个软按键,可以调整Edison的供电模式。按住该按键会关闭Edison,再按下则会重启Edison;如果Edison已经启动,按下该按键会让Edison在低功耗休眠模式和正常模式间切换。左上角的电池接口可以连接一节标准的锂电池,板子上的充电芯片能提供190mA的充电电流,同时具有限流和过热保护的功能。不过在给锂电池充电时依然要防止过充和温度过高,电池容量最好小于300mAh,最好自带内部保护电路。Edison通过跳线来判断是通过电池供电还是通过电源接口供电。

最后在板子的中间位置,是4排明显的扩展I/O口,这是将Edison的1.8V的I/O转换为方便焊接或连接的过孔。这4排过孔的标号从上到下分别是J17、J18、J19、J20,每排有14个过孔,方形的过孔是每排的第一个。具体的定义见表1.4。表1.4 Breakout Board的扩展I/O口定义

对比表1.4和表1.2能够发现,Edison接口中与USB相关的引脚没有连接到中间的扩展I/O中,而是直接转换成了一个Micro AB型的USB口。除此之外的功能引脚都被转换成过孔的形式,共51个引脚。1.3.4 第三方扩展板

除了上面介绍的两款官方扩展板,其实有很多第三方公司也针对Edison模块推出了自己的扩展板,例如全球最具盛名的电子零配件供应商SparkFun就推出了一系列的附加扩展板来帮助用户实现更多功能。在SparkFun的网站上搜索关键词“Edison”就能找到这些扩展板,如图1.15所示。图1.15 在SparkFun的网站上搜索Edison的结果

这个系列的扩展板共有13块,包括9轴加速度传感器、PWM输出、SD卡、OLED、电池电源等,它们经过了专门的设计,相对于官方的扩展板,最大的特点就是这些扩展板的背面有一个与Edison上面一样的70PIN接插件。这样几块扩展板就能层层堆叠在一起,如图1.16所示。图1.16 SparkFun推出的Edison扩展板

这样不仅减小了扩展板整体的尺寸,而且用户可以根据自己的需求选择所要使用的扩展板来叠加在Edison上。

另外DFRobot也推出了两款Edison的扩展板——Romeo for Edison(见图1.17)和I/O Expansion Shield(见图1.18)。图1.17 Romeo for Edison

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载