Microsoft Windows has always come in a variety of flavors. However, until the arrival of Windows 10, the variance between instances could be quite diverse. Windows has run on systems like Intel’s Itanium, MIPS, and the DEC Alpha. Recently, we had the ARM-based Windows RT. And Windows CE was designed to run on ARM.
Developers had to use toolsets designed specifically for these different platforms, which was less of an issue when systems tended to operate in a standalone environment. With the Internet of Things (IoT), though, that scenario doesn’t make much sense.
Numerous challenges popped up with the various systems, including the way Microsoft split their development and delivery. Visual Studio has been Microsoft’s development platform, but a design team within Microsoft would typically take a snapshot and lock it down to provide support for a platform like Windows CE. Unfortunately, that left those developers out of sync with the latest version of Visual Studio and Windows. Windows 10 IoT Core and the latest Visual Studio are designed to change that paradigm.
At this point, Windows 10 IoT Core supports a small but growing number of platforms in addition to the usual x86 platforms targeted by desktop and server versions of Windows. Of note is the Raspberry Pi 2, which is one of the first platforms to support Windows 10 IoT core.
Upon a recent visit to Microsoft, I saw many Raspberry Pi units driving robots to an interesting plotter application that also used a digital camera for input (see the figure). These were stock units programmed using the latest version of Visual Studio.
Perhaps the biggest change is that the Windows 10 IoT Core is a subset of other Windows 10 versions. It will run on ARM platforms as well as x86 variants like the Minnowboard, which runs an Intel Atom.
A Headless Linux
Windows 10 IoT Core is not on par with Windows running on a desktop or other platform with a sophisticated user interface. Instead, it’s more like a headless version of Linux. It allows Windows 10 IoT Core to be small, suiting it for embedded applications. It also makes the core easier for Microsoft to maintain compatibility between versions.
The advantage for embedded developers is that the languages and tools used for other Windows 10 platforms will be the same for Windows 10 IoT Core. Languages like C++, C#, Python, and Visual Basic can be used on all platforms. There’s a single debug interface as well.
Dealing with the subset of services is well-understood among embedded developers. Displays or graphics can be part of the mix, but they will not be standardized at this point. This is generally less of an issue for custom designs that might use something like a 2-line LCD display driven by an I2C interface.
Features like security and communications are common because of the base software. Many management tools also work across the platform, such as remote update and administration. This may not have a huge impact on the maker community, but the features are critical in the commercial IoT space.
Understanding the scope and limitations of Windows 10 IoT Core will be crucial to its adoption. It’s not a stripped-down version of the desktop. On the other hand, that’s not what most embedded applications need or what most developers want at this level. It’s definitely an option worth investigating for those working on embedded applications.