Update your Intel Galileo and your first .NET Console app
Hardware Friday it is and some Galileo posts sound good right now...
First a quick post what you do when you get your Galileo or want to update it;
Running Windows on my Intel Galileo
If you have bought your own Intel Galileo or received one through the Windows Developer Program for IoT, now you can update it to run Windows. The version of Microsoft Windows released for the Windows Developer Program for IoT requires an Intel Galileo Gen 1 with 1.0.2 firmware. Gen 2 of the Galileo is not supported by this release.
Before you image your microSD card
Please ensure that you are imaging your miniSD card for a known reason. If you are experiencing a bug, please do not image. Instead, please visit Microsoft Connect to file a bug, and the MS IoT team will respond.
Known reasons to image your microSD card include:
- You are updating to a new version of the Microsoft Windows image supplied as part of the Windows Developer Program for IoT.
- You updated your Intel Galileo firmware, but did not update your Microsoft Windows image. Your Intel Galileo boots, but running sketches fails.
- You have a corrupted SD card.
Applying Microsoft Windows to an microSD card
The next is from the one and only hardware friend of the blog, Pete Brown. Now that our Galileo, Pete shows us how we can write some .NET on it.
A few weeks back, my friend Morten Neilsen tweeted that he was able to get a .NET console app running on the Intel Galileo with Windows. I was curious because that's not a scenario we thought would work. So, I thought I'd try it out myself.
Please note that .NET is not currently supported on the Intel Galileo, but it's still fun to experiment and see what works and what doesn't.
To join the Windows on Devices program and code for the Galileo, purchase an Intel Galileo Gen 1 from Amazon or another retailer and sign up at http://windowsondevices.com . From there, follow the machine setup and Galileo setup steps for people who have their own board.
In Visual Studio 2013, I created a new C# Console Application project
So what works?
You saw that the basic console output works. Similarly, the core language constructs work, as should most/all things in mscorlib/mscoree. The instruction set for the Galileo is missing some things that .NET generally relies upon, however, so most non-trivial code is not expected to work. For example. if you try to use System.Diagnostics.Debug, you'll get a TargetInvocationException saying that System is not present. Same thing with, say, Console.Beep().
You can do a lot of the same types of programs we used to write back when we first learned programming, however. Here's an example that includes a few things similar to the early programs many of us did on the C64.
I haven't gone through to figure out exactly what works and what doesn't. However, for now, you can make the assumption that if it's outside of System, it won't work, and if it's inside of System, it may work, depending on which DLL it's implemented in.
This is all preliminary stuff. The Windows on Devices program is in its early stages, and as such, Wiring is your best bet in terms of the most mature part of the developer platform. That said, it's nice to see that we can sneak a little .NET on there if we want to :)
As mentioned in the FAQ, our goal with the Windows on Devices program is not just Wiring, but also the Universal App model (headless, of course). For now, it's fun to explore to see how far we can go with both the supported and unsupported features of the current platform.