Galileo with RGB Strip

When I think of running Windows on a small board, the first boards that springs to mind are the MinnowBoard (PDF instructions for the curious) and the Gizmo Board–both are capable of running x86 operating systems, and you can plug in a keyboard, mouse, and monitor.

So I found it interesting that you could put Windows on an Intel Galileo, and for free. That’s a better deal than Microsoft’s official method for the MinnowBoard MAX and similar boards, where you’re directed to install a 90-day evaluation version of Windows Embedded.

Since the Galileo doesn’t support a display and has only 256 MB of RAM, it’s probably not surprising that you’re working with a stripped-down version of Windows on it as well. It’s clear that it’s an embedded version of Windows, but this one, like the version of Windows for small tablets, is free (as in beer).

So what does Windows look like without a user interface? It looks a lot like DOS, a throwback to the early days of PCs (though it’s not DOS; instead of COMMAND.COM, your command prompt is CMD.EXE). And in yet another throwback, to access the device’s command prompt, you need to telnet in from another computer. It doesn’t get more old-school than that… actually, it does. You could telnet into it using cool-retro-term or Cathode.

CMD.EXE

To program a Galileo running Windows, you’ll need to run Visual Studio (the free editions are fine) on a Windows PC. Microsoft has ported the Arduino/Wiring libraries to their Windows for the Internet of Things, so you’ll be using Visual C++ to write code against the Arduino API. It looks a lot like Arduino source (code you wouldn’t find in an Arduino sketch is shown in bold):

#include "stdafx.h"
#include "arduino.h"

int _tmain(int argc, _TCHAR* argv[])
{
  return RunArduinoSketch();
}

int led = 13;  // This is the pin the LED is attached to.

void setup()
{
  pinMode(led, OUTPUT); // Configure the pin for OUTPUT so you can turn on the LED.
}

// the loop routine runs over and over again forever:
void loop()
{
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  Log(L"LED OFFn");
  delay(1000);               // wait for a second
  digitalWrite(led, HIGH);    // turn the LED on by making the voltage HIGH
  Log(L"LED ONn");
  delay(1000);               // wait for a second
}

Microsoft hasn’t just stripped down Windows and dumped it into an image you can run on a Galileo. They’ve been making improvements in Windows to better support the kind of things makers want to do. For example, Microsoft’s Lightning functionality is a re-architecture of Windows to make GPIO operations much faster. One user reported improvements that put the GPIO performance of their Windows-powered Galileo on par with Intel’s GPIO implementation on Linux.

Discussion of Microsoft’s involvement with the Maker community often attracts certain kinds of criticism. If you can’t open it, you don’t own it is a cornerstone of what we do here. Yet, I don’t believe that makers of closed source hardware (or software) have no place under the same tent I’m in. I believe there is an inevitable progression towards openness, and I’m encouraged by even the faintest of signals that indicate another step in that direction.

To try out Microsoft’s Windows operating system on your Galileo, all you need is a Windows PC that can run Visual Studio, a Galileo 1 or 2, and these instructions.