查看: 4156|回复: 4

接触Intel Galileo开发板的全过程

[复制链接]

该用户从未签到

发表于 2015-5-4 16:59:46 | 显示全部楼层 |阅读模式
分享到:
    此帖综合介绍了从Intel Galileo开发板的开箱到使用体验,整理出来供大家参考。
       在 PC 行业,Intel x86 构架的强大性能一直被行业称道,自然这次推出的 Arduino 开发板,也给业界带来了无限的遐想。我相信很多人都会略带调侃问:这个开发板能不能运行 Windows 这样的问题。同时,相信也有不少人会关心 Intel Galileo 的功耗问题,以及开发使用上是否具有难度,通过软件的调整,Intel Galileo 的确可以运行 Windows。
    First开箱验宝
Intel 在外包装设计上也下了不少功夫,也有一些小惊喜,作为一贯的标志性色彩,Intel Galileo 的小盒子也用了与 Intel Logo 一样的蓝色,封面上的那个老人头像我想应该就是 Galileo 本人吧。
       开箱图1.jpg
使用 RoboPeak 微型 USB 显示屏,给 Galileo 增加显示屏变成标准 PC
打开包装后,就能看到 Galileo 电路板了,还有一些说明书等。盒子的内部是表示 Intel 芯片线路的装饰画。
2.1.jpg
2.2.jpg

