(注:因为传感器还没有到,所以本文没有Arduino相关的内容,如果你关心这方面内容可以直接无视了。)
X宝上购买的 Intel Galileo 2.0的板子。
物品清单:
1.一个Intel Galileo 2.0主板
2.一个电源适配器
3.几个标准插头
开始使用
将串口线接入到网口接口边上的串口引脚,利用SecureCRT可以看到它的启动过程。最终他会进入到一个小型的Linux操作系统。登录用户名是 root,密码无。
如果手头没有串口线那么,是无法看到这个启动过程。而且就算你插上网线,你也不能远程登录上去。因为内置的Flash芯片上的Linux是没有网卡驱动程序的。不过没有关系,我们可以给他安装完整版的Linux,或者WindowsIOT系统。
上图,指出了本文关键使用的地方,TF指示灯,板子上写的是sd,如果你用的是一代的板子,具体参考intel的文档
安装操作系统
下载系统
现在可以安装的操作系统有Intel提供的Linux。下载页面地址:
https://communities.intel.com/docs/DOC-22226
本文使用的是 SD-Card Linux Image。
另外一个操作系统是微软提供的 windows iot。主页为:
http://dev.windows.com/en-us/featured/Windows-Developer-Program-for-IoT
这个系统,现在是免费提供的。但是你必须用微软账号(MSDN账号)登录后才可以下载。包括系统镜像、SDK还有烧录命令文件。开发要求用VS2013。
SDK:WindowsDeveloperProgramforIoT.msi
镜像:9600.16384.x86fre.winblue_rtm_iotbuild.140925-1000_galileo_v2.wim
烧录cmd文件:apply-BootMedia.cmd
以上文件缺一不可。
准备介质
本人准备了两张TF卡,一张1G的用于安装Linux,一张2G的用于安装Windows。这个板子最大支持32G TF卡。这个板子上的CPU虽然是X86系列的,但是很遗憾它不支持传统意义的BIOS。不过它支持UEFI以及Grub。所以如果你想做自己的操作系统,就必须研究这两种引导协议。
格式化
支持的文件系统格式只有FAT32或FAT,(貌似UEFI只能识别这两种文件系统)。但是并不是你直接把TF卡格式化成这两种系统中的一种就可以了。因为是需要激活分区的,但是通过磁盘管理激活不一定会成功,所以这里需要用到命令行。先用管理员模式启动命令行,并运行
diskpart
list disk
找到TF卡前边的磁盘编号。
select disk n
n为TF卡的磁盘编号,不要输错,如果错了,那就节哀吧!
clean
create partition primary
select partition 1
active
format fs=fat32
exit
按照上面的命令依次输入下来,就可以了。
安装Linux操作系统
很简单,解压 SDCard.1.0.3.zip 文件。将image-full-galileo目录下面的文件全部拷贝到刚才制作的SD卡中。注意不是把image-full-galileo拷贝到SD卡,而是把里面的内容拷贝到TF卡的根目录。现在Linux已经安装好了。插入到板子的TF卡卡槽。连上网线。接通电源。(确保你的网络提供了DHCP功能,有点废话了)观察TF指示灯,如果只是开始一瞬间有闪烁,后边都是灭的,那么八成是格式化步骤有问题了,或者文件没有考全。重新来过吧。(PS,我安装两个系统都是一次成功,额,身为程序员没有遇到BUG,这,这不科学啊)。第一次启动需要的时间久一点,需要生成密钥,等待2分钟吧。现在你可以登录你的路由器,查看板子网口所分配的IP,当然你也可以测试自己的运气去猜测。不管怎样,你现在拿到了板子的IP。通过SSH2可以登录了,用户名是root,没有密码。
安装Windows iot
提到本人的大爱Windows,我就多啰嗦两句(喜欢Linux的朋友,直接无视吧,看我这么辛苦整理的份上请不要BS我)。Windows iot 暂且这么叫吧,因为款操作系统具体叫什么名称,微软也没有定下来。它是为物联网来设计的。是Windows8.1的裁剪版。各位看官是不是有点浮想联翩了呢,不过不要高兴的太早,微软这次可裁剪了很多东西啊。呵呵,后边有具体说明。
言归正传开始安装 。管理员启动cmd
apply-bootmedia.cmd -destination F: -image 9600.16384.x86fre.winblue_rtm_iotbuild.140925-1000_galileo_v2.wim -hostnameIntelGalileo2 -password galiloeo
其中 apply-bootmedia,cmd 是微软提供的将WIM映像文件烧录到TF卡的脚本文件
F: 是你的TF卡的盘符。
9600.16384.x86fre.winblue_rtm_iotbuild.140925-1000_galileo_v2.wim 是下载的wim映像文件。
IntelGalileo2 是你希望的主机名字
galileo 是你要登录时 administrator 用户使用的密码
这些东西根据你的实际情况输入。然后会出现下面的输出
嗯,顺带插一句,可能是我的TF卡太老了,又或者我在格式化的时候应该把他格式化FAT格式(有些TF卡格式化成FAT读写速度比FAT32快很多),又或者本来就是这样。这个映像写入动作花了2个多小时。早知道可以准备一个好看的电影,爆米花之类的,有点扯远了。反正最终这个过程你完成了,没有出任BUG。
插入到板子的TF卡槽,接通电源。此处同Linux。等待2分钟之后。你通过telnet登录了,记得是telnet不是ssh2噢!如果你安装了VS2013和WindowsDeveloperProgramforIoT.msi(PS这个貌似必须先安装VS2013)。系统托盘里会出现一个工具,用于监视网络里是不是有windows iot 系统的设备启动,也就是说你不必要去路由器查看,或者玩乐透了。还是微软简单一些。
登录上去
关机的时候一定要输入命令,不能直接拔电源。
shutdown -s -t 0
开发
这部分,我只讲Windows iot的一些测试,至于Linux。因为本文一直没有提到一个该提的东西——Arduino。实际上Intel Galileo 的硬件是兼容Arduino,所以无论是上面运行的Linux还是Windows iot都是支持Arduino,只是我现在手头连个发光二极管都没有。。。囧!等传感器到了,我会在以后的文章中接续介绍。实际上我至今也只是听说过Arduino。啰嗦了一堆和Linux有什么关系呢,因为Intel提供的IDE以及编译器就是Arduino的,而的Linux里面没有gcc之类的。貌似有python,不过这个东西我不懂。不过网上说Intel的开发目录里面有g++编译器,有兴趣的朋友可以自己尝试。
微软的网站上有很多例子代码。你可拷贝下来使用,不过前提是你有各种传感器而且要去安装 VS2013以及前面下载的WindowsDeveloperProgramforIoT.msi。
你现在可以打开VS2013建立iot的工程了
点确定后,会弹出一个界面问你的开发板的版本。和我上面电路板一样的就点NO,否则点YES。
此时或生成一个例子程序,是控制LED灯,闪烁的。不过前提是你要有外部的设备。
设置IDE环境
关键点来了。首先你先要保证你的计数机是联网的(废话,不联网我能看到你写的东西吗。)。其次打开项目配置文件packages.config,如果文件内容如下
<?xml version="1.0" encoding="utf-8"?>
<packages>
</packages>
那么你还需要下在一个package,在你开始写程序之前
然后再最下边会出现
输入:Install-Package Microsoft.IoT.NativeWiring -Pre
等待下载安装成功后,你会发现 packages.config 文件的内容变为
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.IoT.NativeWiring" version="1.0.0-alpha2" targetFramework="Native" />
</packages>
修改工程属性页,在红框处填写你的开发板的IP,或者主机名
启动板子上的远程调试代理
登录板子上的windows,执行 C:\Tools\RemoteDebugger\run.cmd。
这一切都做完了,我们终于可以开心的code了。不过API集合被裁剪了,所有跟消息循环,还有GDI有关的API都会直接报错,说Entry Point Not Found,也就是微软压根没有编译这些函数到这个系统。上来就看MFC的兄弟,就别想了。但是也不至于洗洗睡了地步。个人还是测试了一些跟HANDLE相关的函数,事件,信号之类的函数,运行正常。去恶补《WIndows核心编程》吧。至于.NET,虽然微软很宠爱你,但是这次真的要洗洗睡了,跟你们真的没有什么关系,当然从微软战略上讲,你们是将军的,在云上指挥我们这些Windows iot设备。
后记
虽然做技术这么多年,从事了7年的windows本地包括驱动的开发,还有3个月的Linux下的c++开发。但是写文章还是第一次,所以词不达意的地方还请大家海涵。希望大家多提意见,多多交流。
我在网上看到一篇博文(http://www.ifanr.com/388835),介绍了很多背景知识,很不错。估计很多人可能对那个显示器感兴趣,我也是,实际上这篇文章的作者貌似就是设计这个显示器的。另外,我在国外的一个网站上看到了专门给这个板子设计的mpcie接口的LED显示屏,不过X宝上还没有身影。名称是MPCIe750(http://www.micropassion.co.uk/Graphicscards.html)。