去年做WCET,需要一个x86的开发板做实验,购入了Galileo2代,当时主要负责硬件实验,记了云笔记。
首先,介绍一下Intel Galileo系列,目前出了两代,和Edison等系列主要是Intel面向物联网开发的推出的产品。
英特尔 Galileo 2 代主板是一系列经过 Arduino 认证的开发板中的第一款产品,基于英特尔 ® 架构,专为制造商、学生、教师、DIY 电子发烧友而设计。英特尔 Galileo 2 代 基于英特尔 Quark™ SoC X1000(32 位英特尔奔腾® 处理器级片上系统(SoC)),带有原装英特尔处理器并具备原生 I/O 性能,是一款适用于广泛应用的功能丰富的产品。通过 Arduino 认证,并设计为与一系列广泛的 Arduino Uno R3 插板在软硬件、引脚上兼容,此外还允许用户将 Linux 固件调用纳入他们的 Arduino 初始编程中。
++++ 如何做SD卡启动盘。 ++++
器材:Galileo gen2开发板(包括电源线),TTL-232R-3.3串口线一根(用于串口调试),SD卡一张(小于32G)
用到的软件: Win32DiskImager(用于写入sd卡镜像), pytty.exe(串口调试软件用于与板子通讯),7-Zip(用于解压文件),Galileo Linux 的SD卡镜像(一个集成好的基于Yocto项目的Linux) 镜像官方链接: link:https://downloadcenter.intel.com/download/26418/Intel-Galileo-Board-Support-Package?v=t(SDCard.1.1.1.tar.bz2)
Step1:在电脑上解压好镜像文件。
Step2:用Win32DiskImager将镜像写入sd卡。打开Win32DiskImager,进入到解压的文件夹,选择文件类型为*.*,选择解压出来的 .direct文件(类似名称为iot-devkit-version-mmcblkp0.direct),点击写入。
写入完成后SD卡即可作为一个启动的介质,插入到Galileo板上的卡槽后,接通电源默认将会从SD卡引导系统。
到这一步,板子基本上相当于一台运行Linux的PC了。将串口调试线一端接在Galileo上,另一端插在我们自己的电脑usb口上(可能需要安装串口驱动程序link:http://www.ftdichip.com/Drivers/CDM/CDM%20v2.12.00%20WHQL%20Certified.exe),接着在打开putty软件,选择串口通讯,波特率设置为115200,点击建立会话,即可出现Linux终端,输入root,回车。(root 默认密码为空)。
++++ 在电脑上安装用于编程的IDE ++++
由于一般开发板都没有外接键盘/屏幕等,就需要在自己的电脑上进行程序开发,然后通过串口/网络等方式传到开发板上,才可在板子上运行程序。
关于Galileo的程序开发,官方提供的有两种途径:
1.基于 Arduino IDE
图片来源:http://jingyan.eeboard.com/article/75222#/prettyPhoto%5Bpp_gal%5D/7/
Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
之前提到,Galileo 2代兼容Arduino IDE,其程序语言类似于C,但仍有区别。研究了一下,发现IDE会先将编写的sketch 转换成C++ 项目 ,然后在传给编译器进行编译(avr-gcc),大概步骤如下:
•对于 Sketch 文件(后缀名是 .ino ,即IDE中编写好的程序,在 IDE 中显示为无后缀名), Arduino IDE 会进行一系列预处理,最终将它们捆绑成一个 main.cpp 在一开头加入 #include "Arduino.h" 。遍历所有 .ino 文件中定义的函数,自动生成函数原型,将其加到文件的开头(在所有注释和预编译指令之后,所有语句之前),然后将所有 .ino 文件拼接起来。
普通的 C/C++ 文件不会经过以上的预处理
•编译及链接
首先, Arduino 的基本库文件、 avr 头文件、 C 标准库文件会被加入引用目录列表。而对于普通的 C/C++ 文件,则会单独编译成一个静态库,最后和 main.cpp 以及各个 library 的编译结果链接起来。
•IDE在预处理以及编译后产生的文件 应该暂存在一个文件夹中。
•修改目录arduino-1.8.5\lib\ 下 preferences.txt,在最后加入一行 build.path=d:\arduino 即可将编译时中间文件夹重新设置 在重新编译sketch 时 即可在此文件夹中找到相应的文件。如图:
2.基于Intel® System Studio IoT (支持java,node.js,C/C++开发) link
这里我们选择更通用的Intel® System Studio(基于eclipse的)进行C/C++开发。
安装前准备:电脑上已安装Java* SE Development Kit 8即JDK1.8 64位,电脑BIOS中设置为Enable Intel VT-x。
接着如下安装:
1.安装Docker,并按指导设置好参数。 官方指导https://software.intel.com/node/891d3133-326c-4989-972b-24b8763707ec 也可百度自行安装。
2.安装Intel System Studio IoT,先从网站 https://software.intel.com/iss-iot-installer/win/latest下载最新安装器,点开后会自动完成安装。
3.安装完成后,可以在安装目录下找到iss-iot-launcher.bat文件,双击即可打开Eclipse,其中自带了一些简单的Demo,例如点亮板载LED。至此即可开始进行Galileo的C/C++程序开发。 官方教程
Galileo板通过网线接到路由器上和电脑连在同一网络下,在Eclipse中设置远程调试参数(Galileo的ip地址,可在putty建立的终端中输入ifconfig查看;用户名:root,密码为空)即可上传编译好的ELF到板子运行。
另外还可用WinSCP进行上传:同样需将板子和电脑连在同一网络下,在电脑上打开WinSCP,输入Galileo的ip地址,用户名:root,密码为空点击连接,即可连接到Galileo的存储空间。在WinSCP中找到本机电脑的eclipse workspace目录下的相应项目,其目录下Debug文件夹下即存放着编译好的ELF文件。在WinSCP中可将Debug下的ELF文件(例如Demo.elf)直接复制到Galileo板子Linux系统下的的文件夹中,再选中Demo文件右击选择属性,将其读写权限改为0755(使其可在Linux下运行)。最后在putty终端中进入相应文件夹,输入./Demo 即可运行该程序。
第一种方法有时候会出现上传失败,第二种方法比较繁琐,但暂无运行失败情况发生。