微软物联网解决方案-Windows IoT Core

Windows IoT Core 作为微软物联网解决方案中前端核心产品,经过几年的发展,取得了很大的进步,虽然仍然有一些BUG,但是从2015年以来,已经取得了长足的进步,况且目前还是免费的,还能奢望什么呢。自从成为Windows IoT Core的技术支持以来,看到了很多人对微软产品的抱怨,一个歪果友人说自从1998年以来,再也不用微软的产品了,不知道他是被微软伤了有多深,也有人说在Windows IoT Core上遇到一个问题纠结了一个月,头发都掉光了的。不过从一个技术支持的角度讲,问题是不可避免的,否则我就要下岗换搬砖了。下面我就简单的讲讲如何在Windows IoT Core上进行开发。

一、支持的开发板

Windows IoT Core支持树莓派、MinnowBoard、DragonBoard,这三个板子是微软官方推荐的,当然实际是不止这三个板子。其中MinnowBoard是使用的Intel x86的芯片,其他两个都是高通的ARM芯片。通常情况下会选择树莓派,毕竟便宜,今年年初发布了Raspberry PI 3B+,其实就是主频提高了,外围没有改变,但是不幸的是,Windows IoT Core目前只有一个Insider Preview版本来支持3B+,而且还不能使用内置的WiFi和蓝牙,微软还没有Schedule来支持3B+。所以目前还是建议使用3B。另外,微软提供了Windows IoT Core兼容的外设,可以看这个兼容性列表。在新版本(16299以后)的Windows IoT Core,对于已经树莓派不支持远程助手Windows Remote Client,只能通过接显示屏来操作,而仍然支持其他两个板子,其中原因可能是树莓派的GPU太弱,而微软不愿意去花精力解决系统和GPU的问题。当然一般情况下使用Device Portal就可以进行远程的设备维护,还可以使用PowerShell进行连接。配套的工具还有Windows IoT Dashboard,可以使用这个工具查看局域网内的所有设备。当然遇到最多的问题是烧写系统后,板子起不来,但是烧Raspbian系统正常启动,这个问题目前没有好的解决方法,无非就是换SD卡或者换板子,如果你足够不幸而且家里有矿,那就全换一遍。微软虽然推荐了两个Class 10的SD卡,但是很多人还是烧写后无法启动,甚至有人说用非推荐的SD卡反而启动快,我不是土豪,没有那么多卡来试。

二、支持的应用

Windows IoT Core本身是基于Windows 10的精简内核,原则上是支持Windows 10的应用,但实际上仍然有很大的差别,Windows IoT Core上没有Microsoft Store,所以不能通过Microsoft Store安装一些应用程序,可以使用Visual Studio进行远程部署,或者打包后进行安装。Windows IoT Core运行的应用有两个模式,一个是Headed模式,一个是Headless模式。Headed模式是用于有UI界面的APP,在这个模式下只能有一个APP在Active状态,UI为全屏显示,而Headless用于无UI的Background应用的。具有UI的APP其实就是微软现在主推的UWP(其实是对WPF的升级),顺便说一下个人对UWP的感悟,在做UI上UWP绝对算的上一流的思想和一流的技术,可以很轻松的构建炫酷的APP,有内置的一些动画效果。当然Windows IoT Core 也能运行C++的控制台程序,不过这只能在command命令里面执行。Windows IoT Core对系统的Service和Driver很封闭,你甚至无法查看驱动的版本信息,除非你取下SD卡找到inf文件。

前端时间研究了OpenCV在Windows IoT Core上的支持,目前微软整合好了一个Visual Studio 2015可以编译的Solution,但是要自己折腾Visual Studio 2017和OpenCV 3.4,还是省省力气吧,会很麻烦。最好的解决方案是使用Windows Runtime Component(C++),在组件里面使用nuget安装opencv,然后作为Bridge,把该工程作为引用添加到你的C# Project里面,也是很方便的。可以参考这个例子

Windows IoT Core对于不熟悉驱动、传感器硬件的开发者来说,其实入门要比较低,本身.Net的开发就比较容易入手。Windows IoT Core读写GPIO、串口、SPI、I2C都变得很容易,微软也提供了大量的Sample,还有一些非常有用的例子放在了UWP的REPO里面,请参考这里。当然在hackr.io也有不少微软大神写的Solution,有人脸识别门禁的Demo等等,非常有价值。

三、系统定制化

Windows IoT Core系统定制化其实还是比较方便的,对于OEM来说很重要,微软提供了比较全面的文档介绍如何定制自己的系统,请查看这个向导。在这里我主要提醒的是,在Build自己的Image的时候,WDK、WSDK、BSP以及你使用的PC操作系统,一定要保持版本一致(到小版本也要一致),否则编译会出现很多的问题。系统定制,可以添加自己的驱动程序(甚至有的PC上的驱动可以移植到Windows Io Core,但不保证能成功)、自己的应用程序、有选择的使用系统的特性(Feature List)或配置(config.txt中存有很多系统启动时的配置)。如果是使用DragonBoard 410C,虽然高通在官网上发布了一个手册来指导如何编译,但实际上该文档是过时的,是适配以前的Windows Mobile的(可惜Mobile部门以及被微软砍掉了)。其实对于企业,Window IoT Core有Enterprise版本,Window IoT Core Enterprise几乎和Windows 10一样,当然这也只是微软自己说的,不一样的地方他没有说,至少收费这一点就不一样。微软一个大神叫Sean Liming写了一本书《Starter Guide Windows 10 IoT Enterprise》,该作者在MSDN上也做过很多是技术支持,大家可以去拜读这本书。

猜你喜欢

转载自my.oschina.net/u/3489145/blog/2054513