Windows For Devices Articles

  • Home > Windows For Devices Articles

        Why Windows Embedded Compact is here to stay

        Staff | Date: Sep 28, 2011 | Comments: 1



        Some observers have assumed that the advent of an ARM-based version of Windows 8 means the beginning of the end for Windows Embedded Compact (Windows CE). Maharajan Veerabahu of E-con Systems strongly differs, and sets forth his reasons in this interesting article.


        There is a lot of buzz around Windows 8, and everyone is keen to have a go and give their verdict. Windows 8's release has been keenly followed by embedded enthusiasts too because of its interest in the embedded industry's poster boy, ARM.

        I've been getting questions from all around on whether Windows 8 will eventually sound the death knell for good old Windows CE/Windows Embedded Compact. And I've written this article for those who have this question in their minds.

        Windows 8 is definitely creating flutters in quarters that were not affected earlier, such as the tablet market, phone market, and embedded market. The reason behind this is that the operating system will run on ARM processors, provided by companies such as TI, Nvidia, and Qualcomm. This is really path-breaking, a re-imagined route.

        It was necessary and expected, however, because of two principal reasons. First, ARM processors got more powerful, and second, there are no x86 processors that are suitable to the needs of tablets today.

        ARM has indeed become powerful enough to run the real Windows on it. It is no longer the processor that used to trade in performance for power consumption. With the introduction of dual-core ARM Cortex CPUs -- cranking speeds above 1GHz and supported by leading vendors like Freescale, Nvidia, Qualcomm, TI, and the like -- ARM has definitely come a long way from its StrongARM days. It has now provided an equivalent alternative to the x86.

        Meanwhile, Microsoft did not have a proper answer to the all-conquering iPad and Android tablet market. Though the company is keenly trying to address the threat in mobile phone market with its [Windows CE-based -- Ed.] Mango version of Windows Phone, it did not target this for tablets.

        To address this void in the tablet market, therefore, Microsoft is brining one operating system for the PC, laptops, netbooks, and tablets. That way, it can use the existing application developer community, who would feel it easy to develop applications that run on PCs as well as tablets (with some modifications, of course).

        Is this move brilliant, and will it serve as the right competition to the already-strong contenders in the space? That's for us to wait and see, and, of course, an inspiration for another article.

        Moving away from the x86-only approach

        Now, the problem is that if Microsoft wants to adapt its mainline operating system to the tablet market, it needs to come out of its x86-only approach. ARM is the market leader in tablets, and as things stand, will be in that place for a long time to come.

        So, Microsoft had to adapt itself to the ARM platform if it was really interested to break into the tablet market. That's what Microsoft just did with Windows 8.

        The company's Windows 8 BUILD keynote clearly focused on the touch-centric Metro interface, all pointing to tablets. The keynote also demonstrated how the memory consumption was down to under 300MB, and the processor usage was much better than the Windows 7 releases, again clearly going the tablet way.

        As I see this, Microsoft had compelling reasons to support ARM, and ARM vendors now offer the required power and resources. It's a win-win.

        ARM officials have claimed half of all mobile computers will be using their processors by 2015. That is an aggressive target, and if it comes to pass, Microsoft would not want to allow Chrome, Ubuntu and the like to claim that market share.

        By moving Windows 8 into ARM, Microsoft has created a checkpoint for its competitors. Of course, Windows 8 will be costlier than Chrome and Ubuntu, but with it will come all of the Windows Desktop luxuries, plus the ability to run the inevitable MS Office Suite.

        Meanwhile, all-in-one PCs with touch interfaces are beginning to spring from every popular PC vendor, from HP to Dell to Lenovo. All seem to be coming up with interesting variants of this genre, including HD video/audio, TV tuners, full multitouch interfaces, etc., packed into monolithic, sleek designs that can hang on walls or just use less table space.

        All-in-one PCs have existed from the early days, but their re-emergence has a lot to do with the touch and UI interface that is being promised by Windows 8 and is being done to some extent by Windows 7. We may not be far away from the day when ARM-based all-in-ones come onto the market too.

        Does the ARM-based version of Windows 8 spell the end of Windows Embedded Compact?

        "Is Windows 8 the beginning of the end of Windows CE?" That's the question that has been asked by the Windows Embedded software community, right from the time that Microsoft licensed the ARM architecture and rumors of Windows 8 first surfaced.

        My strong feeling is that Windows 8 is no replacement for Windows CE, and that CE has to live and flourish for a number of reasons. I base that on the development of Windows 8, the way Microsoft is marketing Windows 8, and numerous discussions with my fellow engineers.

        Why am I so sure? I'll dig into the reasons by detailing the OS selection process and comparing Windows 8 and CE along the way.


        Operating system selection
        (Click to enlarge)

        There are three major factors that are considered by anyone who makes a decision on which embedded OS to use:

        • Hardware
        • Performance
        • Cost and support
        Regarding hardware, the OS should support a variety of processors, CPU architectures, embedded peripherals. But, it should also operate with minimum hardware requirements.

        Hardware selection

        The above hardware criteria are two ends of a spectrum. On one end, we want the OS to support a group of hardware processor peripherals, but on the other end, we say that the OS should not demand a hardware minimum that is too big or costly.

        While Windows 8 supports ARM, it has extended its support only to what I would call the high-end ARM processors, such as the Nvidia Tegra and its brethren from TI and Qualcomm. Their low power cousins in the ARM world -- which constitute the bulk of the ARM processor market today -- are not supported, and my assumption is that Windows 8 will never support the lower-end market.

        Traditionally, also, Microsoft Windows has been power-hungry and memory-hungry. In my opinion, Microsoft shouldn't be blamed for this, as the company was only taking advantage of the memory and CPU power that was being offered at ever-increasing cost by Intel and AMD.

        So, the pampered Windows has never been starved of power or memory. I don't expect all this to change dramatically for the introduction of the ARM version.

        True, Microsoft told attendees at its recent BUILD conference that the memory usage of the Windows 8 was much better compared to Windows 7. The left-hand slide below shows that Windows 8 will be able to run in only 281MB of RAM.


        An indication of planned Windows 8 memory consumption (left), and Windows CE's present demands (right)
        (Click either to enlarge)

        While Windows 8's economy is amazing in PC terms, it's still exorbitant in embedded terms. The right-hand slide above -- taken using one of my development platforms, the Marvell PXA300-based Alioth -- shows an embedded system with a "lavish" 256MB of RAM, but also reveals a full-blown GUI occupying far less than 32MB.

        We have designed many embedded devices using Windows CE 6.0 with just 16MB of RAM, and perhaps 4MB of flash storage. This clearly points to the fact that if I decided to switch to Windows 8 as my choice of embedded operating system, I would be restricted to much more costly hardware.

        All these years, good old Windows CE has given me the flexibility to choose any ARM processor and design hardware that is really cost effective. Windows 8 would be overkill on most of the embedded devices made today.

        Peripherals and device drivers

        Another factor favoring Windows CE is its support for embedded peripherals. Windows CE provides very clear device driver and interrupt architectures that is best suited for most embedded peripherals.

        The OS is designed to be simple yet not simplistic. You can write complex NDIS drivers for an Ethernet card, and at the same time write a simple i2c or SPI driver for your EEPROM. There is a great freedom to choose the peripherals that you want and the interfaces they use with your processor.

        I expect this will never be the case with Windows 8. Windows and Windows Driver development is directed to PC-specific peripherals and interfaces. PCI, USB, and a few other basic PC interfaces are the only ways you can connect devices in a PC, and so Windows will open up only those interfaces for writing device drivers.

        For example, writing a driver for a SMSC Ethernet controller interfaced over the processor bus for a PXA270 platform would be alien to Windows 8. That's because according to Windows, NICs are connected via PCI.

        I'll be really interested to look into the Windows 8 DDK (driver development kit) and see how Microsoft is planning to support peripherals. Will it actually provide enough documentation and insight into the Windows 8 architecture so we can interface with any peripheral, or will it partner with a group of ARM vendors and say "if you want to run Windows 8 use this template hardware design"?

        Experience and initial noises that I hear about Windows 8 suggests the latter. Therefore, if embedded developers need flexibility in choosing the right peripheral and development of device drivers, they'll need to go with Windows Embedded Compact.

        Shared source code

        Shared source code has been a major reason for the sustenance of the Windows CE as an embedded operating system. Microsoft's deviation from its traditional closed-door approach instilled a lot of confidence among embedded developers, and also allowed developers to adapt their hardware to suit Windows CE.

        Shared source provides a greater understanding of the operating system, helps in the lowest level of debugging hardware/software problems, and, above all, gives control/confidence over the development. This is not going to be an option with Windows 8.

        Forget about source code -- most of the important architectural details, too, are going to be off limits for Windows 8 developers. Microsoft will have its own business and IP-related reasons for that.

        Again, a great deterrent to considering Windows 8 for embedded devices.

        Performance

        Performance is another major concern in an embedded operating system. Each embedded device is different and unique in its performance requirements.

        Here, performance is not measured in terms of raw speed of execution, FLOPS, etc. Instead, it's more like comparing a surgical knife to an electric saw. Embedded does not need raw power, but it does need nuances and clinical performance in specific areas.

        Some of the performance requirements that I have faced in earlier projects -- and have seen others generally discussing as well -- are as follows:

        • Boot-up performance
        • Power management
        • Real-time characteristics
        • Security
        The requirement for instant power up has been a requirement in almost all embedded products that we have worked on. There are a lot of compromises to be made if we need to power up virtually in no time. However, Windows CE offers the flexibility to optimize the boot-up time, and in one particular case we were able to boot Windows CE in three or four seconds flat.

        This kind of performance cannot be expected from the Windows 8 system for sure. Yes, Microsoft claims to have achieved a reduced boot time, but this has been implemented in Windows 8 via the hibernate option. This may not be the best solution in embedded devices, owing to all the extra hardware that may be required for implementing it.

        One of the most important aspects of a faster boot-up involves a minimum overhead. A smaller overall image size, fewer peripherals to be taken care of during boot-up, and a modular approach all go hand in hand with faster boot. So Windows Embedded Compact again has the advantage.

        Power management is another concern that embedded devices always have, since many run on batteries, some run in places where power is limited, and a few even run on solar power. All these devices require efficient power management implemented inside to support different configurable power states and management options.

        Here, Windows CE does a great job in this section, since it has an organized power management architecture which is so flexible and open. Even the whole power manager can be re-written to suit our needs.

        By managing device power states and system power states, Windows CE manages transition between states in a simple and effective manner. We have exploited the processor power management, and have practically achieved the lowest power consumptions claimed by TI in their OMAP 3530 platforms with Windows CE 6.0.

        Expecting the same from Windows 8 with all its bells and whistles would not be right. Though we expect the power management of Windows 8 to be much better than its predecessors, it may not be as flexible as Windows Embedded Compact and what many embedded devices may demand.

        Finally, there are endless debates, claims, and counter-claims on whether or not Windows CE is a hard real-time operating system. In spite all of all this, I have seen the real time characteristics in practice and have practically used the fine scheduling options, nested interrupts, etc. that Windows CE provides to solve problems and design efficient systems

        In contrast, Windows 7 cannot boast real-time performance, and there is no reason why this feature would crop up in Windows 8.

        Finally, security is of prime importance in any system, especially on an embedded system that might be capable of many critical operations. Windows historically has been not super-strong against security threats and hacks.

        Again, Microsoft is doing all the right things to make Windows 8 super-secure. Still, as the most-used PC operating system it will be the default target for security breaches.

        In contrast, Windows CE has addressed the security problem really well. Because of the various platforms Windows CE/Windows Embedded Compact supports, as well as its super-modular approach, a device developer can simply remove unwanted and vulnerable components from his build.

        Conclusion

        At the end of it all, it's about the money, honey! I might well have made this the first point in my article.

        Windows Embedded Compact/Windows CE is offered in core licenses for under $3, and in SKUs with a wide variety of combinations. In contrast, the PC version of Windows 8 is expected to be around $150 -- and however embedded it eventually gets, it's definitely going to be more costly than Windows CE.

        I would conclude by predicting that Windows 8 can never be a replacement for Windows CE. It's all but impossible for even Microsoft to create a unified operating system that would run on the smallest devices and on the most powerful severs too.

        That said, Windows 8 may occupy a favorable position in the tablet market that Windows CE did not have any market in the first place [or rather, not very much of it -- WindowsForDevices' archives do list a variety of Windows CE-based tablets -- Ed.], giving Apple and Google a run for their money. Windows 8 may also replace Windows Embedded Standard 7 for x86-based systems such as ATMs and point of sale devices.


        About the Author


        Maharajan Veerabahu is a project manager for E-con Systems in Chennai, India. His software specialities include device drivers and OS internals, and he has hands-on experience in porting embedded OSes. He can be reached at maharajan@e-consystems.com and followed at http://twitter.com/#!/econsystems.