|Most of my articles are about technical solutions or ideas around embedded. I try to address some common technical questions to help developers with a specific or common problem. News from CES 2011 about Windows desktop running on ARM will most likely open up many questions. My focus is on embedded, and I know one or two developers might be interested in the idea of having Windows running on ARM platforms. There were some questions before CES and more questions after the demo and show. One big question is about Windows® CE (Windows® Embedded Compact), since it already runs on ARM. As a departure from technical problem solving articles, I will share some thoughts to ground all the speculation and provide some ideas for further questions.
Background - 6 to 4 BD (6 to 4 Years Before Demo)
Doug Boling, a fellow MVP and I have had a playful banter on what Windows® Embedded OS was better: Windows® XP Embedded or Windows CE. Doug would say Windows CE and I would say Windows XP Embedded. Doug would kiddingly point out that Windows is big and slow for embedded. Of course, I always jokingly add that I want an operating system that works and not something that is a work in progress. There are some fundamental differences between Windows XP and Windows CE. They are two completely differently architected kernels. Applications from one OS cannot run on the other unless they use shared .NET APIs. The build process for each operating system is completely different. Windows CE is built / compiled from source code, and Windows XP Embedded and the new Windows® Embedded Standard 7 are built from binaries. Windows CE involves porting an OEM Abstraction Layer and writing devices drivers to target a specific platform. Windows XP Embedded/ WES 7 only runs on x86, and the hardware abstraction layer is already built for you. Windows CE is a bit complex, and it takes time to get the OS up and running on new hardware. The complexity of building Windows CE from source code led some developers to wish and ask for Windows desktop running on ARM.
The “Do you think Microsoft is going to support Windows XP Embedded on ARM?” was a popular question 6 years ago. I would explain that Windows NT had once supported DEC Alpha, MIPS, and Power PC. Windows NT was architected to be portable to different architectures with the use of the hardware abstraction layer. Over time x86 won out since it was a cheap, popular, and well known platform. I even asked Microsoft if it was possible to support ARM since ARM appeared to be dominating the mobile space. Someone mentioned the cost of supporting a new RISC architecture would be on the order of a billion dollars, thus it would have to be a really good business case to move to ARM. The other issue is that the ARM processors would need more processing power and memory to run Windows desktop. To see if there really was a big interest, at a couple of MEDC pre-conferences, I did a poll asking how many would like to see desktop Windows running on ARM processors. No one raised their hands. Windows CE was the front running operating system for embedded at the time, and more people were interested in the small, ROMable, real-time OS.
It didn’t stop the Windows on ARM questions from being asked. In passing conversations several years ago, a couple program managers on the XP Embedded team mentioned that research was being done to see if Windows desktop can run on ARM. All the previous discussions about cost, processor performance, and hardware architecture came to mind. Finally, I thought, at least they are looking into the idea; but until it is real there is nothing much to discuss further on the subject. Now the cat-is-out-of-the-bag, as Microsoft has officially demonstrated Windows running on ARM at CES 2011 and on more than one ARM platform.
The big question is “what does Windows on ARM mean for embedded?”
First, you need to know that there are two teams involved – the desktop group and the embedded group. Second, since Microsoft hasn’t fully discussed the future plans or names for Windows desktop, I am going to have to speak hypothetically to drive further discussions and questions. Let’s say the next version of Windows is called Windows 8 (it may or may not be), and let’s say Windows 8 supports both Intel Architecture and ARM. The desktop team controls the plans for the product, and they have specific markets they are going to target with the operating systems, like PCs, tablets, netbooks, etc. They may not want to support embedded devices. Let’s say that they are okay with an embedded version; then the embedded team needs to decide if they want to create a product based on Windows 8 desktop. They may or may not decide to develop a product on Windows 8, or it may only support x86/ia64. For this discussion let’s say the embedded team develops a product called Windows 8 Embedded that supports both Intel Architecture and ARM. The name could be different, but it is a good name that is well aligned with the desktop that the market could easily understand. With all that said, what could be involved technically?
I would venture that not much would change on the development side for Intel Architecture. The x86 OS would be built from binaries, but there are a lot of technical questions and details that need to be addressed for supporting ARM. The biggest question is “will low-level porting be required for different ARM platforms like Windows CE, or is there a well-defined architecture?”
PC/X86 is a well-defined architecture. Since ARM is a licensed technology, microprocessor manufacturers can take the ARM cores and build anything they want. As I learned from my experience with Intel® Xscale™, this can be a blessing and a curse; especially if the compiler is not optimized for the processor. The next question “is there a specific ARM architecture design that must be followed to support Windows?”
If different ARM architectures or cores can be supported, some hardware abstraction layer source code must be made available to do a port. Now comes all the fun questions: Is the HAL the only source code that needs to be compiled for a port, or are there other drivers and services that need to be ported or tuned to for each specific ARM port? What is used to build the HAL: a new inexpensive ARM compiler developed by Microsoft, the GNU compiler and tool chain, or the more expensive ARM development tool chain? If drivers need to be developed, is the driver framework going to be the only solution, or is native code allowed? There are the other details on timers, real-time clock, the minimum and maximum RAM requirements, and memory mapping that are also important to understand for hardware design and porting. Porting involves large development costs and significant time. There are many Windows CE developers and products in the marketplace, today, thus if porting Windows desktop to ARM is required, there is a well-established base of ARM developers.
If there is a well-defined ARM platform architecture for Windows, then there is no porting necessary. The build-from-binary process for a Windows 8 Embedded image would be the same for both ARM and x86, and it would save a lot of time and development cost. This would be the perfect world solution. Device drivers may still have to be developed, but this is a far cry from a full port.
In addition, PC/x86 systems need a BIOS or UEFI to boot the system. Neither of these would be needed for an ARM system. The HAL or a boot loader would be needed for ARM. This brings up a storage questions, what is the boot media: SATA hard drive or flash disk? Or does the OS boot execute in place (XIP) like Windows CE? Okay, XIP might be a stretch.
WES7 gets installed on a PC/x86 via USB flash disk or DVD. What would installation be like on an ARM platform? Windows NT was installed via CD for all platforms due to the size. Best guess is USB and DVD installation would be available for Windows 8 Embedded.
Windows CE RIP?
Windows CE was introduced in 1996 as a small, ROMable operating system that runs on different processor architectures – SH, ARM, MIPS, x86. Windows CE showed a lot of promise when it first was launched. Windows CE was once the dominate mobile phone operating system. Times have changed.
Does Windows running on ARM mean the end of Windows CE? For mobile, it might just be the case. If you can run full office suite applications on a mobile platform that can also make phone calls, then there is no need for Windows CE.
But is it really the end? There are two things that Windows CE has that Windows desktop doesn’t:
- A small in footprint – Windows CE has a nominal size of 16MB, where WES 7 minimal foot print for 32-bit x86 is 550MB. There is the argument that memory is cheap and smaller flash sizes are difficult to find. There is also the .NET Micro Framework (www.netmf.com) that is smaller than Windows CE and can support some basic GUI displays. .NET MF only supports ARM. There is no overhead of an OS since .NET MF is just the .NET CLR running on top of a HAL.
- Windows CE is a real-time (deterministic) kernel, which has been popular in the industrial controls market. Although there is some questions on this subject, Windows desktop isn’t known for deterministic capabilities since there is a large overhead of services. There are solutions from other companies that add real-time support. TenAsys® has two solutions: 1. The INtime kernel, which is an add-on solution to Windows, 2. eVM that lets real-time operating systems like QNX and VxWorks run side-by-side on the same system with Windows.
Sticking with the hypothetical case that Windows 8 Embedded is available on ARM, Windows 8 Embedded and the .NET Micro Framework would make a compelling story for embedded. Applications for both can be developed from the same source code; but small footprint combined with real-time performance and a broader choice of hardware may keep Windows CE in the running, at least for industrial control applications.
Intel® is Calling Too
Intel is also making strides in the mobile market with the Intel® Atom™ processor line. The low power and performance for x86 platforms has been impressive. Windows 7 and Windows Embedded Standard 7 run very well on an Atom processor. The extreme low power Z series has only been available in 32-bit support, and there are rumors, again, that future Windows operating systems will only support 64-bit moving forward. If the rumor becomes true, will we see lower powered 64-bit Atom processors and 64-bit ARM cores?
Summary: Hypothetical vs. Reality
Reality trumps the hypothetical. Unless, it is real, then it is only a rumor. There is going to be lots of speculation and rumor, until a product arrives. In the end two groups need to decide if Windows running on ARM will be made for embedded and what are the technical details and costs involved. Unit a real product arrives, we will have to wait to see what comes out. Of course, you should always provide your feedback to Microsoft so they can make the best business choice.
Windows is a registered trademark of Microsoft Corporation
All other company names and product herein may be trademarks of their respective owners.