在电路板旁边印着 Intel 为 Galileo 设计的宣传语:What will you make? 在取出电路板的时候,突然从盒子里发出了 Intel 那令人熟悉的“灯,等灯等灯!”的音乐,这着实令人大吃一惊。这样一个看似细小的设计,却在客户打开包装是带来了巨大的惊喜,真的很用心!而这种感受可能也只有亲身体验才能感受到。
2.3.jpg
将包装盒第二层拿开,我在这层纸板的背后发现了发出音乐的玄机:
2.4.jpg
图:包装盒背面暗藏的光敏发音盒
不过这个发音盒只是个音乐贺卡用的音乐 IC,没啥可 hack 的部分,不然相信它会惨遭全球人民的恶搞修改命运。在打开第二层后,又发现一个小惊喜:Intel 工作服的人偶:
2.5.jpg
盒子中剩余的部分是电源适配器以及兼容不同国家地区插座规格的插头以及 PCB 的固定柱子以及 micro-usb 线。
2.6.jpg
就此所有东西都取出了,我们可以感受到 Intel 对这款产品的重视程度。当然为实现这些细节也是要考虑成本的,而最终为此买单的自然就是消费者。
Second,教你怎么使用
在进一步介绍 Intel Galileo 构造和原理前,先介绍下作为一块 Arduino 开发板的基本使用过程。由于采用了 x86 构架,因此 Arduino 官方 IDE 尚不能直接用于 Intel Galileo,并且为基于传统 AVR 芯片设计的 Arduino 程序和库也可能需要做出修改。为此,Intel 提供了一个修改版本的 Arduino IDE,可以从 Inte l的 maker 官网 maker.intel.com 下载【1】。
驱动.jpg
对于具体的驱动安装和使用,Intel 为用户提供了 Getting Started Guide 文档[2]
驱动2.jpg
这 里需要提醒大家的是,使用时需要先给 Intel Galileo 使用电源适配器供电,方可再通过 USB 线连接至电脑。这一点非常重要,因为Galileo 有专门的 DCDC 电源控制,并且启动过程瞬间电流需求较大。如果只连接 USB 企图给电路板供电,则可能会损坏电路板或者电脑。
连接.jpg
Intel Galileo 内部运行着 Linux,与 PC 连接时,它需要采用 Intel 专门提供的驱动描述来保证 PC 将它识别为串口设备(仅用于 Windows,MacOS 和 Linux 请参考文档)。
串口.jpg
启动 Arduino IDE,此时我们就可以把 Intel Galileo 作为一个标准的 Arduino 开发板使用了:
开发.jpg
与其他 Arduino 开发板一样,Intel Galileo 也可以在 Arduino IDE 中进行开发
Third,Intel Galileo 参数浅析
通过前文的介绍,大家应该了解到通过 Intel 提供的 Arduino IDE,就可以像标准的 Arduino 版那样进行开发了。不过光是实现标准 Arduino 开发板能做的事情,这完全没法体现出 Intel Galileo 有何特殊之处,最多只能是一个速度更快的 Arduino 罢了。如果功能上没有任何比传统 Arduino 过人之处,相信 Intel 也不会推出这样的产品了。其实 Intel Galileo 真正强大之处并不在于前面提到的基于 Arduino IDE 的开发,而是背后基于 UEFI/Linux 的软件平台以及 Galileo 自身的硬件配置。为此,Intel 提供了丰富的开发文档、软件代码支持,方便开发人员真正的发挥出 Galileo 的所有潜力。而要了解使用这些功能,就需要我们更加深入的去了解 Intel Galileo 的内部构成和更深入的软件构架。
1.硬件配置与构架分析
这里我们列出 Galileo 的基本配置:
配置.jpg
Intel Galileo 的系统框图如下:
框图.jpg
画面中最醒目的自然是名为 Quark SoC X1000 的处理器,这块芯片究竟有哪些功能?这个我们稍后再具体分析,不过看起来这块处理器更加像单片机(MCU),除了处理器外传统 x86 构架的南北桥芯片已经不见踪迹,PCIe、USB、串口等外设信号直接是从 Quark 处理器芯片连出。Intel官方也提过,他们会像 80 年代推动嵌入式领域那样(是指 8051?)推广 Quark 处理器构架[10],从 Galileo 的构架上可见一斑。此外还可以注意到 Galileo 配备了共计 256MB 的 DDR3 内存。如此大的内存空间,足以让 Galileo 运行目前的各主流操作系统。不过与单片机不同的是,作为兼容标准 Arduino 板的各种 GPIO/PWM/ADC 信号,并没有与 CPU 芯片直接相连,而是采用了独立的 ADC 芯片和 IO 扩展芯片。
2.对外接口
对外接口.jpg
接口2.jpg
从 Galileo 提供的对外接口来看,与其说是 x86 版本的 Arduino,我更愿意认为它是一个完整的 PC 主板。除了连接显示器的 VGA/HDMI 等接口和 SATA 接口没有提供外,几乎 PC 主板该有的接口在 Galileo 上都提供了(也有办法连接显示器,如采用 PCI-E 或者 USB 接口的显示器/显卡)。丰富的接口给了今后基于 Galileo 进行扩展开发的无限可能。尤其它还带有我最中意的 Mini PCI-E 接口,这使得 Galileo 与 FPGA 结合运算加速成为可能,这是目前各种 ARM 开发板中很少能看到的接口。
除了 Mini PCI-E,USB2.0 高速 Client/Host 口也为很多应用提供便利。一方面通过 USB Host 可以将各种 USB 外设连接在 Galileo 上,比如将 USB 摄像头连接与 Galileo 结合 OpenCV 进行视觉计算,此外,也可以通过 USB Client 将 Galileo 作为外设连接至 PC,就像目前 Galileo 实现的那样,当然,后文我们会分析到,用户是完全可以随意定义这个 USB Client 具体行为的,可以将 Galileo 作为任何希望的外设连接至 PC。
3.Quark SoC X1000
Galileo上使用的这款 Quark SoC X1000 的处理器芯片相信是大家最关心的。那么它到底是不是属于 Intel Atom 系列的处理器呢?答案是否定的。
特写.jpg
在 产品定位上,Intel 将 Quark 定位于面向物联网、可穿戴设备的 x86 处理器,他的内部代号为 Clanton。相比 Atom 系列处理器,Quark 差不多是 Atom 1/5 的尺寸,功耗也只有 Atom 的1/10 (详见[6])。这估计也是叫做 Quark(夸克)的原因。当然,作为减小尺寸、功耗、降低成本($5)的代价,Quark 的性能也弱很多。它比较像是改良了制程,但阉割了 MMX 指令集的奔腾 I 代处理器(参考文献[7]中猜测 Quark 是改良自 P54C 构架,P54C 构架是主频在 75, 90, 100 MHz 奔腾 I 代处理器采用的构架,当年采用 0.5um 制程工艺)。
从 支持的指令集看,Quark 并不像其他 Atom 芯片那样支持 x64、MMX、SSE 等高级的指令集,但包含了浮点指令集(x87)。虽然 Intel 的官方参数中提到 Quark 的指令集是与奔腾兼容的,但很明显,由于缺少了 MMX 指令这个作为奔腾处理器的重要标志,实际上很多可以在奔腾 I CPU上运行的程序在 Quark 上可能是不能运行的。这点算是一个遗憾,缺少 MMX、SSE 这类 SIMD 的指令集加速,使得 Quark 在处理多媒体、图像运算、计算机视觉等算法上可能会表现的较差。
不 过,除了 MMX 指令集外,其他奔腾指令集/构架在 Quark 中均有支持。因此现在的程序只要不带有 MMX、SSE 指令,理论上是可以在 Quark 上运行的很好的。这点我会在后续的软件开发部分提到注意事项。这也可以看到另一个细节,就是目前 PC 上的主流操作系统,Windows 和 Linux 都有望在 Quark 中运行(目前 Intel Galileo 上运行的就是 Linux)。
作为一款面向小型化设备的处理器,Quark 在 SoC 集成上做的还是不错的,几乎是一个单片机该有的形态。即使不外接 DDR 内存,Quark 也可以利用芯片内集成的 512kbyte 的 SRAM 工作。
在 功耗方面,Quark 将 max TDP 控制在 2.2W。对于采用 3.3V 供电而言,也就是最大需要提供 660mA 的电流。这样的功耗相比其他 x86 CPU 而言已经小了很多,但是我们对比同样主频等级的其他构架的处理器,如 ARM、MIPS 构架的一些处理器,就会发现 Quark 的功耗还是相对偏高的。如果要将 Quark 作为低功耗应用,Intel 为此还需要做更多的功课。
4.GPIO/PWM/ADC 接口的实现和 Hack
从前面的框图可以发现,Galileo 上对外的 GPIO/PWM/ADC 接口并不是直接从 Quark 芯片中直接提供的,而是采用了额外的芯片来实现,Quark CPU 与这些接口芯片再使用 SPI/I2C 进行连接。
这样做自然有不少的好处,比如可以做到电气隔离。Quark 处理器采用 3.3V 电平,因此也无法直接将自身的 GPIO 与 Arduino 接口直接连接。也可以避免用户由于连线错误连接直接导致 Quark 芯片烧毁的可能。同时也提高了系统的灵活度。
通过分析这些新品的数据手册,在了解 Galileo 的实现细节的同时,还可以发现更多可以用来 Hack 的特性。比如用于实现 GPIO/PWM 信号扩展的 CY8C9540A 芯片的框图:
框.jpg
从 芯片框图可知,该芯片除了提供了 PWM/GPIO 的信号扩展外,还自带了一个可以被 Quark 使用的 EEPROM,可以存储 11kbyte 的数据[9],用户可以使用 EEPROM 库来操作他。此外,该芯片实际提供了 8 组 PWM 口,多于 Intel Galileo手 册中描述的 6 组。不过额外的 PWM 输出是无法通过使用 Arduino IDE 来使用了,这便是今后可以 hack 的部分。
观 察用于数模信号采集的 ADC 芯片 AD7298,发现性能也尚可。具有 12bit 1Msample/s 的采集能力。这样的性能虽然不算高,但比基于 AVR 芯片的 Arduino 强很多,与目前的一些 32bit ARM MCU(如 STM32)的 ADC 处于同一等级。
4.SD 读卡器
Intel Galileo 上的 SD 读卡器直接与 Quark 处理器相连接。这个读卡器比较吸引人的特点在于在 Galileo 启动时,将尝试引导位于 SD 卡上的操作系统。就像 PC 上的引导 U 盘一样。用户可以将自定义的操作系统放置于 SD 卡,使得 Galileo 运行其他的系统成为可能。关于这点,我将在后续软件构架和可能性探讨部分具体涉及。
读卡器.jpg
5.调试串口
Intel Galileo 提供了一个调试串口供开发人员通过终端连接 Galileo 调试底层的软件系统。不过比较怪异的是,Galileo 将该串口接口做成了 3.5mm 的耳机插口。这不但令人容易疑惑,此外要找到这样的串口接口也不容易,为此 DIY 了一个音频插口转 RS232 插座的转接线:
插座.jpg
通过使用 Putty 等软件,可以观测到 Intel Galileo 启动过程以及进入内部的 Linux 进行操作。
6.存放自带固件的 Flash
位 于 Intel Gaileo 主板上有块 8MByte 大小的 SPI Flash,其中保存了 Galileo 启动中的固件程序。类比 PC 主板,其实这块芯片保存的就是 BIOS 程序。不过在后面的软件构架中我会提到,Galileo 采用了 UEFI,这块 Flash 芯片中包含了 UEFI 的固件程序用于 Galileo 初始化引导、以及一个小型的 Linux 操作系统,用于运行用户通过 Arduino IDE 开发的程序并和 PC 完成互联。
为了方便用户 hack,Intel Galileo 也很友善的将这块 Flash 芯片的 SPI 接口引出,用户可以不需要拆下 Flash 芯片,直接使用编程器对 Flash 芯片内的固件程序做修改和备份。
Flash.jpg
Fourth,Intel Galileo 的高级操作
直接操作 Linux 系统
3.5mm 音频插座转串口线将 Galileo 的调试串口与 PC 互连的串口为例,并使用 Putty 打开串口中断,设置 115200 波特率。
给 Intel Galileo 通电后,就可以看到启动过程的文本输出,最终将看到 Linux 登录提示画面。直接使用 root 账号登录:
黑1.jpg
接下来就可以像其他 Linux 系统一样进行操作了。
使用 SD 卡上的 Linux 系统
如果需要运行 Intel 提供的完整版 Galileo 定制的 Linux 系统,就需要从 SD 卡引导启动。在 Intel 的 Galileo 下载页面[1]提供了该 Linux 系统的 SD 卡文件。将他们复制到 FAT 格式的 SD 卡根目录下:
复制.jpg
将 SD 卡插入 Galileo,并给 Galileo 通电即可,Galileo 将会引导来自 SD 卡的 Linux 系统。可以通过串口或者以太网登录至该系统:
黑2.jpg
相比 SPI Flash 中的 Linux,SD 的 Linux 系统包含了更多的驱动,以及带有如下的库/程序:
•OpenCV
•Python
•node.js

