Windows Ce VS Embedded Linux

Windows CE vs Embedded Linux

I worked for several years at a company that provided both CE and Linux for all of their hardware, so I'm fairly familiar with both sides of this equation.

  • Tools: Windows CE tools certainly are better than those provided by Linux, though the linux tools are certainly getting better.
  • Performance: Windows CE is real-time. Linux is not. The linux kernel is not designed for determinism at all. There are extensions that you can add to get sort-of real time, but CE beats it.
  • Cost: This is an area of great misunderstanding. My general experience is that CE is lower cost out of the box ($1k for Platform Builder and as low as $3 per device for a shipping runtime. "What?" you ask? "Linux is free." Well, not really so much, especially in the embedded arena. Yes, there are free distributions like Debian. But there are plenty of pieces that you might need that aren't in that free category. UI frameworks like QT, Java runtimes and media codecs just as a start. Also, most Linux distributions with a commercially-backed support system (e.g. MontaVista) are far from free.
  • Source Availability: Linux proponents may like to say that CE is a bad choice due to lack of source code. All I can say is that in over a decade of working with CE, half of which spent doing custom kernel and driver work for custom boards, I've only ever had need for source that didn't ship with CE (they ship a vast majority of it) once. I like having source too, but Microsoft provides support, so in the rare case you might think you need that source, you can get them to fix the problem (the one time we needed source, Microsoft provided a fix, and for free - which is their model under CE.

Does this mean that CE wins every time? No. I wouldn't suggest that at all. If you are a Linux shop and you have lots of Linux experience and code assets, you'd be foolish to run out and go CE. However, if you're coming into it from scratch CE usually has a lower TCO. Developers with Win32/C# experience are more prevalent and consequently less expensive. You also get a lot more "in the box" with CE than most other distributions, meaning faster time to market if you don't already have these things done in-house already.

how to bring Linux to a WindowsCE device

Ideally you will need access to the processor's JTAG pins for both programming and debugging, then you will need a JTAG debugger that supports the device and programming the Flash memory used.

Once you have all that you have complete access to the processor and memory and can re-program it with any firmware you choose. The usefulness of that however will depend on your having enough technical information to develop or acquire suitable drivers for the display, and any other application specific hardware, as well as the on-chip peripherals.

Knowing that it is an ARM926EJ only tells you about the core. It tells you nothing about the on-chip peripherals including hardware such as the SDRAM controller and PLL clock generator, and interrupt controller, all of which will need to be initialised before you can get the system running - these are device specific and you Linux will need to be specifically adapted to the hardware. You cannot just load Linux as you would on a PC which is a known and standardised hardware platform.

The documentation reveals it to be a Samsung S3C2416X processor. Get the user manual and data sheet for that from Samsung Semiconductor's website. You may find a Linux port already available for the processor at least, but you will still need to adapt for the off-chip peripherals and I/O. The documentation also shows JTAG in the block diagram, so that may have left the connector on the board for you.

Windows CE vs Windows XP Embedded

Depends on your product budget. I was visiting a few times Real-Time & Embedded Computing Conferences and found that most developers are using Windows XP Embedded. 2.0 .Net Framework is supported, as well it is possible to install Microsoft .NET Framework 3.0 on Windows XP Embedded Service Pack 2

Windows CE vs Windows Mobile

Windows CE is a modular OS. It is built with a tool called Platform Builder (PB).

PB has a Catalog of items that can be included in a give OS image. For example TCP/IP, the Shell, Windows Explorer, servers like FTP and Telent, the device driver manager or GWES (the catalog is quite extensive). Basically just about every part of what you think of as the OS is a component that can be included of excluded (though obviously components can have dependencies - you can't have a Shell without GWES for example). The OS image is also highly tailored for the exact hardware on which it will run. One Windows CE OS image cannot be copied to different hardware and work.

So anyone can build a Windows CE OS, and becasue of it's modular nature, there is no such thing as an "off the shelf" configuration (like XP, Vista or Windows 7). Let's call those people, for this discussion, the "customer".

Now any Customer can add their own stuff into the OS - their "secret sauce" if you will. For example look at HTC's TouchFlo UI or the Google Maps application. That was done by the customer, not the Windows CE team. Same for control panel applets, applications, etc.

So Windows Mobile really can be seen as just another Customer. They take Platform Builder and select a specific subset of the catalog items from the core OS. They then add their own stuff (the WinMo shell, notifications, POOM, etc). They then ship that to the ODM (device manufacturers like HTC).

It's a bit more complex than that because the WinMo team actually ships a tool that is like Platform Builder (though not the same) and the compiled libraries for all of their secret sauce, and it's up to the ODM to actually do the OS image creation.

So WinMo is both a subset and a superset of CE. It is a subset because it doesn't contain all of the stuff available to the OS. It is a superset because it includes stuff that doesn't ship with the core OS at all. This means that with just the Platform Builder tool you can create a CE OS, but you cannot create a WinMo OS.

Customized UI - Windows or Linux?

Judging the level of customization you require, I would suggest GNU/Linux. I don't think Windows would allow you to use your own UI instead of its own.

With GNU/Linux, you can choose among several UI providers or make your own. Besides, everything is customizable in GNU/Linux, you can create your own embedded distro with your application's requirements.

windows embedded CE device to linux

As ctake notes, there can be external hardware and boot loader issues. Additionally, certain iMX processors use a secure boot and it is difficult/impossible to add non-authorized code; according to Chapter 7 of the iMX31 manual, it support HAB/RTIC and it may be difficult/impossible to load un-authorized software on this device, if the vendor has blown the fuses correctly; I would guess this is the case and even with a lot of effort you still can not load another OS unless you can Jail break the device.

For this processor (iMX31), there is a Linux configuration. Also, the peripherals noted, OTG, SDHC, RS232, USB, and network Port, are in the SOC silicon. Ie, they are built right in the iMX31 chip. So these drivers are standard in Linux.

There maybe some GPIO pin that sets an external UART transciever (3V to +/- 12V), etc that are custom for this board/machine; also the IOMUX configuration for this board maybe difficult. This would be where the issue lies. Also, the basic thing like getting the SDRAM running maybe complex and not handled by Linux (they are handled by the boot loader). It is also possible that SDRAM is setup automatically by fuses.

If the device has a standard boot loader like uboot, etc. Then it will be extremely easy to get a functional Linux, but perhaps not with all the peripherals functioning. This particular iMX does not have security features, so you should be able to open the device and probe/observe electrical connections. However, due to the secure boot feature, it is not at all simple and may even be impossible.



Related Topics



Leave a reply



Submit