Windows Embedded vs. Linux

linuxvswindowsI’m an agnostic. I just don’t care.

No, not regarding religious beliefs. I’m talking about what OS and TCP/IP stacks our customers use.

A lot of what we do is getting customers enabled to do Profinet IO, EtherNet/IP, Modbus TCP, DeviceNet and all the rest. The best way to do that is to integrate our software directly into their OS. That means that we have to be able to work with all the top stacks that people might use.

I never encourage these guys one way or the other. The choice of MQX, uCOS, QNX, VxWorks or Nucleus always seems to be a really important personal decision. In the old days, before I knew better, I might question a decision for one or the other. No more. I learned that the choice of an embedded OS is protected by nothing less than the US Constitution and I’d better keep my opinions to myself. It’s kind of like someone’s choice in women. Some only will date short blondes, while others go nuts over a tall redhead. Those guys will claim it’s about features and functions, but I think it’s more personal preference.

Well, the debate’s on again and this time it’s the embedded Linux vs. embedded Windows front. Both camps are digging trenches, stockpiling weapons and training armies. The war simmered for a number of years, never more than a low-level regional conflict while Microsoft went through its troubles. The embedded version of Windows had security issues, resource issues (it was monstrously large) and a bad reputation on the factory floor.

Now, with the emergence of IT on the factory floor, high-speed processors, massive amounts of low-cost flash and RAM and the need to communicate with the Enterprise, vendors are taking another look. A Windows system has a lot to recommend it. Even though it’s always going to pose security risks, there are good reasons for selecting it for your embedded platform. You can make a pretty strong case that development is easier and that you have much more flexibility on the factory floor.

But you can make a good case for Linux too. It’s less of a resource hog, it’s reliable, it’s arguably more secure than Windows, and it’s a lot less expensive. On the downside, there are lots of different variants to select from, there are possibly fewer platforms that will support Linux, and support can be more difficult to obtain.

Recently I’ve seen a pretty good increase in the number of customers that are building EtherNet/IP Windows devices, Profinet IO Windows devices, Windows OPC UA servers and other Ethernet devices on Windows. Several years ago, Microsoft made a pretty big commitment to the factory floor and has steadily improved its offerings. The original CE was pretty much a disaster, but the later versions and XP Embedded are much improved.

So, what am I planning to do? RTA designs, develops and sells automation devices. System Integrators use our Device Converters to move data around the factory floor and around buildings. Right now, those devices are all built using uCoS, and that’s been a fine choice for a long time. I really don’t want to switch horses at this point, no one really does. Once a product is successful, there’s no reason to fix something that’s not broken.

But if you held the proverbial gun to my head, what would I choose? Linux or Windows? Right at this moment, in December 2014, I’d have to pick Windows. It somewhat depends on what kind of device I’d be building, but in general, the integration with databases, MES systems and other Enterprise Apps would push me to Windows.

So there, I’ve said it. I can no longer claim to be agnostic. Now I’ll have to jump into the bunker with the Windows zealots to avoid the fire from the Linux forces.