黑3.jpg
与 UEFI直接打交道
除 了操作 Linux 外,Galileo 也提供了 UEFI Shell 供我们操作更底层的固件以及在具体 OS 加载前,对 Galileo 进行一些简单的操作。UEFI Shell 提供了一系列的命令可以使用,可以操作文件、对内存/外设等调试或者编写脚本运行。如果需要修改 SPI Flash 的内容,但手头有没有硬件编程器,就可以借助 EFI Shell 来完成。
通过调试串口,并使用 Putty 连接至 Intel Galileo。在启动过程中进入 Grub 菜单后按住 c。并输入 quit 退出 grub:
黑4.jpg
此时 UEFI 将会提示新的启动模式,选择 UEFI Internal Shell:
黑5.jpg
接下来即可进入 EFI Shell。后面提到的对 SPI Flash 进行更新的操作就是在 EFI Shell 当中进行的。
黑6.jpg
可能遇到的问题:
1.不 少已经拿到 Intel Galileo 的朋友都会反映 Intel 提供的 Arduino IDE 会出现闪退问题,就是在启动 IDE 出现版本画面后,程序会默默退出。其实这并不是 Intel 的问题,而是新版本 Arduino IDE bug。由于 Intel 定制的 Arduino IDE 采用了还未发布的 1.5.3 版本 IDE,如果当前 OS 的区域设置不是英文(En/US)的话,IDE 就会自己退出。为此,Arduino 开发团队和 Intel 也已经意识到了这个问题,也将在 1.5.4 修复。
目前为了解决这个问题,最直接的办法就是修改操作系统的语言设置,改为英文即可。不过这样需要重启系统,并且可能会对采用中文的应用程序造成影响。这里我给大家分享一个不用修改系统语言设置的办法,使用一个名为 Locale Emulator 的开源软件[3]
界面1.jpg
该软件可以为特定程序虚拟出特定的语言区域配置,而不用修改整个操作系统。使用这个办法,就可以直接使用 IntelGalileo 的 ArduinoIDE。
界面2.jpg
2.发热与功耗
功耗一直是困扰 x86 平台在移动嵌入式领域应用的重要问题,我对 Intel Galileo 做了几个简单的测试。相比其他 x86 平台,Intel Galileo 功耗的确算小,但是与 ARM/MIPS 等同主频等级的平台相比,就显得大很多。在 CPU 几乎空闲的工作状态下,测得的功耗水平是 5V 0.5A,也就是 2.5W 的耗电量。而在启动过程中,会出现 1A 以上的峰值电流。
功耗.jpg
过考虑到目前 Galileo 中运行的 Linux Kernel 并没有开启动态 CPU 频率控制功能,因此即使在满负荷下,CPU 核心的功耗水平应该相比空闲状态差距不大,因此启动过程中的峰值电流应该是在开启外设产生的瞬间电流造成的。在启动后的工作当中,即使 CPU 满负荷运作,整体的功耗应该会维持在 0.5A 附近。这样的功耗水平对于使用电池供电就显得有些压力了,如果使用 2000mAh 3.7V 的锂电池供电,Galileo 理论最长的待机时间是 2.96 小时。从 发热角度上看,Intel Galileo 采用的 Quark 处理器芯片的 max TDP 是 2.2W,不需要主动散热设备。Intel 也没有给 Galileo 的处理器配置被动散热片。但这并不表示运行过程中就不发热。在工作状态下,即使是 CPU 保持空闲状态,用手摸处理器表面仍旧会觉得烫手,实测的温度在 65 摄氏度左右。
PS:运行其他的操作系统
目前的 Intel Galileo 只能运行 Linux,并且由于自身并没有视频输出接口,Intel 默认的 Linux 配置是没有 X 图形系统的。不过作为一个 x86 平台,大家自然会希望 Galileo 运行其他的操作系统,如 Windows。
在 前面的分析中,我们已经看到 Galileo 的构架和软件支持完全允许让 Windows 运行在其中。这或许最终没有什么实际价值,但也是值得尝试的事情。至少作为 geek 来说,这样做可以加强“我可以”的信条。此外,运行 Windows 也可以让 Galileo 驱动一些尚只有 Windows 驱动支持的外设,比如一些打印机设备、银行 U 盾等。
通过对软硬件构架和开发过程的介绍,相信大家会了解 Intel Galileo 的巨大潜力,如果只是当作标准 Arduino 来使用,那就太可惜了。
本人根据发烧友经验节选编辑。

祝愿大家都能够有所收获!



开箱图2.jpg
开箱图3.jpg
回复

使用道具 举报

该用户从未签到

发表于 2015-5-4 17:30:19 | 显示全部楼层
顶一下
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2015-5-4 17:32:01 | 显示全部楼层
三扣,多谢捧场
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2021-12-10 15:56
  • 签到天数: 2675 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2015-5-4 20:50:58 | 显示全部楼层
    很详细,感谢分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-19 14:34
  • 签到天数: 140 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2015-5-10 16:59:41 | 显示全部楼层
    初学者可以照着做
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 18:21 , Processed in 0.148888 second(s), 24 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.