Linux in Embedded Systems – The Windows side of the story.


A few days ago I posted an article from Cots Journal Online which discussed some of the shortcomings of Linux use in embedded systems. Based on some of the comments posted back to the blog it would appear that Linux is used because of the community which surrounds it rather than for the technical merits of the operating system and tools – for someone that’s lived in the embedded space before working at Microsoft I find this somewhat surprising – I based my choice of processor, components, and (if needed) operating system on the technical merits of the operating system and tools.

Let me ask this question… If you are starting an embedded system development project next month and you’ve been asked by your manager to select the appropriate processor, reference board, and operating system – do you choose Linux because it’s considered to be hip/trendy or do you make the decision based on the technical merits of the processor, silicon vendor, system integrators, reference hardware, and operating system technologies and tools ? – do you consider using non-Linux operating systems in any of your embedded designs, and if so, why (and why not).

ok, so let’s examine the COTS Journal Online article and walk through each of the items and see how Windows Embedded operating systems stack up… – I mentioned in a comment to the original post that I don’t want this to turn into a “Linx is better than Windows is better than Linux” discussion, no throwing of mud or Fud – let’s try to stick to the facts and consider both operating systems for their technical merits, after all, that’s what really matters, right ?

Interrupt Latency

<snip>By definition, a real-time system is one in which an event (for example, an interrupt from an important peri-pheral device) must be handled within a bounded (and typically short) amount of time; failure to respond causes a failure in the embedded system. Many embedded systems have real-time requirements; desktop systems do not. Along with context switch time, interrupt latency is the most often analyzed and benchmarked measurement for embedded real-time systems. Operating system architecture is the most significant factor for determining interrupt latency and thread response times in an embedded system. </snip>

Microsoft has two embedded operating systems (three if you also count SPOT), Windows CE and Windows XP Embedded.

Windows XP Embedded is not a real-time operating system, this is a desktop operating system which has been componentized (approx 12,000 components, 9,000 of which are drivers, 3,000 are operating system components), although Windows XP Embedded is not a real-time operating system it’s possible to add real-time response from 3rd party real-time extensions from companies such as Venturcom and Tenasys – check out the Interrupt Latency technical paper on the Tenasys web site (needs registration), Interrupt latencies were consistently measured as being < 20uS on a Pentium 133MHz with 32MB Ram.

Why would someone consider using Windows XP Embedded with a real-time extension ? – surely it makes sense to choose a real-time operating system from the get-go, right? – Windows XP Embedded runs on the x86 processor and contains all the same operating system technologies as the Windows XP Professional operating system, this means that you can quickly configure and build an operating system that supports a wide range of hardware components, ranging from USB2.0/1394 external hard drives, USB WebCam’s, high-end video cards, TV recording cards – and also has embedded enabling features for booting from the network, from flash, CD-Rom, headless, and other interesting features – there’s a ton of existing programs and drivers that work with Windows 2000 or Windows XP, these can be used without any changes on Windows XP Embedded – so you get the best of both worlds, broad hardware support, quick and easy operating system configuration, and support for Hard-Real-Time extensions.

ok, so what about Windows CE ? – Windows CE is a hard-real-time operating system out of the box (originally the operating system was considered to be soft-real-time, but we made changes to the kernel for the Windows CE 3.0 release which made the operating system hard-real-time – let me know if you would like a discussion about the changes and I will follow up in another blog post). What do we mean by “hard-real-time”, take a look at the definition of Hard-Real-Time from Nat Framptons realtimeonline site, let’s examine some of the 3rd party tests of Windows CE.

The following Windows CE tutorial may also be of interest to better understand the operating system and interrupt architectures.

Microsoft Windows CE Operating System and Memory Architecture
Watch this video to get an in-depth look at the internal workings of the Windows CE operating system. This tutorial covers operating system architecture and memory management of Windows CE. (51:03 minutes)
100K Version | 300K Version 
  

There are also some resources that may assist with your understanding of Windows CE real-time behavior.

Scheduling

<Snip>Linux has no such provision for prioritizing threads relative to interrupts; however, the actual situation is worse. Real-time operating systems provide priority-based scheduling because it must be possible to guarantee that the most critical threads in the system can run immediately in response to an event. It is forbidden to use heuristics or any other constructs in the kernel that might make this response nondeterministic.</Snip>

Windows CE supports 256 levels of thread priority, all threads in the system are created by default at thread priority 251, this can be adjusted in two ways, first through a call to CESetThreadPriority (which changes the thread priority), and CESetThreadQuantum (which changes the amount of time a thread gets when it’s scheduled by the kernel). we can clearly see from the real-time discussion above that Windows CE 5.0 response times for hardware interrupts are within the bounds required by real-time systems.

Device Drivers

<Snip>Device driver code adds less risk to the system if it runs in its own protected address space. An operating system architecture designed to facilitate virtual device drivers is preferred over the traditional method of requiring device drivers to run in physical memory along with the kernel.</Snip>

Windows CE device drivers run in the context of the device driver manager (Device.exe), interrupt handling is divided into two sections, the ISR (Interrupt Service Routine) which runs in the kernel space, and the IST (Interrupt Service Thread) which runs in the context of the device driver manager (or as a thread within a process), the ISR has limited functionality, this has access to physical hardware and memory but doesn’t have the ability to make operating system calls – the ISR passes off to the Kernel, which in turn wakes up the appropriate IST thread (through a call to SetEvent on a registered event handle) – the IST is special cased in that it can only make a call to WaitForSingleObject – a call to WaitForMultipleObjects would of course break the determinism of the operating system – at the IST level (since this is running in user mode) the IST has full access to operating system API’s (for example a Touch Screen Driver could call mouse_event to synthesize mouse motion and button clicks).

Perceived to be Free

<Snip>The hidden “royalty” due to Linux’s large footprint is just one example of the misconception that Linux is “free”. MontaVista, purveyors of the “Hard Hat” flavor of Linux, charges $15,000 per developer per year to support its version of Linux.</.Snip>

Windows CE and Windows XP Embedded evaluation tools are free to download from the WindowsEmbeddedKit website – the evaluation tools run for 120 days, after which you will need to use the full version of the operating system development tools which costs $995 – Licensing of the operating system doesn’t kick in until you ship a final version of your device, this means that you can configure, build, debug, and ship embedded operating system images to your customers to evaluate and test without needing to license the operating system – it’s only when you ship your final product that you need to license the operating system – for hobbyists or home tinkerers this is not an issue, you can build and deploy operating systems for your own use without needing to license the operating system (of course if you’re planning on selling the devices then you do need to license the O/S) – How much is a license ? – Check out the “How to Buy” page on MSDN/Embedded.

As far as support is concerned there are various levels of support ranging from free support (newsgroups, online chats, free incidents with the development tools), partner support – there are over 2,500 partners registered on the Windows Embedded Partners site which can assist with hardware development, software application development, BSP (Board Support Package) development, training, real-time on Windows XP Embedded, and so on… – There’s also paid support through Microsoft Product Support – for a complete listing of support options, go here.

Long Term Support

<Snip>Most embedded products have a shelf life of several years. An aircraft avionics system may be in development for as long as a decade before it is fielded, and then it might remain in service for much longer than that. Even the life of a handheld PDA may span multiple years from the start of development until obsolescence.

Embedded systems developers put a high value on a vendor that has a stable, successful, proven business model, because they must rely on that vendor to support their electronic products for such an extended period of time and to be around for the next generation of product development as well.</Snip>

Microsoft Embedded operating systems are supported for 7 years after the release date of the operating system – It’s generally realized that Embedded Products and Desktop Products are not the same thing, in the desktop world consumers are (perhaps) expected to update to the latest and greatest version of product “x”, some embedded devices are shipping and running for 15+ years without having an operating system update – of course this varies depending on the type of device you’re building, in the consumer electronics space device updates occur on a far more regular basis than deeply embedded, real-time, robotics and/or telecoms test kit. For a listing of Microsoft’s support program for embedded systems take a look at the Embedded Operating Systems Lifecycle page.

The GPL

<Snip>Linux is licensed under the GNU Public License (GPL), which governs how companies may incorporate the licensed software into the products that they sell to their customers. Much has been written about the pitfalls of incorporating GPL software into a product. An often overlooked consideration, however, are the costs of having to even worry about these licensing issues. The obvious concern is whether a proprietary product will be subject to the GPL because of its use of a GPL product. </Snip>

I don’t think there’s any need to talk to this point, suffice to say that Windows CE is not licensed under the GPL, we do ship 2.5 Million lines of “Shared Source” with the Windows CE 5.0 product, this is available for OEM’s to use to get a better understanding of the operating system, assist with debugging and bringing up the operating system on new hardware – any IP that you add to a Windows CE platform continues to be your IP, there’s no nead for you to share this with anyone.

 

The original article from Cots Journal Online made a number of statements about Linux in embedded systems, I’ve tried to list out how Windows CE compares against each of these items – I would be interested in your view on the Linux article, are the statements correct about the real-time behavior of Linux, Driver model, support, perceived cost etc…

– Mike


Comments (155)

  1. Well, couple of things regarding the choice of OS:

    1) Sometimes, for embedded systems that use off-the-shelf underlying platforms, the system already comes with Linux and busybox, so not much choice there.

    2) It’s easy to introduce bash and common scripting languages for simple test scripts, saves time on test development.

    3) If we’re careful to build our apps on top of GPLed code and not violate the terms, we own the complete platform by the time the design goes into production.

    4) There’s little to nothing as far as tools for writing Windows Embedded apps on Linux desktops (or am I missing something)?

    5) The same goes for testing tools, although I suppose LabView would compensate for lack of testing suites for Linux.

    6) The components available for Windows seem to target PDA makers. DirectX, .NET Framework, Windows Media. What if I am building a point-of-sale gun for reading UPC & RFID tags?

    I am sure I am wrong on several of the issues above or simple lack proper information regarding embedded OSs from Microsoft, but nevertheless that’s the usual list.

  2. DoesntMatter says:

    Linux side of the story –

    http://www.linuxdevices.com/articles/AT8073314981.html

    A comparison of various hard realtime Linux alternatives

    http://linuxdevices.com/articles/AT3479098230.html

    None of the areas you mention are currently anywhere near problematic in Embedded/RT Linux. Interrupt latencies are better, there are _free_ implementations available (for most purposes these are suitable) without having to pay MontaVista or someone else.

  3. DragonSt0rm says:

    1. Control. If is my product I must be able to decide anything about it. A proprietary OS having behing it a big company who impose terms, prices and conditions is not the choice.

    2. Customizability. If the OS have to be changed to fit a special purpose, I just post it out on a Internet server (the source code) and ask anyone on a discution list for ideas. If one do that with Windows, a legal lawsuit follows.

    3. Price. The competition is big in embeded market. Why should one increase the price of his product for a comercial operating system when better alternatives exist for free. The of OS for one device is the same as for one bilion.

    4. Many of the tools for Linux and BSD are available for free from evaluation to deployement and maintenance, not evaluation only. A startup company or a consultant starting a business can do the job without risking any investment.

    5. Security & stability. Linux & BSD are just way better.

    6. Evolution. Linux evoluate quicker than any OS. New inovation are added to the system with a peace no company can match it.

    7. More security. I do have control in my product over anything I want to. I have no reason to be afraid about back doors, rights control & co.

    8. From the user point of view. If I buy an embeded device, I wouldlike to tinker with it to make it perfect for my needs. If on the flash card is a standard ext3 filesystem I can mount on my computer and I can customize the scripts without being required to pay for a signature to do that. Gues what OS it is my choice?

    9. Strangelly, some programmers like freedom too.

    10. It is cool.

  4. DoesntMatter says:

    Mike – How many embedded devices does Windows support? What is the process involved, if I came up with a new piece of embedded hardware on which I want to run Windows? Are the CE sources available for me to port to my hardware? What about the cost of compiler and toolchain?

  5. "Windows CE is a hard-real-time operating system out of the box (originally the operating system was considered to be soft-real-time, but we made changes to the kernel for the Windows CE 3.0 release which made the operating system hard-real-time – let me know if you would like a discussion about the changes and I will follow up in another blog post)."

    This could be an interesting post 😉

  6. Mike says:

    DoesntMatter,

    Windows CE supports 4 processor cores, x86, MIPS, ARM (ARM, StrongARM, xScale), and SH4 [is that what you were asking, when asking about which devices Windows CE supports?]

    Windows CE ships with approx 2.5 Million lines of source code, this includes all of the lower level components of the operating system – bootloaders, OAL (OEM Adaptation Layer, which includes support for Interrupts, Power Management, and real-time clock), and device drivers.

    Most of the higher level components of the operating system are provided as pre-build libraries which can be plugged together like Lego to form the final operating system image.

    Perhaps a post on the porting process is in order, I will get working on that…

    The toolchain (which is called Platform Builder) ships with the Windows CE 5.0 operating system – the 120 day evaluation copy of Windows CE 5.0 is downloadable (for free) from http://www.windowsembeddedkit.com (note that Windows CE and Windows XP Embedded can both be downloaded from this site).

    The full developer products (CE and XPE) are $995.

    The Windows CE tool (Platform Builder) is an integrated development environment that includes the tools needed to configure, build, debug, and download the Windows CE operating system – this includes a graphical catalog of components which can be dragged into a platform workspace, a set of Wizards to assist with creating the initial workspace, the assemblers, compilers, and linkers for each of the supported processors, BSP Test Kit for testing individual drivers and a complete platform, performance monitoring tools, profilers (for the O/S and individual applications), and the list goes on…

    – Mike

  7. Mike says:

    DragonSt0rm,

    1. Control. If is my product I must be able to decide anything about it. A proprietary OS having behing it a big company who impose terms, prices and conditions is not the choice.

    >>> With Windows CE and Windows XP Embedded you get to pick and choose *exactly* which components and technologies are included into your final operating system image, yes there are licensing considerations with the operating system.

    2. Customizability. If the OS have to be changed to fit a special purpose, I just post it out on a Internet server (the source code) and ask anyone on a discution list for ideas. If one do that with Windows, a legal lawsuit follows.

    >>> What do you mean by customizing the operating system ? – replacing the shell, writing applications, adding drivers – all of these are fine – why would you want to share the source code to a final product, doesn’t that contain IP that you or your company have worked on to make your product "special" in the marketplace ?

    3. Price. The competition is big in embeded market. Why should one increase the price of his product for a comercial operating system when better alternatives exist for free. The of OS for one device is the same as for one bilion.

    >>> Free, hmm… it depends on what you mean by that, if by free you mean that you can download the source for free then you are right – but what happens when you get the source, you are now an operating system vendor – it’s your responsibility to customize the operating system, and build your own tool chain, hire developers that know and understand the operating system and the tool chain you’re using, and maintain the operating system – if you don’t want to be in the O/S business then there are a number of embedded linux shops that are willing to charge you to do the work for you – in which case is there a difference between Linux and any commercial off the shelf operating system ? – where do you want to be spending your time, as an operating system vendor, or building your device ?

    4. Many of the tools for Linux and BSD are available for free from evaluation to deployement and maintenance, not evaluation only. A startup company or a consultant starting a business can do the job without risking any investment.

    >>> And Windows CE/XP Embedded tools are free for evaluation – for Windows XP Embedded you can write and test your applications and drivers on Windows XP (you don’t even need the embedded tools), once your application and drivers are running you can then test them on the Windows XP Embedded evaluation kit. Windows CE is available as an evaluation for 120 days, you can test operating system configurations in an emulation environment, or even boot and run the operating system on an old PC.

    5. Security & stability. Linux & BSD are just way better.

    >>> What’s so insecure about Windows CE and Windows XP Embedded ?

    6. Evolution. Linux evoluate quicker than any OS. New inovation are added to the system with a peace no company can match it.

    >>> We’re back to the operating system argument – sure an operating system may be evolving at a fast rate, but you need to decide when do stop the wheel and place your bets on a specific implementation of the operating system. Do you want to constantly be keeping up with an ever changing O/S ? – also, where’s the roadmap for Linux, how do you know what’s being developed, if you need a feature for a device how do you get someone to implement that feature? – from previous posts it would seem that features are only added to the O/S if the feature is deemed to be somewhat cool – features are not added through customer or company requests.

    7. More security. I do have control in my product over anything I want to. I have no reason to be afraid about back doors, rights control & co.

    >>> Look at Windows CE, implement the OEMCertifyModule function – with this implemented you have control over which applications, processes, and modules have the ability to load and run on your device – you can also allow processes to run with restrictions – sounds like you have a lot of control to me.

    8. From the user point of view. If I buy an embeded device, I wouldlike to tinker with it to make it perfect for my needs. If on the flash card is a standard ext3 filesystem I can mount on my computer and I can customize the scripts without being required to pay for a signature to do that. Gues what OS it is my choice?

    >>> Isn’t this exactly the opposite of #7 – you want the device to be secure, you don’t want people changing the o/s image. #7 and #8 just don’t go together – how many consumer devices do you need to fiddle with ? – if you are talking as an end user then for the most part the end user doesn’t know how to record TV shows on a VCR or even set the clock, why would you leave a device open for end users to modify scripts or modify a system to the point where the device doesn’t boot or run any more ?

    9. Strangelly, some programmers like freedom too.

    >>> We all like the freedom to write code and work on cool and interesting projects – at some level, when building embedded systems you need to make a decision about whether you’re in the embedded operating system business, or whether you are in the business of adding your custom IP to a platform and then selling a product to the market.

    10. It is cool.

    >>> Yes, I agree, mobile and embedded device development is very cool, look at Windows CE, doesn’t "CE" stand for "Cool, Eh!"

    ;O)

    – Mike

  8. Mike says:

    Alex,

    just commenting on a couple of things you mentioned…

    3) If we’re careful to build our apps on top of GPLed code and not violate the terms, we own the complete platform by the time the design goes into production.

    >>> exactly how careful do you need to be ? – how much knowledge of the GPL do your developers need in order to work on a project – in fact, perhaps a better question would be, "Why do your developers need to know anything about the legal aspects of writing code for/on top of an embedded operating system?"

    4) There’s little to nothing as far as tools for writing Windows Embedded apps on Linux desktops (or am I missing something)?

    >>> Have you looked at Mono – http://www.mono-project.com/about/index.html – Mono is a comprehensive open source development platform based on the .NET framework that allows developers to build Linux and cross-platform applications with unprecedented productivity. Mono’s .NET implementation is based on the ECMA standards for C# and the Common Language Infrastructure.

    Sponsored by Novell the Mono project has an active and enthusiastic contributing community. Mono includes both developer tools and the infrastructure needed to run .NET client and server applications.

    Although – if you’re writing .NET Managed applications, why not just run them on Windows CE or Windows XP Embedded…

    5) The same goes for testing tools, although I suppose LabView would compensate for lack of testing suites for Linux.

    >>> Windows CE ships with a suite of driver, BSP, and application testing tools.

    6) The components available for Windows seem to target PDA makers. DirectX, .NET Framework, Windows Media. What if I am building a point-of-sale gun for reading UPC & RFID tags?

    >>> While it’s true that Windows CE does ship with components like DirectX, .NET Compact Framework, Windows Media these are all components that can either be added to a platform, or left out of a platform, Windows CE has been shipped in headless robots, industrial control systems, medical monitoring systems, networking routers – none of which need any PDA functionality – it’s up to the developer to determine what type of device they are building and use the appropriate components and technologies.

    – Mike

  9. - says:

    In the technical side (I don’t care about politics), you’ve http://people.redhat.com/mingo/realtime-preempt/.

    This stuff is THE real time support linux is going to get (don’t even look at other alternatives or at the dual-kernel approaches, THIS is the patch that will get merged in kernel.org trees). If you want to compare interrupt latency, etc, check this. I remember the number "9uS" on lists but don’t trust me.

    In linux internally threads are just plain processes which happens to share different things than processes (which is what they really are after all, that’s much more clean than making threads a "special thing") and there’s a "RT" priority for processes. I don’t know you mean with the thread thing

    WRT to modularity, linux kernel is pretty modular – and if you don’t like it, you have the _source_. being able to modify the source to adapt it to your needs is much better than simple "modularity" and it’s what linux is whole about.

    With respect to the drivers in user space, that’s sounds like a microkernel. Linux is certanly not going to become a microkernel. Drivers in the kernel are not more insecure in linux than they’re in XP, nor they’ll be in a embedded device if they’re well programmed. You can implement drivers that way in userspace in linux too (libusb or Xfree is an example of this), but this don’t seems a big advantage/disadvantage to my eyes since you can do ahything anyway.

    WRT to GPL, yes you’re obligated to release your changes if you make a revenue of them. We consider this a feature. It mean features are able to be incorporated to the main tree, and so _everybody_ (not only a single vendor) benefits from them.

    A good point of linux is that you can port it to Your own architecture, ie: you can build your own processor and run linux on it, with CE you just run whatever platforms CE runs on…

  10. jdq says:

    It’s free. That’s why people use it.

  11. Mike says:

    See my comments on free above…

    – Mike

  12. chip says:

    First let me say that I don’t know much about Embedded Windows products, they might even be fairly good from a technical viewpoint as you suggest but I will never try them. I do have 3 years of experience with embedded linux systems running on StrongArm processors.

    My next embedded project will once again be linux based. The reason for choosing linux over Windows is that over the years I have observed the evil practices and behaviour of Microsoft and there is just no way that I will choose to purchase, recommend, or use Microsoft products. It’s really quite that simple.

    The times are changing however, Linux and FOSS use is growing and making inroads in countries all around the world. The future for Linux and FOSS is bright.

    If you would like for me to provide you with more details you will be required to accept my Shared Details license and remit an initial fee of $25,000. The Shared Details license is valid for a period of 30 days, after which a $5000. monthly subscription fee will be instituted. Restrictions apply.

  13. Mike says:

    Huh ?

    – Mike

  14. DoesntMatter says:

    Mike – Given all the data sources to compare do you still have a doubt that Linux is a way more mature and attractive platform for embedded development? Minus my Linux bias and I still feel Win CE is no better than Linux in any way – Coolness factor, stability, security, interrupt latency, Device drivers, Freeness — You name it.

    Come on, now act real. Switch to embedded linux -release some funky code under GPL – E.V.O.L.V.E…

    🙂

  15. Chloe says:

    Just wait until Mono and dotGNU get slapped with a patent lawsuit from MS, we’ll see who’s laughing then.

    Does ECMA allow patenting of standards? I know IETF does. If so, then MS has a huge advantage. It can use its corporate presence to stamp out this open-source rubbish, together with its ridiculous notions of so-called ‘freedom’, and let the silent majority of developers get on with making money from software.

    The GPL and other open source licenses are anticompetitive. Imagine a proprietary product has to compete against a open-source one which (heaven forfend) happened to be better and with greater market share. How on earth is the proprietary one meant to compete and provide compatibility/better features, when it has to use open standards?

    Software has zero replication cost, but the cost of building it is huge. We can’t all live on customisation, consultancy and support contracts. This is especially true given the problems of outsourcing, etc. The American software economy depends on widespread GPL-incompatibility. I look to Microsoft, Adobe and others for decisive leadership.

    Let the patent wars begin.

  16. aCoward says:

    I must agree with it being free. If you look at it from a hobbyists point of view and you just spent $100 to $1000 creating your embedded device are you really going to spend another $1000 to get embedded windows? I know you say it has a 120 day free evaluation but what if I get busy or want to work on my project longer than that? Why should I fork over $1000 when I could use linux for free instead.

    It seems Microsoft is trying to get every last $ they can, even when its clear that most of the income they get is from O/S licenses for commerical embedded products.

    You can say "oh, well its just a hobby and Microsoft isn’t in the business of donating" but just remember Linux started out as a hobby 10+ years ago and here you are talking about it today.

  17. frasc says:

    My experience with both XPe and Linux tells me to pick Linux anytime over XPe.

    Linux comes with sources, that means control.

    We had some critical bugs with XPe (critical for our business that is). Microsoft was very reluctant to fix them because I guess it was a major pain. They asked us to justify our request with a business case…

    With access to sources no such pain, just fix it and you’re good to go.

    Plus XPe is a huge bloatware crippled with security holes and no exisitng way to, at a minimum, be able to use any `windows update’ kind of service.

    No good driver support for XPe. Xp-Pro has the drivers, yes, but don’t expect them to install easily on XPe.

    No third party support for XPe. So you end up installing some stuff, find a bug and ask the vendor for support. "What version of windows do you run ?", they ask. "XPe", you say. "We dont support XPe", they reply.

    Basically you’re screwed.

    If you’re tempted to consider XPe, just run. Fast and far. Don’t ever touch it even with a pole 😉

    Linux will be your savior.

    I won’t even go into the hard-real-time aspect of things as I dont have time to start explaining about RTAI for example …

  18. DragonSt0rm says:

    Hi Mike,

    > With Windows CE and Windows XP Embedded you get to pick and choose *exactly* which

    > components and technologies are included into your final operating system image

    Last year into an embedded project I was unsatisfied with a driver. I just edited the source code (not big deal just increasing a #define from 4 to 32) recompiled the kernel, and I was very happy with the results. Can do somethink like this on a embedded XP ?

    > What do you mean by customizing the operating system ?

    Tunning a driver, changing the scheduler algorithm and everything I can immagine that I may need.

    > Free, hmm… it depends on what you mean by that, if by free you mean that you can download the source for free then you are right

    This is exactly what I did. Getting the sources from kernel.org, writting my own init process which was responsible for starting the application. And by the way, desphite the fact that I had a kernel build exactly for a particular device, I develloped all the software on the desktop (no special API to learn or function to check if they exist or not in the CE version) copied the compiled executable on flash and ready. I used standard tools (i.e. Kdevelop) for the embeded job.

    > Look at Windows CE, implement the

    Give me a good reason to trust a piece of code

    I can not see it, touch-it, dezactivate-it if I have a doubt ?

    > Isn’t this exactly the opposite of #7 –

    Nooooo !!! Here is as mater of fact a very clear barier betwen the peoples living in OS realm and those living in MS realm. The understanding about "What does it mean security". I will elaborate a bit on this subject. Security systems can be sorted out into 2 category:

    – Protection systems (i.e. Bush surounded by US marines)

    – Rights control systems (i.e. Saddam surounded by US marines)

    Why these 2 systems (US marines) behave so different in these 2 cases. Because of a fundamental law of security:

    "The ultimate beneficiar of a security system is always the root trust authority".

    (c) DragonSt0rm.

    What is the impact of this rule into informational systems? Well, if I buy a security device (I bought => I own it), if I am able to replace the trust authority with myself (i.e. sign with my key the executables then revoke the vendor’s key) then this is a protection device. Othervise (if the vendor, possibly MS) can revoke or denie my some rights then we have a right control system.

    The security policy of MS was always in favor of right control systems, with MS as the root of the trust. Linux is a pure protection system, if you have the root password. If I buy something, I do expect that I have to be the ultimate beneficiar of security.

  19. Dylan says:

    When doing cost comparisons, compare not only the up-front costs for the development kit, but also the *per unit* costs. If you plan to ship a million wifi routers, the initial investment for a dev-kit becomes irrelevant, but the cost-per-unit can add up quickly.

    Also, because of the GPL, many projects developed with/for embedded Linux are freely available to other developers. This means less duplication of effort. Look at the popularity of Linux in consumer network appliances. And again, no per-unit licensing costs. The same is happening in the Telephony industry.

    I see more potential for CE in highly customized, low-number applications, where the per unit licensing is irrelevant, and the ease of development the most important factor. Once an application has been commoditized, Windows quickly loses its advantage.

  20. It's free for you too says:

    To Chloe

    You said:

    <The GPL and other open source licenses are anticompetitive. Imagine a proprietary product has to compete against a open-source one which (heaven forfend) happened to be better and with greater market share. How on earth is the proprietary one meant to compete and provide compatibility/better features, when it has to use open standards? >

    Hey, the open-source products are free for you to use too.

    How is this "anticompetitive"?

    No one is holding a gun to your head making you use Microsoft products.

  21. Andy says:

    "it would appear that Linux is used because of the community which surrounds it rather than for the technical merits of the operating system and tools"

    Not in my case — we use Linux so that we don’t have to *pay* anyone for it. Ever. Do the math.

  22. Joseph says:

    Andy: But XPe and CE are free too!!! After 120 days you will be stuck with the choice and then you can really start paying…unless you scrap it all.

  23. Dard says:

    Mike,

    you said:

    >>> What do you mean by customizing the operating system ? – replacing the shell, writing applications, adding drivers – all of these are fine – why would you want to share the source code to a final product, doesn’t that contain IP that you or your company have worked on to make your product "special" in the marketplace ?

    You’ve mischaracterised the GPL here. Shell & applications don’t link to Linux and are completely unaffected by kernel’s license. Drivers are a contentious matter but as everybody knows closed source drivers packaged as kernel modules are tolerated. Actually I fail to see a competitive advantage in having closed drivers but that’s probably just me.

    You’ve used the word ‘community’ as a reason for why people use linux, and then dismissed it lightly. Consider that ‘Community’ in this case means an extremely rich and diverse ecology of developer resources including support and code. Whatever whacky driver or kernel customisation you need, somebody has almost certainly written it and made the source available.

    Also not sure about the large footprint argument. I guess you are talking about libraries which will depend on the application, but the linux kernel is less than 1Mb and can be usefully run on systems with less than 4Mb memory.

  24. nigelm says:

    I’ve been using a Cirrus Logic ARM embedded board. It ships with CE and Linux toolchains, both are very good.

    The example flash images for both contain an MP3 player (the target for the processor is in the STB/MP3/Networking space) that you can send MP3 files.

    Both versions work fine. However on the CE version, if you do *anything* else at the same time, the sound starts skipping like a b@st@rd.

    Not a terribly good advert.

    For a lot of us working on projects like this, I find though the biggest thing is that the argument that Linux is more expensive because you have to consider development costs is just not true – there are quite a few areas where, for good developers, the differential is absolutely marginal; but with CE we have the hassle of paying $4 per device in licensing. And trying to complain about value-added linux vendors is a little strange – after all, isn’t that what MS is trying to sell – a value-added development platform?

  25. Cypress says:

    I choose Linux be it embedded or desktop or server because of the flexibility. Because of the ever-growing community. Because it costs me nothing. Last, but not least, because is virus-free, adware-free, spyware-free and Microsoft-free. M$ – you’re sooooo going down!

  26. Cypress says:

    I choose Linux be it embedded or desktop or server because of the flexibility. Because of the ever-growing community. Because it costs me nothing. Last, but not least, because is virus-free, adware-free, spyware-free and Microsoft-free. M$ – you’re sooooo going down!

  27. Brian says:

    Mike said:

    >>> Free, hmm… it depends on what you mean by that, if by free you mean that you can download the source for free then you are right – but what happens when you get the source, you are now an operating system vendor – it’s your responsibility to customize the operating system, and build your own tool chain, hire developers that know and understand the operating system and the tool chain you’re using, and maintain the operating system – if you don’t want to be in the O/S business then there are a number of embedded linux shops that are willing to charge you to do the work for you – in which case is there a difference between Linux and any commercial off the shelf operating system ? – where do you want to be spending your time, as an operating system vendor, or building your device ?

    Yes, absolutely free. I can download the Linux kernel, intall a tiny distro on my embedded system, and do whatever I need to. I really hope my developers and I know how to configure and build the operating system. It is important. If not, how does the developer really understand how to customize it for his/her needs? If your developers are of any quality, they can easily switch between embedded operating systems AND hardware without problem. (Windows does not allow for this) They do not need to pay big bucks to license the OS. In a development house that is Linux aware, this is not a problem. Plus, there are no per-unit royalties with Linux. Yes… free.

    I get tired of people saying that there are hidden costs with Linux… not if you know Linux. There are hidden costs with Windows, if the user doesnt know Windows well. In this day and age, if your administrators do not know many operating systems well (Windows, Linux, Solaris, HPUX, OSX, etc) and know how to abstract the concepts between them, they are going to incur a "hidden cost".

    B

    Brian

    Brian

  28. DC says:

    Mike, what would you do if you’re working in a small company (they exist too!), you’re not an OEM and you’re developing an embedded system. One day you notice some unexpected behaviour of WinCE/XP, might happen with Linux as well. What can you do? Just hope you can explain the problem clearly enough to MS to understand, and await the answer (is it for free?) With Linux, you can straight dive into the code and retrieve the (mis)behaviour and adapt it or modify your app.

  29. zbyte64 says:

    I wouldn’t say linux is virus free… but the other points are valid.

    I choose linux cuz i do have complete control, i can look at any code i want – and often i do. I do not have to pay anyone to develop & distribute MY program.

    GPL is all about survival of the fitest, companies are about profit – and yes while quality of products help make profit, it isn’t the only deciding factor. for example, monopolization to unfairly manipulate and lock in the market.

    I am an experienced linux developer, and have developed countless server and client applications. I find developing aplications on linux to be nothing short of logical and concise (and nearly orgasmic).

    aight but seriously, how can anyone in their right mind say that developing on linux is more constricting? There are lots of commercial apps on linux (oracle, novell, etc)

  30. Dave says:

    I have to ask you this:

    firstly, if WinXP embedded can RUN on a P133 with 32mb of ram, why can’t WinXP? and what’s you’re opinion of using XPLite over WinXP Embedded?

    What is the applicate you are trying to taylor either WinXP embedded or WinCE?

    You cannot make a fair comparison without first picking a target.

    If your target is a $149 "gameboy" type device, adding $90 per device overhead is a show stopper — regardless of how much time you may save using windows over linux or a custom solution.

    There are many competitors that make very good embedded systems, better than both linux and windows, RTEMS for instance is used in missile guidance systems for the US military, How’s that for latency?

    Large operating system overhead requires more resources which drain battery life.

    If you are developing a portable device for the military, say a gps mapper, are you going to tell the field commander trying out your new gear, well the battery life is very short, but we were able to bring it to market quickly.

    That’s another show stopper.

    Of course if I was developing a Tablet PC or similar information appliance for the consumer market, it would be Windows all the way, with their massive amount of software — though I’d probably go with CE since x86 processors, draw a lot of power (save Via or Transmeta.) for a battery operated device.

    It’s funny that you mention "I choose the operating system based on its technical merits."

    Well, as a circuit / system developer I choose an OS based on product requirements, market need and cost.

    Compare the two statements: Technical merits are a subjective term like big, or small, or fast. You have to compare one solution to another then you will see what the pros and cons are. If there was only 1 camera in the world, everyone would think its great and has great Technical Merits, even if it takes lousy pictures (when compared to nothing, it’s always better than nothing.)

    My statement:

    "minimum product requirements, market need and cost"

    These are REAL requirements that affect every single product created for ANY market.

    Any fool can design something in a Rube Goldberg way. A GOOD designer can achieve the same end with the least amount of resources–that’s the difference.

    Market need: If you are creating a tiny mp3 player there is no need for all of those windows XP drivers you mentioned. If you are creating a GPS system, there is still no need for all those drivers and 256MB of RAM. Look at the specs of the Gameboy DS and the sony PSP they are brand new.

    Cost defines the target price. If you want sell a $49 personal information manager / pocket organizer you can’t do it with a $90 license fee. If you want to sell a $2000 tablet pc, then $90 isn’t so bad.

  31. DarkDust says:

    This is why our company choose Linux:

    – we have a lot more control over applications, tools and the kernel and can customize them in a better way than we could with WinCE/XPE (this was critical for us so we could implement the features we wanted)

    – I feel Windows in general hides too much, I’m never 100% sure if there’s not some process doing stuff that could interfere with our applications, with Linux I feel to be "more close to the metal"

    – expertise: we have people that know Linux and their tools/applications in and out, but none knows WinCE very well(although we do write .NET CF applications as well)

    – we can do LOTS of tricks to save precious space, like compressing most programs and decompressing them into a RAM disk, and thanks to symbolic links (which STILL no Windows supports) we don’t have to worry that the applications break or behave odd as they simply don’t notice. And I doubt that it’s easy or at least possible to do our tricks with Windows.

    – scripting and chaining: just with the standard tools bash, awk and sed you can do hell of a lot tasks easily and quick, and since almost all Linux tools allow to be chained together through pipes you get flexibility that is unknown in the Windows world (only with non-standard third-party tools).

    – way more third party tools/applications for trivial things and not-so-trivial things. E.g. a webserver. How many are there for WinCE/XPE ? I know at least 4 for Linux, from full blown Apache down to micro_httpd (which is just a few kilo)… hell, there’s even a simple HTTP server in AWK available (http://awk.geht.net:81/) and we can chose whichever we need and have space for.

    – again the first item: control. We have more control over the complete system than we could have with WinCE/XPE.

    I’m really sorry, but Windows CE/XPE are way too opaque and lack too many features. And this won’t change, e.g. I doubt that any Windows system will ever support symbolic links. But this simple, cheap and ancient tool is invaluable when you have to reorganize your product without too much work (= time = money). And it’s just one example of what I think Windows lacks but the one that came up the most while developing where I said "Thank God this is not a Windows system, or else I won’t be able to do this as easily".

    And like other people already said, the GPL says we only have to release the changes we did to other GPL software, our own software (our scripts and programs and data) is under a propietary license. This is something MicroSofties really love to misunderstand.

    Don’t get me wrong, I think WinCE and WinXPE are nice products but I see their strength more in what I’d like to call "desktop embedding": PDA’s and other systems where people really have a display in front of them. Linux and the *BSD’s are better suited for small embedded systems in my eyes.

  32. XKJ says:

    I am on the linux side.

    I am semi-supportive of the monolithic-kernel linux uses, because a kernel module will ensure that my system will not be compromised by lousy drivers as seen running on Windows. Those drivers in the linux kernel have a certain standard.

    Moreover, many a time it is the users who have to fuss about the drivers for Windows. I _exceptionally_ hate the idea that MicroSoft is treating me like an idiot. The average intelligence of the space between the keyboard and chair had more than doubled. At least many people I know have become more clever in front of computers.

    Anyway, in embedded systems, there is not much reason to use Windows.

    Firstly, Windows costs. Per copy. Manufacturers can use linux for free, and if they retrain their support staff for linux, they can save quite a lot. The only reason, IMHO, to use Windows, is the advertising. Resistance to Windows, although rising as linux popularises, is not so high.

    Secondly, the apps to be used on the embedded system must be small, stable, light and easy to use. By using linux, without the bloats in Windows, already wins clearly. The ease of use can directly compete with Windows (Openoffice can subsitute MS Office already). Windows only stands to the same reason before.

    Anyway, I wouldn’t want any lawsuits after me. You don’t need much IP in the hardware arena like in the software arena. Why would I bother to care about losing IP when I can use closed hardware that linux hackers have stabily reverse-engineered quite well for me?

    Finally, the manufacturers may suddenly get the idea to use a very funny chip in the system. With Windows they would be stuck. But with linux, they can just add whatever processor they want (even SPARC and POWER5 dual processor system) if they feel like it.

    No reason to have to use Windows isn’t it? The end-user doesn’t much care, they just have to use it and the similar UI in the system will get them hooked. Did I miss that you can use the same UI over many products with linux?

  33. Mike says:

    You seem to be confusing desktop windows and embedded operating systems using Windows CE or Windows XP Embedded.

    Yes, on desktop Windows users can add drivers and applications, this is useful for when the user upgrades their hardware, adding a new graphics card, installing the latest game etc…

    On an embedded system the hardware/software is typically closed to the end user, the drivers and applications are locked (why would an end user want to open a set top box and ‘fiddle’ with the hardware or add applications or drivers?).

    Applications do need to be stable within embedded systems, applications are expected to run for hours, days, weeks, months, years without interruption – it’s important to fully test a device before shipping, Windows CE ships with tools that can be used to test the operating system and applications, this includes drivers, BSP, applicaiton and system profiling, kernel tracking, performance monitoring etc…

    Perhaps the next post should cover some of the performance and testing methodologies for Windows CE…

    – Mike

  34. Mike says:

    Dave,

    Windows XP Embedded does ship with over 9,000 drivers, but you don’t need to include any of them in your final operating system image (unless you need them of course) – this is also true of Windows CE.

    Both Windows CE and Windows XP Embedded are componentized operating systems, you only include the applications, services, drivers, and technologies that are appropriate for the system you are building.

    You mention battery life, Windows XP Embedded runs on the x86 processor which doesn’t lend itself to good power management or battery life (just look at laptops as an example), Windows CE on the other hand is designed to be a small footprint, compoentized, real-time, operating system with integrated power management.

    It looks like there are a number of mis-perceptions around the Windows Embedded operating systems, I will cover the basics for Windows CE and Windows XP Embedded over the next few posts and see where that takes us…

    – Mike

  35. charlie says:

    OK, when you GPL all of your code I might consider using it.

    Until then it’s not much good to me.

    Some of the reasons why, that haven’t yet been mentioned:-

    – I don’t know what it does, unless I can see the code.

    – I have to betray the rest of the world, signing a license agreement, that says that I won’t share it with my fellow human beings (i.e. make copies). I also expect to pass on this odious obligation each time I sell another unit with windows on it.

    – Should I want to change the code (say the system kernel) MS’s licence says I can’t.

    – As a user of MS binaries I have no idea of the security implications of running them.

    – I have to pay $hitload$ to MS (at some point) — don’t talk about evaluation licences — you sound like a playground drug-dealer, "the first hit is free, but then boy oh boy you’re gonna pay"

    It’s not that linux is ‘cool’ it’s that freedom is a more ethically acceptable choice than serfdom …

  36. shawn says:

    in the end, it’s simply about choice. something mircosoft doesn’t seem to understand.

    i run linux because i can. because i prefer its way of doing things. because, in my professional experience it’s more stable, secure and powerful.

    we can argue until the sun explodes and the world ends about which system is better and why. but, it all comes down to choice.

    mike, you mentioned intellectual property and someone’s place int he market based on their "special" code. for some people, that doesn’t matter. call us commies, or socialists if you like…but some developers and admins just like sharing their work. i don’t think it is a hard concept to grasp. if i write an app and want to give it away free as in beer and free as in speech, it should be my right.

    i don’t see why this is so bad. mircorsoft will continue to sell products. linux will grow, maybe more businesses and people will use it. maybe not.

    but, it should simply be my choice. i’ve never started any project without examining which hardware and software would work best. but, i do enjoy having a choice.

    we migrated from old nt 4 domain servers to linux/samba boxes because a) it was more cost effective, b) it was a more robust and stable system, c) i don’t waste 5 hours a day dealing with viri and spyware and d) because we could.

    windows ce is a nice os. although, the problem i have with windows operating systems is it gives me huge amounts of crap i don’t want or need, and no way to get rid of it easily.

    guess what? i don’t want media player. i don’t want ie. i don’t want outlook. is that so hard for microsoft to understand? release a bare-bones system for those of us who don’t want an install base of 4gb and 50+ apps that never get used.

    i can roll out a gentoo desktop easily under 600mb, with only the software i need and want. nothing more, nothing less.

    windows has bugs. linux has bugs. both systems have their technical merits and flaws…but choice certainly makes up for a lot of windows shortcomings.

  37. aguy says:

    "WRT to GPL, yes you’re obligated to release your changes if you make a revenue of them. We consider this a feature."

    I just want to correct this offhand comment here. I think it was made with good intentions, but I’d like to say last time I checked GPL has never said anything about revenue at all. Simply put, if you distribute a binary built with GPL code, you must somehow share that code. Revenue is irrelevent.

    Also, I would like to offer my own personal opinion that the GPL has been very straightforward and consistent and numerous "plain language" explanations are available. I think there is a MUCH higher probability that an arbitrary developer will be familiar with and able to understand the GPL, than some arbitrary microsoft license, simply because it is so widely reknowned and scrutinized.

    I will stay out of the discussion of whether linux or windows is a better base for embedded applications as that is an area I have no knowledge of at all.

  38. theEschaton says:

    Let’s look at this from another perspective that DOES NOT take into account the relative technical merits of each chosen platform.

    Instead, let’s approach it from a purely business standpoint and IP ownership. Keep in mind that for each platform, regardless of how much money is spent on the tools, platforms and sundry you are ‘Licensing’ them. You have no rights beyond those that are granted at the initial licensing and depending on the licensor’s continual finding that you are satisfying the terms of the license which MAY change over time.

    This is an EXTREMELY important point. With upgrades, Microsoft is well known to change the terms of licenses through the EULAs etc. Microsoft is also capable of and has been known to revoke licenses and litigate. Now if I choose to NOT accept a forced change in my license agreement I am also losing out on any new capability and functionality. My investment has just stagnated. Once again, I am put into a position of debating the BUSINESS merits of each platform.

    Also, if I am a small operation, it goes without saying that I cannot afford as much LAW as Microsoft. If Microsoft chooses to litigate against me or withhold licenses, my BUSINESS is pretty well damaged if not destroyed outright.

    Now with a OSS solution my ONLY responsibility is to ensure that I return what I have modified to the greater community. This DOES NOT necessarily include any new or "Innovative" ™ programs that I have created from scratch. The important thing here is that there is no one person or group that can tell me that I cannot continue to use this platform or tools. There is no chance of me losing my investment in tools or training because of "License Violations" (r).

    Microsoft either cannot or will not give me the same assurances.

    Therefore, even IF the Microsoft solution is easier, better and or cheaper, it still fails as a business proposition for the simple reason that I have no guarantee that my long-term platform investments are secure or carry forward.

    After all, It IS all about the bling bling and keeping it real.

    I prefer to have complete control over my own bling procurement devices.

  39. BeenThereDoneThat says:

    I wasn’t going to post until I read nigelm’s comment about the mp3 player. Yes that is my experience too.

    Just a couple of years ago we did a handheld design on StrongARM (206 MHz) with Windows CE. We tried (in vain) to get a VoIP app and codec working on it with acceptable quality. We never could, not even in half-duplex operation. It skipped like a b@$t@rd.

    We retried the tests on a 206 MHz StrongARM using Linux. The result? Smooth voice in half-duplex. Some popping and clicking in full duplex.

    So what did we do? We upped the processor speed and ran screaming like school children away from Windows CE as fast as we could.

    On a 400 MHz Xscale, our VoIP app and software codec performed wonderfully. In addition, there were background processes running to handle a plethora of other features.

    No we did not try Windows CE on the 400 MHz part. Nor do I ever want to try Windows CE again. My one adventure with Windows CE cured me of that temptation.

    I have been doing embedded for many years. When you are talking about devices that really must meet small size or small cost per their requirements, you really aren’t talking about Linux or Windows CE. They are both huge and one is hugely priced. You are probably best served going with an embedded OS. My preference – at this time – is Nucleus Plus. It can achieve a very small footprint. Yes it’s commercial and you have to pay a developer’s license. But sometimes, as Mike pointed out, that is exactly what you need when you don’t want to be in the OS support business. Oh and did I mention it has no run-time royalty fees and you get the source code? I just thought I would mention that.

    Now another point: yes it IS the community that makes Linux attractive. This is not just the community of developers but much more. There is the community of infrastructure surrounding Linux – drivers, libraries, tools, and information. There is also the community of software – so many apps, I need not take the space to name them here. An then there is the community of camaraderie – I have found open source developers are more willing to help each other even when in different companies than M$ developers.

    In short, we chose and continue to choose Linux because it gives back to us more than it takes from us. Period.

  40. Mike says:

    Shawn,

    You mention that Windows CE is a nice operating system (thanks!), but the problem you have is that it gives you too stuff that you don’t need in your embedded design, such as IE, or Media Player…

    Both Windows CE and Windows XP Embedded are componentized, if you don’t want a feature then don’t put it into your operating system.

    With Windows CE you can start with a kernel only build of 200kb and layer on the drivers and technologies you need for your device – For Windows XP Embedded you can start with a 5MB image and layer the drivers and technologies you need.

    In both cases if you don’t want a web server, media player, internet browser, COM, DCOM, RPC, MSMQ, SOAP, serial drivers, ATAPI drivers, video drivers etc… then you don’t include them in your o/s image – there’s a world of difference between desktop windows and the embedded operating systems.

    – Mike

  41. Jim says:

    (i have read other responses on this thread)

    Mike comments:

    >>> Free, hmm… it depends on what you mean by that, if by free you mean that you can download the source for free then you are right – but what happens when you get the source, you are now an operating system vendor – …

    Mike, this may be the crux of differeing philosophies here. MS has a way to go before it really convinces the market that your theme is true.

    Embedded Systems are by nature low-level, and any development should be strong, stronger than any home hobbiest and many desktop apps [Follows from your lifecycle/support comments]. They ARE, in a way, maintaining an OS, along with a forum of several dozen strong participants, and hundreds of commenters. They dig read, follow the call stacks deep, and can see latency causes at the root. They comment on them in forums, read FAQs and exchange potentials with an entire market, not just one vendor.

    IP arises from the ability to do many more things than "create secret code". Building, reacting, shipping and supporting smart devices is more than a programming job. The software has largely been commoditized, and the innovation benefits everyone. Why fight this battle?

    MS seems to have a connection between Linux as a system, and the costs of maintenance for all that source. For the most part, developers get the stock versions and use it – it just works, consistently. There are no more costs in coding to this platform than MS, and much less especially where MS has muddied the waters on the desktop side.

    I respect your background and opinion, but in a sweeping hand-sort of way, you compare Linux to Windows as if their business practices are similar. They are vastly different, IMO.

    Jim

  42. tsuraan says:

    I just had a few questions about your products… Can either of the MS embedded kernels run on a platform lacking a hardware MMU? It looks like the embedded XP is only available for i386 platforms (I don’t even see how a slow PC can be called an embedded system, but that’s really off topic), and I’m pretty sure those tend to have MMUs. Can WinCE run without one then? I am honestly curious, since in my mind embedded is synonymous with lacking an MMU.

    Another question I had was, what are the guarantees on the real-time extensions to the windows kernels? In my OS classes, I was taught that real-time meant that one had concrete, mathematically guaranteed limits on latency. It looks like you’re just referring to benchmarks of a system under load, which is really not a guarantee of latency. I personally would never consider linux or wince for a real-time system, unless I saw that there really are solid latency boundaries.

  43. Mike says:

    Windows XP Embedded runs on x86 processors from the i386 through to screaming 4GHz processors – the hardware requirements for Windows XP Embedded are x86 processor and PC architecture hardware (it’s XP Pro componentized).

    Windows CE requires a 32-bit processor with MMU from the following classes of processor, x86, MIPS, ARM (and StrongARM, xScale), and SHx.

    I’m interested to know why you think embedded systems shouldn’t have an MMU ?

    – Mike

  44. mschaef says:

    "if you don’t want to be in the O/S business then there are a number of embedded linux shops that are willing to charge you to do the work for you"

    From an economic point of view this is a good thing. If I pick Linux, I have my choice of several vendors that have to compete with each other when selling service. Everything else being equal, this tends to create incentives to either lower prices or raise services.

    With Microsoft, I still can deal with 3rd party support, but since they don’t have access to the source code, there are some things for which I have to depend on Microsoft: I have no choice. In a monopoly situation like that, unless I have lots of money to throw around and the ability to switch platforms (both of which are questionable), I have very little ability to negotiate with Microsoft for better service or lower prices.

    Like other people on this blog, I’ve had that happen to ne. I’ve been dependant on a feature at the margin of windows that doesn’t get fixed because it’s not in Microsoft’s best interests. I’m not blaiming Microsoft, since their first responsibilty is to their share holders, but I would loved to have had the opportunity to fix the problem myself (or hire someone that could).

    " – in which case is there a difference between Linux and any commercial off the shelf operating system ?"

    Because a COTS OS ties you to one vendor and OSS doesn’t.

    " – where do you want to be spending your time, as an operating system vendor, or building your device ? "

    Or, alternatively, do you want to spend your time trying to get fixes from your OS vendor that aren’t profitable for them to make?

  45. mschaef says:

    One more thing:

    <Snip>An aircraft avionics system may be in development for as long as a decade before it is fielded… Microsoft Embedded operating systems are supported for 7 years after the release date of the operating system "

    Are you saying that in the "typical" Avionics project that picks windows, they’ll have support for the first 7 years of the development cycle and then lose it before development is done, much less when the product ships?

    That sounds horrible.

  46. Mike says:

    As far as source access goes, Windows CE ships with 2.5 Million lines of "shared source", this is the lower levels of the operating system – but wait, there’s more… Windows CE also has a Premium Source program – http://www.windowsfordevices.com/news/NS6015823526.html

    This allows for customers (that’s you!) to make changes to the O/S and ship those changes in your embedded device, here’s some extracts from the article…

    This is the first time that the "complete body of Windows CE source code" has been made available, Mundie added. In answer to WindowsForDevices.com’s question, "What percentage of CE source code is available?", Mundie replied "as close to 100% as we can make it — we can’t release sources that belong to other companies." Most operating systems contain code licensed from other sources.

    Under the terms of a new "premium" shared source license, Microsoft will now allow silicon vendors and systems integrators "full access" to Windows CE source code, including rights to redistribute modified code within commercial products. This capability is generally considered critical among developers of embedded systems and devices, either to tune the systems to their unique requirements, or to differentiate their products. In Microsoft’s own words: "Shared Source Premium code empowers licensees to optimize and differentiate software and hardware for Windows CE."

    – Mike

  47. Martin says:

    Mike wrote:

    >I’m interested to know why you think embedded >systems shouldn’t have an MMU ?

    He did not say that embedded systems should not have an MMU. He said many embedded systems have processors that do not have MMU.

    It is a matter of code portability and wider freedom in choosing a processor for your project.

    An example: The Xbox has a x86 processor, but Xbox2 on the other hand has a different processor: PPC. A platform migration like that be possible for most XPe or CE developers (Unless you are Microsoft). With linux, it is just a matter making any necessary changes and often a simple recompile is enough.

  48. Martin says:

    Mike wrote:

    As far as source access goes, Windows CE ships with 2.5 Million lines of "shared source", this is the lower levels of the operating system – but wait, there’s more… Windows CE also has a Premium Source program

    Premium, premium, premium… That’s free right? No?

    Why pay if you can see Linux source code for free? How much this Premium Source program will increase development cost?

  49. Mike says:

    That’s free right, YES ! – there’s no additional cost to get the premium source – there is an application process to get access – see the following page for more information

    http://msdn.microsoft.com/embedded/usewinemb/ce/sharedsrccode/default.aspx

    – Mike

  50. Paul Mooney says:

    What’s up Windows Mobile?

  51. Kent Borg says:

    I am currently doing project management for an embedded project that is using Linux. We have been trying to stay on the simpler side of the fence and do all our work in userland, but there was ~one~ simple kernel driver we needed.

    Did we write it from scratch? No. Did we write it from some mismatched sample source code? No. Did we study and take courses? No. We modified drivers/char/mem.c and, with very little effort, it worked. Will we have to release this change if a customer asks for it? Yes, but it was so simple, what is the harm?

    Having free (as in $), free (as in lawyers) access to the sources was so nice.

    Oh, and Linux seems to be functioning just fine for us.

    -kb

  52. Marcos Andrade says:

    Imagine a windows xp embedded in a supersonic aircraft and when radar detects a missile behind you the system gives you a BSOD…

    A good reason to NOT use any operating system WinXXXX:

    http://www.daimyo.org/bsod/

    You are a M$ employee but you don’t need to lie for people, unless you works in the marketing section…

  53. Mike says:

    Marcos,

    A couple of comments…

    1. Windows CE is NOT based on the desktop version of Windows, the operating system does expose the same Win32 API’s as the desktop version of Windows, and does have support for the .NET Compact Framework – having the same programming model on Windows CE and Windows XP makes it easy for developers to code on both platforms without having to learn a new set of programming API’s – Has anyone seen Windows CE Blue Screen ?

    2. Windows XP Embedded is a componentized version of Windows XP – you only include the drivers and operating system technologies that appropriate for the device you are building – your Embedded Application can be the Shell of the system, you don’t need the Windows UI, you don’t need control panel, IE, Windows Media Player, Outlook Express, Notepad, RegEdit etc… if you are building a single purpose device then you only run YOUR applicaiton.

    Make sense ?

    – Mike

  54. Mike says:

    BTW, anyone else having fun with this thread ? :OD

    – Mike

  55. As a Linux Embedded Developer, the appeal of linux over any Windows based product is CONTROL. For any embedded project, I could build a linux system from the ground up and make it suitable for my specific projects needs. I could add,remove whatever I needed. With Microsoft products, you have a lot less choice.

    I recently built a wireless router using linux and I was able to customize every single detail. I could add a firewall(iptables), DNS,ssh,loadbalancing,proxy, anything I wanted all for free. If I didn;t like the way something was working, I could go in and change it myself. The bottom line was that I was in control.

    What I feel is happening with Microsoft is that they want to be everywhere at once. This might be a good thing for Microsoft, but everyone else suffers with the lack of inovation and advancement one company can provide. Along with this, the software quality tends to be lower as not as many people get to have a say in what works and what doesn’t.

    My 2 cents.

    -Victor Castro

    victorhugo83@yahoo.com

  56. Marcos Andrade says:

    I know this. I am just kidding…

    But if I can use a free (as total freedom), with free (zero cost) and total access (freedom) to source code, with free toochains, with unix philosophy of stability and flexibilty, multiplatform by nature (much more than WinCE) like linux or netbsd to make a system, with a great community of users and developers to help you (not to send a support fee),which has free (as freedom and as zero cost) realtime extensions like RTAI, why I should choose an immature, proprietary, target of many malwares today, traditionally insecure, with not so much platform support, with royalties to each unity of my product sold ?

    And if the guy doesn’t like of "communist" operating systems, like Bill Getes say, there are QNX and other realtime and stablished for years in the market.

  57. If you like Windows or know the API but don’t want to be tied to Microsoft you could add real-time support to ReactOS and use it instead of CE or Linux.

  58. zbyte64 says:

    >>That’s free right, YES ! – there’s no additional cost to get the premium source – there is an application process to get access – see the following page for more information

    So its free? then what is this about the trial period, and paying microsoft dues when i distribute x# of units? O wait thats right, that part isn’t free…

    Yes, its nice microsoft is opening the code up a bit, seems they are learning new tricks. But again, if i have the option of paying nothing, why should i pay anything? (rhetorical)

    >> Perhaps the next post should cover some of the performance and testing methodologies for Windows CE…

    People already pointed out they had performance problems with windows CE, see the posts on mp3s. But where is your response on that? (rhetorical, but asking for a response)

    >> BTW, anyone else having fun with this thread ? :OD

    Yes it very fun. Its like showing the kid on your block that his new toy is a peice of junk.

  59. Mike says:

    Performance issues can of course come from your custom code you’ve added to a platform – consider writing an mp3 player, the player performs three tasks, loading the media file, decompressing the media file, and playing the media file, all of this is "user code", right ? – if I write sloppy code then I would expect to have problems with my media player – if I spend too long loading a file or decompressing a file then there’s not enough data to be played and I get skipping.

    Windows CE ships with tools that can either profile the entire operating system (see what’s taking time across the entire O/S), or profile an individual application to see where time is being spent – in the case of an mp3 player you would quickly be able to spot the portion of code that’s causing the problem and tweak accordingly.

    It sounds like I really do need to educate some of you folks about the very cool tools that ship with Windows CE!

    – Mike

  60. zbyte64 says:

    From those posts (mp3s) it sounded like the used pretty much the same code, minus api changes of course. I mean why would they rewrite it from scratch (both of them for that matter). Further more, linux is a constantly evolving product. If an embedded version of linux doesn’t stack up against CE performance wise now, it will in the future.

    >>It sounds like I really do need to educate some of you folks about the very cool tools that ship with Windows CE!

    Really, well gosh jee, why don’t you tell me?

    This is my last post, but did microsoft give you those cheesey lines, or do you come up with them? (sorry but its very corny)

  61. Mike says:

    Hi zbyte64,

    I came up with these cheesy lines all by myself, impressed, eh ? ;O)

    ok then, look out for some Windows CE tools posts over the next few days…

    – Mike

  62. Grant says:

    Mike,

    It has taken an extraordinary length of time to reach the bottom of this, but I have done it! And I have just a couple of comments…

    <quoted from abobe>Free, hmm… it depends on what you mean by that, if by free you mean that you can download the source for free then you are right – but what happens when you get the source, you are now an operating system vendor – it’s your responsibility to customize the operating system, and build your own tool chain, hire developers that know and understand the operating system and the tool chain you’re using, and maintain the operating system – if you don’t want to be in the O/S business then there are a number of embedded linux shops that are willing to charge you to do the work for you – in which case is there a difference between Linux and any commercial off the shelf operating system ? – where do you want to be spending your time, as an operating system vendor, or building your device ?</quote>

    What a load of rubbish. Just because I download a kernel doesn’t mean I am an "Operating System Vendor". By that tone one could also equate WinCE developers as being "OS Vendors". Do you not download a kernel as part of the WinCE development environment? Can you not remove elements that are not required? Or am I getting the wrong end of the stick with regard to this "componentised" thing.

    It would seem that many people here have commented that the principle reasons for using Linux in their embedded systems are: the freedom to see the code, the whole code and nothing but the code; the ability to exert _complete_ control over a system – not just the control that Microsoft deem should be allowed; and since any developer worth their salt should have an _understanding_ of Operating Systems, and not just how to drag and drop a few API calls together, development costs can truly be zero (in terms of dollars).

    Almost everytime your comments seem to rebuke these statements. Are you seriously trying to tell us all that we are stupid and don’t know what we’re talking about? Do not forget that many of the people here are already embedded systems developers. Be careful who you insult.

    Grant.

  63. Mike says:

    Grant,

    Congratulations on working through the extremely long post !

    It wasn’t my intention to insult anyone, but to provide a comparison of Windows CE, Windows XP Embedded and Linux.

    It seems to me that device builders *could* spend a ton of their time fiddling around within the guts of an embedded operating system, perhaps tweaking a little here, and there (and perhaps not understanding the implications across the operating system for some of the tweaks) where they could be spending time configuring an operating system from a set of catalog components, customizing where needed and shipping devices.

    – Mike

  64. DragonSt0rm says:

    Mike,

    Let get to the basics. Hopefully you are going to get it this time 🙂

    – if I buy a book shelf, I can and I have the right to drill some holes use some extra screws and build a dog house, regardless the fact that a dog house cost more than a book shelf.

    – if I buy a refrigerator I can and I have the rights to remove the colling system, and reuse the heatting resistor to build a chicken incubator.

    However, if I buy a XBox I can not run on it my own software, to convert it into a set-top box, or videophone, or whatever I want to.

    If I "find a way" I will be a criminal by DMCA (MS being one supported of it). The company who sold mod-chips for XBox had legal issues, and so on…..

    If I buy a MS wireless router I have to use-it as it is, otherwise I will be considered criminal.

    If I buy a Linux one, I can convert-it into a intelligent backbone to automatize my house. I am allowed to exchange code and ideas with everybody interested to do the same.

    If I do that with a MS product I have to get a lawyer.

    Mike, I really appreciate your loyalty to your employer. However, you are on the wrong side of the fence. You are defending a business model which is going to be extinct. And for a very good reason: Peoples need to be able to have control over their property and life.

    The same way of thinking as for a hobbyist it is valid for a small business too. If I build a product as a small business, and the custommer tell me: "I want that and that"

    I like to be able to tell him:

    "OK, it will cost you $$$$ and you will have-it by the end of next month" instead of

    "Well, the license I have with my OS vendor forbid me to do what you need".

    The future belong to a business model "me and you". The "me or you" it is obsolete and hopefully it is going to vanish away. If MS wants to have a place into the future they have to reform themselves.

    Stop the stupid IP wars, and political lobby for an idiotic IP legislation which favor big corporations against small business. Stop pattenting trivial stuff and open your mind to the future. As much as you fight these wars as many former allies are going to become your enemies.

    Join the open standards and respect them as "words of the Bible". If you have a good idea to improve a standard make specifications open and free for all.

    Stop predatory tactics (Stacker/DblSpace, DRDOS/MSDOS – Windows compatibility, Novell/NTServer, Netscape/IE, Real-QT/MediaPlayer). You are going to have partners only if you can be trusted.

    etc…

    The big power of Linux relies in freedom. This is the reason it gets better and better so fast. Thousand and thousand of peoples contribute idea and work to the process because freedom is productive, efficient, good, cool, sexy and it is tuned on the frequency of human dignity and aspirations.

    All the best,

    DragonSt0rm

  65. Shurik says:

    Hi Mike.

    From what I understood, Microsoft does allow access to much of the Windows CE source – and I applaud that decision. The source is not Free free, but at least you can look at it and make some changes if you are facing an egregious OS bug. Unfortunately, simply having the source is not enough.

    Linux has a 14-year tradition of completely open community development. If I have a question about the kernel internals, I have access to years of LKML threads and other mailing lists, all the historic sources on kernel.org, the discussions about all bugs and security issues is out in the open, and I can even ask Linus Himself about where the OS development is going. There are hundreds (thousands?) of people who spend much of their time examining and improving the Linux kernel source whose advice I can ask. I don’t have that with Windows CE source code – there is not much community that discusses it, there are NDA’s, and the fact that the source is not Free discourages the community from growing. I think that Sun will face the same problem with Solaris 10 – even though the source will be more-or-less free, they wouldn’t get a viable community for years.

    This isn’t about politics or idealism, this is about reality. If I want a hard-real-time OS and I know I will never need to change the kernel, I look at a commercial vendor (e.g. QNX, Microsoft, etc.) If I want a general-purpose OS whose kernel has a community of open development, and which happens to run fast on embedded devices, I go with Linux.

  66. omg says:

    Big surpise … the article was writen by a Green Hills employee. Green Hills products are close source developement tools. They have no market in Linux. Wow … what an unsurprising conclusion.

  67. None of the Above says:

    I know this is off topic, but *BSD is also worth considering for embedded projects.

    *BSD might be a good comprimise for folks who are skittish about both the GPL and MS licensing terms.

    Net BSD runs on a whole whack of devices, and the price is certainly right!

  68. Simplicissimus says:

    OK, lots of input. Let’s take stock. So far everybody EXCEPT the guy cashing Microsoft paychecks seems to agree that Linux is the way to go.

    Mike, I think it’s time to alert your business unit manager that M$ needs to deploy some paid shills to back you up here. You’re getting trounced by the Red Hoard. Come on buddy, that’s what the shills are in the budget for. You can’t be expected to hold the fort all by yourself.

    I think it would help if everyone tried to understand Mike’s position here. Sympathize a little. The fact of the matter is that he has been offered, and has accepted, a quantity of money in return for agreeing to hopelessly and endlessly foist upon the cognoscenti themselves logically and morally untenable arguments against the viability and wisdom of participating in the pure scientific method. This utterly irrational job is incredibly difficult for a thinking person to perform. The energy expended in constant self delusion alone is exhausting. One is barely left with vigor enough to construct one’s contractually obligated syllogisms proving ineluctibly that Microsoft’s greedy, selfish, immoral and illegal monopoly-maintenance tactics align perfectly with the needs and aspirations of Humanity. We’d all be so euphorically happy, so Mike and his fellows are condemned to argue, if we’d just shut up about freedom and choice and control and openness and peer review and just get on with trusting Mike’s employer to spoon-feed us precisely the technology we really need under terms they alone can change as they see fit. Can you imagine the nausea which must swell up in Mike’s stomach each time he gears up to dress up and trot out yet another manifestation of this drivel? It’s a tough gig. Have some mercy, folks. Can’t we pretend for instance, at least a little, not to notice that the Shared Source initiative is a legal trap? Or maybe we could point out a bit less cogently that the propostition of trusting one’s business to a relationship with a pathological predator (Spyglass?) might not be such a good idea? Our reason should be tempered with mercy. I’m certain that Mike is paying Grandma’s hospital bills with the proceeds, after all.

    I mean, many of us would shill for M$ for the right price, right? Mike shouldn’t be punished for the fact that his price is simply vastly lower than ours.

  69. John says:

    CE is surely appealing and the price is reasonable. But Microsoft has a history.

    The price of ms-dos, windows 3.11 was also reasonable, at that time only a small percentage of the hardware costs. But somehow the world ended up paying more for the basic software components (windows, office), than for the hardware. Though I don’t mind Microsoft to make some money, Microsoft has 90%+ profit margin on windows! Consumers are effectively paying ten times as much as they would in a market with competition!

    Guess what, the trick only works once. No matter how ‘super cool’ CE’s tools are and how low the costs are right now, I will not assist Microsoft in gaining a third monopoly, paying too much for too little in the end again.

    Butt still, even if Microsoft stopped abusing their monopoly and isn’t convicted every single month: Open source is the current technological revolution, and it will not wait for Microsoft.

  70. anony says:

    Mike,

    You have said WindowsXP Embedded & Windows CE are different. If so they why would I need to use it? When they are all different from desktop it does not make any sense to use it, for its different code that means different sets of problem. Now MS sells these OS with Tag line can connect to windows. Now with simple math you can say, you have three different OS flavor? So what is the advantage of using XPe & CE?

    All the prebuilt XPe&CE would give the same windowing environment, GUI. As product developer I want to have different interface to differentiate, is it possible? All PocketPC PDA have same interface and manufacturers are screwed. IPOD is known for its interface which is Patented/Trademarked… Sony VCR, has an unique interface compared to other VCR, same all consumer electronics. Now with Linux I can differentiate by interface even if the underlying OS is used by all the competitors, its called Freedom to do what I want, not being controlled by Single company MS, which is what the big difference, IMHO.

  71. Barry says:

    <snip>1. Windows CE is NOT based on the desktop version of Windows, the operating system does expose the same Win32 API’s as the desktop version of Windows, and does have support for the .NET Compact Framework – having the same programming model on Windows CE and Windows XP makes it easy for developers to code on both platforms without having to learn a new set of programming API’s – Has anyone seen Windows CE Blue Screen ? </snip>

    No, it would just freeze. That is what PocketPC devices usually do… Total CRAP!

  72. arido says:

    Mike, can you also describe the shortcoming of Windows CE & XPe for embedded development?

  73. Jose Felicio says:

    I reflashed the FlashROM of my Compaq Ipaq to replace PocketPC for Familiar Linux (http://familiar.handhelds.org/). Now I have a true operating system, with cross development, powerfull network tools, remote display capability (when I use GPE and X window) and many other things.

    With M$ PocketPC the only freedom for a typical user is to buy some little crap shareware and proprietary applications.

    And the main problem of WinCE and XP embedded is that both are Microsoft products. Big companies have fear of Microsoft because it first license some proprietary technologies for your products, then it make competition selling their own technology embedded in your main products like Windows and MS Office, after this MS offer money to buy your business or destroy you using their monopoly. It works like an amoeba, eating companies and growing.

    The lesson is: try to make far from Microsoft. If you cannot use linux or *BSD for any reason on your embedded project, simply buy a proprietary operating system from another company like QNX, WindRiver or Simbian.

  74. Jose Felicio says:

    Admit one thing: Microsoft only sells well where people are ignorant about some field. Microsoft sells finished and closed solutions and ignorant/lazy people like this.

    Maybe Microsoft will have success in embedded market selling your solutions to companies that don’t have competent/specialized engineers to do complicated embedded development and/or stupid managers to make acquisition decisions. For these companies Microsoft maybe have lower TCO simply because they have no people to do the correct thing. For these companies linux TCO is infinity…

    But if you see a diferent vision of the big electronic companies. They already have talented/specialized people to make complex embedded developments and for them any Microsoft solution will represent a non-desired cost addition to products, to pay M$ royalties.

    Moreover, M$ is a potential enemy because it has money to enter on any market, using your advantage to kill competition.

    See the Sony example. If years ago Sony put Windows embedded on your Playstation 2, when M$ put X-box in the market, the Sony’s product would be destroyed because both products would be identical and Microsoft can explore the advantage of total control of software platform (operating system, development tools, etc).

    See also the Nokia example. Nothing from Microsoft enter in its products.

    =================================

    See free alternativeslike these

    http://openembedded.org/

    For Developers

    OpenEmbedded is a tool which allows developers to create a fully usable Linux base for various embedded systems. It has been designed to be able to handle different hardware architectures, support multiple releases for those architectures, and utilize tools for speeding up the process of recreating the base after changes have been made. Currently it can run on any Linux distribution, and plans are in place to allow it to work under Windows.

    OpenEmbedded is the successor of the great OpenZaurus project. Basically OpenEmbedded is a build system that can generate (cross-compile) Software packages for embedded targets. This may include Bootloader, Linux and Applications. It started as a dream and BrainStorming, on how this could be done, and it’s already used in real life.

  75. Jose Felicio says:

    From yesterday news:

    http://www.eweek.com/article2/0,1759,1751611,00.asp

    Truly Open Code Brings Best Software

    Open-source software development may not be easy, and no one likes to air their dirty laundry, but in the end, it’s the smartest way to make software.

  76. TheProf says:

    After reading most of the posts, the issue presented here is MS vs freedom. MS does user interfaces. If your project is just a collection of standard components with a new coat of paint, the CE or XPe is fine for you. But if you want to innovate, linux is a must. With Linux you have the freedom to change what every you want (free speech). This freedom also allow you to really mess things up, which is why poor programmers do better with MS products, we all remember those VB programs. Control of all aspects of the project is important to create the best products.

    MS network code stack SUCKS. This is why linux shines for any project that requires networking.

    The choice between MS and Linux is a choice between cookie cutter projects and real innovation.

  77. prg says:

    "Embedded systems developers put a high value on a vendor that has a stable, successful, _proven_business_model, because they must _rely_ on that vendor …" [empphasis added]

    It is precisely because of the "proven business model" of MS that I will not _rely__ on them. Use them if I must, perhaps, but been there, done that too many times to _rely_ on them.

    After sufficient penetration and market share those legos get more expensive and simultaneously less adequately supported without additional $.

    Of course, if what you want is a component set suitable for these titles, be my guest.

    "RTOS Programming for Dummies"

    "Master RTOS Programming in 20 Days"

    "Secrets of CE Programming"

    "Hidden Code Interaction with Public Components of Windows CE"

    "Understanding the Proprietary Code of CE" (published by Microsoft Press)

    Live and learn.

  78. Pfff says:

    I cannot believe so much narrowmindedness here.

    There are PLENTY of XPe/CE devices available for sale, enterprise, etc… Maybe people have better things than to being a loser and brag about their OS preference crap.

    Get on with life, there are better things to do in life than advertize one’s favourite OS. XPe/CE makes sense for a lot of companies, products, etc.. the same wayfor linux. And in the end, it’s not cost+source that counts.

  79. Thom says:

    Yet more Microsoft propaganda. I did a search on microsoft.com for the word Linux to see how much of what was returned were articles by Microsoft trying to make absurd claims about Windows’ superiority. As expected, most of the results fell into this category. Unfortunately, there are people who’ll buy into this garbage.

  80. Mike says:

    <takes deep breath>

    ok, let me walk through some of the recent issues raised on this ever growing post…

    Pfff – yes, exactly, devices like the Gizmondo, Kuka Robot, Philips Medical Systems, Bernina Sewing Machine, Pocket PC, Smartphone, Portable Media Center, MSNTV2, GPS/Navigation systems, robotics, and the list goes on…

    Why would companies like Siemens, Kuka, Philips, and a host of others use Windows CE and Windows XP Embedded in their products – you would think that they have explored the possible options (MS, Linux, QNX etc…) – so why would they settle on using Microsoft embedded products ?

    TheProf – Embedded operating systems are not just about user interfaces, a large number of embedded devices are ‘deeply embedded’, completely headless, telephone switch monitoring systems, residential gateways, robotics are good examples of this – don’t compare Windows CE and Windows XP Embedded with Desktop Windows – These are operating systems which are suited to embedding in a wide range of systems, some of which have a UI, others do not – and those that have a UI don’t need to take on the Windows Shell, this can be replaced with a completely custom shell.

    Jose – <Snip>Admit one thing: Microsoft only sells well where people are ignorant about some field. Microsoft sells finished and closed solutions and ignorant/lazy people like this. </Snip> – Let’s step back and look at some of the customers that are using Windows Embedded technologies – Siemens, Philips, Motorola, Kuka, HP – are you suggesting that these large and well known companies are ignorant and lazy ? – Also, you flashed your iPaq with Linux, now what? – what breadth of applications do you have available for the Linux iPaq, take a look at sites like Handango for the ever expanding set of applications available for the Windows Mobile Platform.

    Also, the application development tools for Pocket PC and Smartphone are FREE to download from the Microsoft web site (do a search on "MSN Search" or "Google" for "eMbedded Visual C++ 4.0" – the Pocket PC and Smartphone devices expose a public API set which is standard across all of the devices, this makes it easy for application developers to write code that runs on HP, Intermec, Toshiba, etc… – as an application developer you have a choice of Win32, MFC, ATL, and C#/VB to write your code – in this case the "platform" is open for users and developers to add new applications and functionality – just look at the breadth of applications and accessories for Pocket PC out on the market… is there a similar set of applicaitons and peripherals that work with your Linux iPaq ?

    Anony – it’s true that Pocket PC and Smartphone have a consistent user interface, and this is by design – as a user you can use any Pocket PC and Smartphone and be familiar with how to use the device (the same principal as Desktop Windows). Windows CE and Windows XP Embedded are componentized operating systems – you get to take the components and technologies you need for your device, if you don’t need certain features then you leave them out – if you need MSMQ, Web Server, Networking, or other technologies then you include them. As far as the look and feel of the operating system is concerned you don’t need to use the Windows UI – this can be completely replaced with your own shell or stand-alone application (think of a Retail Point of Sale device, or ATM, or Travel/Information Kiosk) – the UI controls can also be modified to look and feel the way you want them to look – take a look at http://www.codeproject.com and some of the .NET Framework controls (I like the Aqua button control).

    DragonSt0rm – Windows CE and Windows XP Embedded are both componentized operating systems, think of them as being large buckets of Lego – if I want to build a bookshelf I can do that, if tomorrow I want to build a dog house I can also do that – there’s no restriction on what I build using the operating system or tools.

    Why does Microsoft have two embedded operating systems ? – think of this as being a layered approach, Windows CE is a small footprint, real-time operating system that runs on multiple processor cores, has built-in power management etc… it’s good for real-time systems, and mobile/handheld devices (also for thin clients, Retail Point of Sale, consumer electronics, and a host of other device catrgories) – Windows XP Embedded is based on Windows XP Pro, but componentized, it’s easy to plug together the components and technologies you need for a device without needing to know the underlying o/s dependencies or needing access to source.

    The comment about making a final device open is an interesting one – devices like Pocket PC are open for hardware and software developers to add value (this is also true of Desktop Windows), however, some manufacturers don’t want you to modify their devices, think of the Playstation, GameCube, Motorola Set Top Boxes – how open are these platforms ? – I have a Media Center PC at home that I’m constantly fiddling with, adding new hardware, writing and testing code – I’m happy fiddling like this, but I’m not sure the family is happy with he media center being offline while I’m pulling it apart, adding bits and then putting it back together – in the case of the Motorola Comcase Set Top Box the update process is handled by Comcast, as an end user I don’t have access to the underlying hardware or software, and that’s just fine.

    One more time so that this is clear to everyone – Windows CE and Windows XP Embedded are Embedded operating systems, you, as a systems developer choose the operating system that meets your needs based on a number of data points, real-time, footprint, processor support, development tools, training, support, hardware and software partners etc…

    </takes deep breath>

    – Mike

  81. Mike says:

    How’s this for an idea…

    Is there an Embedded Linux developer in the Seattle/Redmond area that would like to spend a few hours at Microsoft walking me through the typical setup needed to build an embedded Linux device, the tool chain, the operating system bits, and then how to configure, build, download, debug, and write applicaitons for a typical embedded device – we could then write up the experience and compare with the same process using Windows CE and Windows XP Embedded.

    To get you started here’s a couple of videos you might want to check out that walk you through the process using Windows CE and Windows XP Embedded…

    Windows CE – http://msdn.microsoft.com/embedded/getstart/basics/tutorialsce/default.aspx

    Check the "Building a Microsoft Windows CE .NET Device"

    With Platform Builder it’s easy to configure, build, deploy, and debug a Windows CE .NET image. This tutorial takes you through all of these steps in under 30 minutes. (25:45 minutes)

    and Windows XP Embedded – http://msdn.microsoft.com/embedded/getstart/basics/tutorialsxpe/default.aspx

    "Building a Windows XP Embedded Device

    With the Windows Embedded Studio tools"

    building a Windows XP Embedded image is easy. In less than 30 minutes this tutorial takes you through the steps for analyzing the underlying hardware, creating a custom component and configuring, building, deploying and testing the Windows XP Embedded image. (27:50 minutes)

    Also, check out application development options for Windows CE and Windows XP Embedded (also on the Windows XP Embedded Tutorials page)

    "Windows Embedded Application Development"

    Get an overview of application development options for Windows Embedded operating systems. This demo-heavy tutorial walks you through the development process for a "Scribble" application written in Win32, MFC, and C#. It also explains the advantages and disadvantages of each method of application development. (1:07:45 minutes)

    Anyone interested ?

    – Mike

  82. DoesntMatter says:

    <Mike>

    Let’s step back and look at some of the customers that are using Windows Embedded technologies – Siemens, Philips, Motorola, Kuka, HP – are you suggesting that these large and well known companies are ignorant and lazy ? – Also, you flashed your iPaq with Linux, now what? – what breadth of applications do you have available for the Linux iPaq, take a look at sites like Handango for the ever expanding set of applications available for the Windows Mobile Platform.

    </Mike>

    — So are you saying – a) Those companies who did not go with MS for their embedded device are lazy, ignorant, bunch of jokers? b)There is dearth of applications for Linux? (Have you _ever_ used any Linux based handheld (Sharp Zaurus), Have you ever heard of Konqueror/E, Opera-Embedded, Hancom Word?) Just because you are ignorant does _NOT_ mean non-existence.

    Haven’t you understood yet that people who use open standards, platforms, _CARE_ about freedom, quality and cost? Will you or anyone here drink a FREE BEER if it had rotten smell or if it induced deaths/paralysis? I am sure not. People do _CARE_ about quality, usability, suitability and cost when they create/consume something.

    And there are people (I will refrain from diagnosing their illness or weakness) who are simply ignorant, have no knowledge, who are readily sold to marketing myths – they just _feel_ comfortable by paying for anything before they consume it.

    You first made baseless claims for which you had no proofs / experience. Then people educated you – they testified here. Then you go one more step further and say because some people use Windows CE, rest all people and os’es are piece of crap. You conveniently forget that same _flawed_ logic if applied other way around results into people using Wince and Win CE itself are crap because there are people using QNX, Linux…

    Enough of nothing.

  83. Mike says:

    doesntmatter – at no time have I stated that all other operating systems are not worth investigating – developers should explore all the options before making a decision on which operating system and development tools/languages are the right choice for their device.

    Microsoft has two (three if you count SPOT) embedded operating systems which developers could consider for their embedded device – looking back on Jose’s comments about people only using Microsoft products because they are ignorant or lazy doesn’t make any sense to me.

    I’m willing/interested in spending some time with an embedded Linux developer in the Redmond/Seattle area to get a better understanding of the embedded Linux developer tools, operating system, and development process so that I can better compare the options.

    – Mike

  84. A few days ago I posted an article from Cots Journal Online which discussed some of the shortcomings of Linux use in embedded systems. Based on some of the comments posted back to the blog it would appear that Linux is used because of the community whi…

  85. DoesntMatter says:

    Mike – I was a little bit too rude. Sorry about that. I completely respect your skills and knowledge wrt embedded Windows. But I did find it a little non-sense that you do not seem to appreciate people telling you that whatever you mentioned in this as well as the previous post is not at all true. Linux is not behind Win CE or XPE in any of the areas – it has good stability, reliability, interrupt latency and it does have many applications – just search or look at Trolltech’s Qtopia.

    In fact it is advantegeous to use Linux in many places as proved in many of the posts. Now only if you can provide a single business case (realworld will be good, hypothetical is fine too) with real data and statistics wherein Win CE will be a significantly more beneficial choice – either technically or cost wise or quality wise, not just because some one chose it. We can then end this discussion peacefully after you convince us that there is atleast one such case. (And then we will work to make Linux even better so next time you checked you have no such case ! 🙂

    Thanks!

  86. Mike says:

    Take a look at the following page http://msdn.microsoft.com/embedded/getstart/choose/whywinemb/whyce/default.aspx – This outlines some of the findings of Embedded Market Forecasters and how "real world" embedded development compares between Windows CE and Linux.

    Take a look at this case study from Siemens – http://www.microsoft.com/resources/casestudies/casestudy.asp?casestudyid=12216 – this shows why this large multi-national company chose Windows CE for their SimPad device.

    – Mike

  87. Gomluka says:

    "Why would companies like Siemens, Kuka, Philips, and a host of others use Windows CE and Windows XP Embedded in their products"

    Microsoft have already bullied and threatened governments into not adopting the free and better alternatives. I’m sure other companies aren’t free from this "conditioning".

    Another example of preventing competition or diversity: Why do most schools have Microsoft software on their workstations? Because Microsoft give away this software for free to ensure that all students are brought up only using Microsoft Windows/Office.

    In the end, the reason why Microsoft is everywhere is because they make sure that alternative avenues appear unattractive, and taking that route will have unfavourable consequences.

  88. JJ says:

    One big argument against choosing Windows as an embedded OS is Microsoft. No matter what technical merrits there may be you would be dealing with a monopoly that is not treating competitors very nice and are hoarding patents for its own monetary gains, etc etc.

    I don’t give a damn how or bad windoes is, it’s a microsoft product and that in itself is more than enough for me to not even consider using it.

  89. Mike says:

    Gomluka, your comment about "free software" to schools is off-topic, I work in the Embedded group at Microsoft, a simple "MSN Search" (or Google if you prefer) for "Microsoft Academic" found the the MSDN Academic Alliance page – http://msdn.microsoft.com/academic/program/overview/

    Here’s an extract from the page.

    The MSDN Academic Alliance provides faculty and students with the latest developer tools, servers, and platforms from Microsoft at a ****very low cost****. Member departments may install the software on their lab machines for instructional and research purposes, and permit their faculty and students to install the software on their personal computers.

    Linux is free, right? If so, surely the schools have a choice between Microsoft software and Linux ?

    While we’re on the subject of Academia, if you’re a student and are interested in taking part in an embedded devices competition then take a look at the following page – http://www.windowschallenge.com/

    – Mike

  90. Grant says:

    Mike,

    Let’s get this straight. I fail to see the difference between the following:

    + Picking your hardware requirements; selecting/removing the relevant "components" from your WinCE/XPe system; writing your own application and interface (if required) using well known and pretty well documented APIs and methods; "uploading" to your target device.

    + Picking your hardware requirements; selecting/removing the relevant kernel/system modules from LinuxEmbed system; writing your own application and interface (if required) using well known and pretty well documented APIs and methods; "uploading" to your target device.

    Under neither development method would you need an "indepth" knowledge of the kernel. I’m sure most developers can identify the correct "component/module" for the correct system/device.

    Imagine we’re developing a headless, broadband-enabled, PSTN compatible, X-10 aware home security appliance. Even though I plan to focus on 1 component, let’s make this more real – flesh it out a little: sensors to monitor ambiant room pressure/temperature with pre-programmed routines to detect sudden changes in either/both (so it ignores the approaching storm, but notices the door opening); X-10 interfaces to control lighting/AV equipment on fuzzy scheduling when in "holiday" mode (for example, so lights are turned on at *some point* between 1:00 am and 6:30 am to simulate someone going to the loo); embedded web-server to display (hopefully the lack of) activity so you can check on your premisis whilst not there; configuration through a web interface available on the LAN for the "advanced" model, by an engineer through RS232 for the "basic" models. This could easily be developed on x86 (I know that other architectures might be better suited to some of the tasks, but x86 is a nice architecture :oD). Taking Linux vs XPe in this example, let us consider the very well known NIC chipsets by RealTek. Any developer worth their salt will be able to identify that a chip with "RealTek 8139" stamped all over it is likely to be a RealTek 8139 network chip. How hard would it be for them to select "8139too" as the most appropriate "driver"? Any harder than selecting "Network Interface Driver for RealTek 8139 chips"? I am no kernel hacker, but I understand how drivers/modules work and that you really don’t need to hack about *at all* if you don’t want in order to get almost anything to work.

    In short, your comment of "they could be spending time configuring an operating system from a set of catalog components, customizing where needed and shipping devices" seems equally applicable in either case.

    You claim that you want "to provide a comparison of Windows CE, Windows XP Embedded and Linux" but I cannot actually see any comparisons made. So far I have seen you tell us "categorically" (my interpretation, not a quote) that WinCE/XPe is always the best system to use. Tell me, please, where can I find your positive comments about Linux? No one system can be wholely better than another, and consequently no one system can be wholely worse than another… there is no such thing as a perfect OS (despite what your bosses may be telling you). If this is to be a true *comparison* then there will undoubtedly be areas in which Linux is actually a better choice that WinCE/XPe. Let’s not take silly examples of areas where WinCE/XPe isn’t even a valid option (for example on processors which aren’t supported by WinCE/XPe). Let’s see a point-for-point "comparison" of how, at the functional level, a system can be implimented under both WinCE/XPe and Linux.

    I fully understand that as a Microsoft employee it is potentially difficult for you to make such comparisons, but I, for one, would be more comfortable in the knowledge that you have, or indeed *can*, actually develop(ed) for embedded Linux systems as well as embedded WinCE/XPe systems. Let’s call it "evidence of your ability to fully appraise a situation through prior experience and knowledge".

    Grant.

    PS. I was premature in my closing sentance before:

    Be careful who you insult – embedded systems developers are potential customers. Don’t piss us off.

  91. Mike says:

    Hi Grant,

    Thanks for the x10 example – in the case of Windows XP Embedded a developer won’t need to look at the x86 reference board, you run an application called "Target Analyzer" which produces an XML output file which contains a listing of the hardware found on your reference board – this XML file can then be imported into the Windows XP Embedded component database and then selected like any other component.

    So, in the example above the steps would be.

    1. Run TAP (Target Analyzer)

    2. Import the XML file into the component database

    3. In Target Designer (the XPE build tool), select the XML Hardware component

    4. in the Target Designer UI remove any H/W items you don’t need (floppy, CD-Rom, System Speaker) etc…

    5. add any additional components you need (like your application)

    6. build and deploy

    I’m very interested in knowing more about Linux and therefore providing a complete comparison of Linux vs. Windows CE or Windows XP Embedded – which is why I’ve suggested that I meet with a Linux developer to walk through the development process – Ideally I’d like to film the meeting and also run through a typical Windows CE and/or Windows XP Embedded build/debug/deploy process.

    – Mike

  92. Ryan says:

    The whole time I was reading some of the posts on this forum, I saw numerous mentions of the freedom of linux. And the community development. Did Mike respond to any of these things? I didn’t notice any of his responses.

    Can I take the whole entire Windows CE codebase that I LICENSE FOR MONEY from Microsoft, post it online, and form a community around it? With Windows CE, are ideas and improvements to the codebase that are made by third party companies shared online between companies and projects so that I can benefit from Company X’s knowledge?

    Oh, and did you ever think that companies that might go with CE or XP decide not to because of Microsoft? Here are a list of reasons why they might do that: Novell, Netscape, Sun, WordPerfect, IBM (with OS/2) (which has a hell of a lot more muscle than some tiny little unheard of company). The list goes on and on, feel free to add to it. All of them were partners with MS in some way, but did not compete with MS as MS had no products in that area (yet). And then MS moved in on those markets and killed or damaged those companies one by one. If I am making some kind of set top box and MS decides to move into that market and become my enemy, do I want that same company to have absolute control over the future of the software platform I have chosen?

    Maybe you are just too ignorant to realize that after years of MS bullying the whole entire industry, people are beginning to realize that it is best to just avoid them.

  93. Taran says:

    The bottom line is that for an embedded operating system, customization is required to assure that the system works well with the hardware. The ability to change the source code provides this malleability which every single Microsoft operating system fails to do – or if they do, they claim ‘prima copyright/patent’ with the code. You’d have to be pretty stupid to (1) buy a license for the code, (2) Modify the code, (3) Buy the next release with the changes you made, if they are there, (4) Pray that updates to the OS don’t break your code.

    Err.

    So it’s apples and oranges.

    Now, if you really want a fair comparison, GPL a Microsoft embedded operating system and see which one is chosen. Linux has user groups, Microsoft has support groups. 🙂

  94. daddmac says:

    I use my system Linux desktop for a lot of things, though I’m not a developer of embedded code.

    But, it seems there are a lot of comments about the relative "openness", or not, of Microsoft products.

    Mike, you have gone to great efforts to point out how comparatively open Microsoft is being, in comparison to Linux, and all the other "stuff" that goes with it.

    Why, when I tried to open the links to the videos, did Microsoft refuse to let me play them unless I was using MS Media Player? I can play *any* format, if they will only send it to me. This, I think, makes the point this very long list of responses has been trying to explain to you.

    daddmac

    ~~~~~~~~~~~~~

    Take a look at the following page http://msdn.microsoft.com/embedded/getstart/choose/whywinemb/whyce/default.aspx – This outlines some of the findings of Embedded Market Forecasters and how "real world" embedded development compares between Windows CE and Linux.

    Take a look at this case study from Siemens – http://www.microsoft.com/resources/casestudies/casestudy.asp?casestudyid=12216 – this shows why this large multi-national company chose Windows CE for their SimPad device.

    – Mike

  95. Mike says:

    daddmac,

    We’re working on making the videos downloadable (like MSDN Channel 9), the video is currently a WMV video stream.

    BTW, do any of you watch the MSDN Chanel 9 videos ? – do you find these useful ?

    – Mike

  96. daddmac says:

    Mike,

    I appreciate the effort to make the videos downloadable, and look forward the opportunity to use them.

    However, I only have this issue with Microsoft sites that insist on only feeding Microsoft’s Media Player, focusing on what client the user has (not) chosen instead of making the content available.

    In all honesty, I understand taking a positive tack (as in sailing) on the topic. But, I believe what is frustrating those reading this is the inability of someone who favors Microsoft technology to acknowledge the weaknesses of it, as Linux and other OS users seem more willing to acknowledge the weaknesses of their preference as well as its strengths.

    Whether the practice of not "playing nice with other media players" is changing or not, do you see the point about the *attitude* perceived in those practices, or not? Or, how it contrasts with the attitude of "community" attitude OSS fans enjoy?

    daddmac.

  97. WhatNow says:

    daddmac: Linux users acknowleding the weaknesses of their preference ?

    What? Are you on crack ? Linux users will largely point out the FLAWS of Windows and other OSes they don’t like, and only mention the "good" qualities of Linux, without even doing a fair comparison of feature for feature.

    I think you are living in a different reality than the real world.

  98. Justfair says:

    Mike,

    look there:

    http://www.computer.org/software/homepage/2004/sept-oct/linux.htm

    Although, decision to go with Linux/RTLinux have been taken 3 years ago(after a bad experience with Win NT) I am not sure they would change it today; I would just recommend them to replace RTLinux with RTAI/LXRT in order to make development easier !!!

    Justfair

  99. daddmac says:

    Okay, I acknowledge that weakness, now…

    Whether the practice of not "playing nice with other media players" is changing or not, do you see the point about the *attitude* perceived in those practices, or not? Or, how it contrasts with the attitude of "community" OSS fans enjoy?

    daddmac

  100. Grant says:

    WhatNow: "What? Are you on crack ? Linux users will largely point out the FLAWS of Windows and other OSes they don’t like, and only mention the "good" qualities of Linux, without even doing a fair comparison of feature for feature."

    You mean much like this article is doing, then?

    I may be very much mistaken in my interpretation of my experiences over the past 5-6 years, but I have experienced *many* Linux peolpe (myself included) admitting the short-comings of Linux, especially in the hardware arena. Yes, we may well point out the *reasons* for such short-comings, but we are admitting them.

  101. Anon E. Moose says:

    Hi Mike,

    Currently, big companies such as HP, Motorola, Siemens and Philips are starting to get into Linux for real. To claim these companies for Microsoft exclusively is telling less than half of the truth.

    I actually worked at Philips, including some time at their Medical Systems division and I know a lot about the company in general as I live in Eindhoven, NL, where Philips is based and where its Research division is located.

    I know for a fact that several years ago, Medical Systems extensively used VxWorks and Solaris to control their products and java for interface design. Since then, Linux has cannibalised VxWorks’ and Solaris’ traditional footholds in the marketplace. I estimate that it will be much easier for Philips to move over to Linux wide-scale than to re-engineer to embedded Windows.

    Also, Philips Research has lately been posting a lot of job offers requiring embedded systems and Linux kernel development experience. I can clearly see where that is going.

    So maybe you know some bits about the consumer "toys" that Philips Medical Systems has been outfitting with Win CE user interfaces. But I know that these are not very representative to their full product spectrum at large and their development efforts at depth.

    I sincerely doubt your suggestions as to Philips "choosing" Windows over Linux. As for the other companies, I have less first hand knowledge. I am tempted to draw an analogy with newspapers, that always seem very credible in their reporting, except for when they report on things I actually know about and then my mind is boggled with the biased nonsense and factual inaccuracy of the report.

  102. Anon E. Moose says:

    Hi Mike,

    It’s me again. I’m trying to read your blog using the ELinks web browser. More than 80% of the time, the last half of the page is binary gibberish. I suspect that something is not well with IIS 6.0 and gzip transfer encoding (from the http headers). I never see this problem with other web servers.

    I would like to investigate the source of the problem, but I can’t. It’s closed.

  103. Jose Felicio says:

    <Mike>

    Jose – <Snip>Admit one thing: Microsoft only sells well where people are ignorant about some field. Microsoft sells finished and closed solutions and ignorant/lazy people like this. </Snip> – Let’s step back and look at some of the customers that are using Windows Embedded technologies – Siemens, Philips, Motorola, Kuka, HP – are you suggesting that these large and well known companies are ignorant and lazy ?

    </Mike>

    No, I suggest that they made commercial agreements to guarantee Microsoft presence in their products, like Microsoft made with some hardware makers to put PocketPC on mobile phones.

    Some of these same companies also have linux-based projects/products, like

    http://www.pcworld.com/news/article/0,aid,119173,00.asp

    even with existence of the "superior" MS alternative:-)

    There are may other companies using linux for embedded development:

    http://www.linuxdevices.com/

    <Mike>

    Also, you flashed your iPaq with Linux, now what? – what breadth of applications do you have available for the Linux iPaq, take a look at sites like Handango for the ever expanding set of applications available for the Windows Mobile Platform.

    </Mike>

    Yes, most of them proprietary, shareware or pay-ware.

    See how Fluke used an iPAQ with linux to make a portable network tester

    http://linuxdevices.com/articles/AT9528317648.html

    <Mike>

    With Platform Builder it’s easy to configure, build, deploy, and debug a Windows CE .NET image. This tutorial takes you through all of these steps in under 30 minutes. (25:45 minutes)

    </Mike>

    Yes, Microsoft sells this type of facility but it is irrelevant when you have competent technical staff.

    Like was said, Microsoft only sells a lego-like embedded operating systems which let you mount easily but don’t let you make deeper modifications. Childrens like Lego system but adults prefer to make houses with wook, stone and cement.

  104. Jose Felicio says:

    Hey daddmac,

    You can view M$ streaming using mplayer or xine with win32 codecs installed into linux (which is no completely legal because of M$ EULA).

    The problem with Microsoft is that it is Microsoft-centric. All marketing and technical documents are in proprietary .doc format, videos and coded using Windows Media formats.

    Microsoft only make free (as beer) Microsoft Office viewers for windows x86 platform.

  105. EeJay says:

    Real men don’t use Montavista

  106. Mike says:

    Jose,

    I’m not suggesting that companies like Philips, or others are exclusively using Windows Embedded products, but they are using Windows CE/XPE, and there must be a reason for them choosing to do so.

    As far as Lego is concerned the point I’m making here is ongoing abstraction both in the commercial application development space and in the embedded operating system space – as an application developer I **could** write everything in assembler – the code would be small, fast, would do the job I coded it for, but the application would take FOREVER to write – today’s (Windows) application developer has a choice of many languages, Fortran, PL1, Prolog, ADA, C#, VB, an extensive list of languages – in many cases the binary application generated by the development tools relies on a set of runtime libraries (.NET Framework, MFC, and others).

    Application developers already use Wizards and runtime libraries to accelerate their products to market – calling a SOAP server across the internet using native operating system API’s would take some time to code up – calling the same SOAP server in C# or VB (or any of the managed languages) is 2 lines of code.

    How does this relate to the embedded space ? – Having development tools that take an embedded operating system and provide wizards and tools that make it easier to configure and release a product is a good thing, isn’t it ?

    – Mike

  107. Jose Felicio says:

    <Mike>

    I’m not suggesting that companies like Philips, or others are exclusively using Windows Embedded products, but they are using Windows CE/XPE, and there must be a reason for them choosing to do so.

    </Mike>

    They can use Windows technology when there are commercial interests (or pression…) but most of these big companies are seeing Microsoft as a rival who can use own proprietary technology to be an unfair competitor.

    Microsoft is entering year by year in many new areas like games, entertainment, mobile phones, etc.

    Do you will buy technology from someone who can ruin you using the same technology, knowing all hidden APIs and having cash to sell products for low prices to kill competition ?

    <Mike>

    How does this relate to the embedded space ? – Having development tools that take an embedded operating system and provide wizards and tools that make it easier to configure and release a product is a good thing, isn’t it ?

    <Mike>

    Yes, because of this there are already many companies making developer tools and kits to ease the use of linux in embedded solutions.

    And what will be the difference from MS offer ? Most of these linux kits don’t need runtime licenses and some of them are totally royalties-free because use exclusively free (like freedom) technologies.

  108. Mike says:

    Microsoft is software company, we provide software for desktop PC’s and servers, we also provide embedded operating systems for embedded devices – it’s true that Microsoft does provide customized versions of Windows CE for Automotive, PDA, and phone devices, Retail Point of Service (coming soon), and other platforms – some manufacturers decide to take these "kits", others decide to build their own implementation of a device – there are examples of cell phones based on Windows CE that don’t use the Smartphone or Pocket PC Phone Edition adaptation kits – as an embedded device builder you have a choice of operating systems (and there are plenty out there), if one of the Microsoft adaptation kits meets your needs then why not use this in your device ?

    – Mike

  109. DragonSt0rm says:

    <Mike>

    if one of the Microsoft adaptation kits meets your needs then why not use this in your device ?

    </Mike>

    1. Because I can do the job with Linux or BSD without having to pay any licence fee for each device, neither for developement tools.

    2. Because I do not want to be locked into a proprietary technology, making myself dependentby it.

    3. Because if my idea it is a huge commercial success and MS decide to enter the same market, they may decide to blow me out of the market

    by making changes into license or incompatible updates.

    4. Because with Linux I can tweak the kernel and/or any component of the OS as much as I want to meet perfect my needs. The results are always going to be better when you have the power to do exactly what you need to.

    5. Because of the 1/3 security rule (c) DragonSt0rm:

    "If your organization want to be able to operate under heavy attack, you must not have more that 1/3 of the systems running on the same platform and each server have to be mirrored by another developped into a technology as different as possible".

    So, untill Windows is going to have a market share less than 33.333% it may be considered unwhise from the security point of view to do any more Windows deployement.

    6. Because any advancements into the science was done by cooperations with others and not by law suits. I may want to contribute to that for the benefit of humankind.

    7. Because I can analyse the code to see that there is no trojan horse, spyware or controversial NSA key build in the OS kernel.

    8. Because MS developpement tools are well designed to have one-way compatibility, preventing you from using them for cross platform developpement. Cross platform is also essential for security (see 1/3 rule).

    and 2 more (just to be 10) I let them as home work for you 🙂

    Have a nice day,

    DragonSt0rm

  110. Wesley Parish says:

    I’ve just read through these comments, and thought I might pass on some observations of mine.

    In 1997 I heard about Microsoft licensing the WinNT 4.0 to universities for a major price similar to the then-current academic Unix licenses, and being at University at the time, I thought I’d like to have a look. I considered asking my then current university to get a license. I also had several copies of Linux cdroms and one BSDisc, plus three 4.4BSD cdroms from different vendors. I thought about it, and looked at my cdrom collection, and thought nah, no point. If I can’t get what I want about OS education from my current cdrom collection, I’m a klutz, getting others to throw good money after bad.

    I standardized on Linux. I then discovered an interesting project – TCDS – Traffic/Collision Detection Systems. I discovered I had most of the requisite components in the GNU and BSD software collections – using fping for detecting other aircraft in the network; fingerd for getting current location details from other aircraft – pull rather than push; and GNATS – a bug-tracking system, adaptable for tracking locations as well, etc.

    The reason why I didn’t go through with it was twofold – Linux then didn’t have a large choice of options for hard real-time; and I was relying on GPS for location, and Trimble – the local (Christchurch, NZ) GPS manufacturers – for reasons quite unknown to me, weren’t forthcoming with API details. </ !shrug — we live and learn> 😉

    For perfectly good reasons – latency, etc – I saw GNATS, fingerd, fping, etc, residing in the hard real-time space, not in the secondary user space it would’ve wound up in if I had used the hard real-time kernel with Linux as topping, that was the only option at the time.

    So at the time Linux wasn’t suitable. If I had’ve known about eCOS or NetBSD’s real-time/embedded capabilities at the time, I probably would’ve used it – but on my tight budget, QNX and LynxOS – my other two favorites – weren’t options.

    One other reason I suppose I should add why I’m still in favor of Linux in the embedded space, is my voluntary experience with administering a MS Windows network in a community center’s Neighbourhood Network. It’s opaque. We’re getting a MacOS X server, which will lighten my load, because I can at least get ahold of the source to debug any problems that arise – but as far as our NN’s users are concerned, the OS _is_ embedded. I don’t like opaque software – like I don’t dive into muddy water. The reasons should be obvious.

  111. Wesley Parish says:

    I’ve just read through these comments, and thought I might pass on some observations of mine.

    In 1997 I heard about Microsoft licensing the WinNT 4.0 to universities for a major price similar to the then-current academic Unix licenses, and being at University at the time, I thought I’d like to have a look. I considered asking my then current university to get a license. I also had several copies of Linux cdroms and one BSDisc, plus three 4.4BSD cdroms from different vendors. I thought about it, and looked at my cdrom collection, and thought nah, no point. If I can’t get what I want about OS education from my current cdrom collection, I’m a klutz, getting others to throw good money after bad.

    I standardized on Linux. I then discovered an interesting project – TCDS – Traffic/Collision Detection Systems. I discovered I had most of the requisite components in the GNU and BSD software collections – using fping for detecting other aircraft in the network; fingerd for getting current location details from other aircraft – pull rather than push; and GNATS – a bug-tracking system, adaptable for tracking locations as well, etc.

    The reason why I didn’t go through with it was twofold – Linux then didn’t have a large choice of options for hard real-time; and I was relying on GPS for location, and Trimble – the local (Christchurch, NZ) GPS manufacturers – for reasons quite unknown to me, weren’t forthcoming with API details. </ !shrug — we live and learn> 😉

    For perfectly good reasons – latency, etc – I saw GNATS, fingerd, fping, etc, residing in the hard real-time space, not in the secondary user space it would’ve wound up in if I had used the hard real-time kernel with Linux as topping, that was the only option at the time.

    So at the time Linux wasn’t suitable. If I had’ve known about eCOS or NetBSD’s real-time/embedded capabilities at the time, I probably would’ve used it – but on my tight budget, QNX and LynxOS – my other two favorites – weren’t options.

    One other reason I suppose I should add why I’m still in favor of Linux in the embedded space, is my voluntary experience with administering a MS Windows network in a community center’s Neighbourhood Network. It’s opaque. We’re getting a MacOS X server, which will lighten my load, because I can at least get ahold of the source to debug any problems that arise – but as far as our NN’s users are concerned, the OS _is_ embedded. I don’t like opaque software – like I don’t dive into muddy water. The reasons should be obvious.

  112. daddmac says:

    Jose,

    Thanks for the suggestion. I currently use mplayer with the Windows dll’s on the system I dual boot with Win2K. I use Win2K to maintain/grow my MS admin skills, because Win admin is what I do for a job. For personal use I am %100 Linux (RH, Suse).

    Mike,

    Whether the practice of not "playing nice with other media players" is changing or not, do you see the point about the *attitude* that can perceived in those practices by the OSS community, or not? Or, how it contrasts with the attitude of "community" OSS fans enjoy?

    daddmac

  113. Dan Kegel says:

    I think it comes down to trust and

    cost. We can never trust Microsoft

    to do what’s in our best interest,

    and we can always expect to have to

    pay Microsoft a constant stream of

    money. Thus if Linux is at all suitable

    for the task, it’s better to use Linux

    than Windows. And, increasingly,

    Linux *is* suitable to the task.

    Linux is cheaper than Windows

    in just about any application where

    the users haven’t already bought into

    the Windows world. Yes, Linux is not

    yet as polished, but that’s changing

    quickly.

    Face it, chum, you’re working for a

    company that’s seen its best days

    come and go already. Give it a rest.

  114. Mike says:

    Daddmac,

    I must admit that I’d not thought about other media players not being able to view the .wmv files – what format would you like to see the videos in ? – Let me see what I can do to make the files available in another format…

    – Mike

  115. daddmac says:

    Mike,

    WMV is fine, as is anything else for which there’s a decoder! But…

    The Microsoft server (http://www.microsoft.com/seminar/shared/asp/view.asp?url=/seminar/en/accosconf07152004/manifest.xml&rate=2) refused to feed the file unless I was using the MS Media Player plug-in.

    "We’re sorry, the page you are viewing requires a media player plug-in that is not available for this browser. Plug-ins are available for Netscape 4.7x and the latest version of Microsoft(R) Internet Explorer.Internet Explorer"

    My browser can play *any* format, if the server will only send send the content. This, I think, makes the point this very long list of responses has been trying to explain to you.

    Microsoft seems to be saying it will send content only if *I* run *their* choice of browser (based on which browser their server code thinks I’m running, and if it uses their plug-in.)

    Whether the practice of not "playing nice with other media players/browsers" is changing or not, do you see the point about the *attitude* that can perceived by the OSS community because those (MS) practices ? Or, how it contrasts with the attitude of "community" OSS fans enjoy ("It’s none of my business what tool you use to view my content, just enjoy it")?

    daddmac

  116. Jose Felicio says:

    daddmac,

    I can view wmv videos embedded in homepages using mozilla/firefox, mplayer and mplayerpug-in

    http://mplayerplug-in.sourceforge.net/

    It is funny that Microsoft uses only your technologies (that only works in windows platform) to do marketing to convince people change to its products…

    I think Mike should say to MS marketing guys that there are another operating systems and multimedia technologies and formats on Earth, like Unix, Linux, MP3, MPEG2, MPEG4, etc.

  117. Jose Felicio says:

    daddmac,

    Sorry. I tried to see the movie

    http://www.microsoft.com/seminar/shared/asp/view.asp?url=/seminar/en/accosconf07152004/manifest.xml&rate=2

    using Mozilla and mplayerplug-in on linux and received this message:

    "We’re sorry, the page you are viewing requires a media player plug-in that is not available for this browser. Plug-ins are available for Netscape 4.7x and the latest version of Microsoft(R) Internet Explorer.Internet Explorer"

    And when I tried with Opera under linux (because Opera identifies as Internet Explorer) there are many javascript errors and I cannot see the video area…

    This page is using some stupid javascript to detect browser type and refusing to display video…

    This is a big reason to avoid Microsoft "standards".

  118. Paul Nicklin says:

    "if one of the Microsoft adaptation kits meets your needs then why not use this in your device ? "

    I think you’re a techy, and probably a good one.. but you really aren’t hearing the (or at least not acknowledging) *the* main message from the posters. Whatever the technical merits of Win CE/XPe vs Linux (or other open platforms), the decision on a platform has many business, political and financial factors. (Architecture is driven by Non Functional Requirements – and maintenance, cost, long term support etc are such requirements).

  119. Paul Nicklin says:

    "in the case of Windows XP Embedded a developer won’t need to look at the x86 reference board, you run an application called "Target Analyzer" "

    ..sounds good. Not available for WinCE though… of course being linux we could probably use Anaconda or Discover – they do pretty much the same thing (ok, no XML output but I’m sure someone could add that quite simply if they felt the cost benefit warranted it). I suspect most people don’t think a quick check of the board spec is too onerous. And of course the problems with wizards is that when they don’t have the right "spell" you have to start from scratch yourself.. and that is a real pain. eg Wizard refuses to recognise anything on the board – where do you start (Made up example..)

  120. daddmac says:

    Jose,

    I agree, the mplayerplug-in is very good. It works very well for the MS formatted content from most of the news and other sources, like stupidvideos.com (one of my favorites.) I only have problems with msnbc.com, microsoft.com, and maybe a couple of others.

    Also, mozilla.org has a list of several other plugins. I’ve used a couple of them with good results.

    I feel that Microsoft just needs to generate a better image, beyond the Microsoft faithful, script kiddies, and menu manglers. The railroad, steel, oil, phone, and big iron enterprises learned the hard way that it is better to respect the folks who constitute "mind-share." This can be, if the folks see MS as part of the solution in a heterogenous world.

    People don’t feel generous about a company’s name when they feel insulted for not wanting to be spoon-fed solutions. Desktop, embedded, or whatever…

    daddmac

  121. Paul Nicklin says:

    "in the case of Windows XP Embedded a developer won’t need to look at the x86 reference board, you run an application called "Target Analyzer" "

    ..sounds good. Not available for WinCE though… of course being linux we could probably use Anaconda or Discover – they do pretty much the same thing (ok, no XML output but I’m sure someone could add that quite simply if they felt the cost benefit warranted it). I suspect most people don’t think a quick check of the board spec is too onerous. And of course the problems with wizards is that when they don’t have the right "spell" you have to start from scratch yourself.. and that is a real pain. eg Wizard refuses to recognise anything on the board – where do you start (Made up example..)

  122. APenna says:

    Looks like this Blog has become quite popular:) Rather than me addressing the vast array of opinions I’d like to submit my thoughts in an overall dicussion based on the premises above. At this juncture, I don’t think one cannot dismiss the fact the embedded Linux has garnered popularity as an alternative to both PIHOSs and Windows Embedded.

    Selecting an operating system is one of the most fundamental decisions a device manufacturer can make for any given device design. Many device manufacturers are considering migration from an in-house, self-maintained, proprietary embedded operating system to a commercial embedded operating system; or from one commercial embedded operating system to another. If so, they are probably looking for a platform that will meet technical and business requirements; be brought to market rapidly at low, predictable costs; and provide flexibility and supportability throughout the device’s life cycle.

    Windows CE meets device manufacturer needs for an embedded operating system for many embedded device designs by providing:

    • A Mature and Complete Technology Portfolio. When device manufacturers choose Windows CE, they can meet changing customer requirements more rapidly, flexibly, and predictably with a mature and comprehensive embedded development platform, integrated development tool chain, and the latest innovative applications and technologies.

    • Low Device Life Cycle Cost. When device manufacturers choose Windows CE, they achieve low device life cycle costs and meet increasingly rapid time-to-market objectives, while managing predictable device life cycle development, support, and maintenance costs.

    • Business Model Alignment. Windows CE is based on a proven commercial software business model that aligns with manufacturer device life cycle needs with the industry’s largest partner ecosystem, low cost, extended operating system maintenance support, and a shared source program—all of which are based on a low upfront cost “shared success” revenue model.

    Mature and Complete Technology Portfolio:

    Windows CE enables device manufacturers to more rapidly develop devices, achieve richer device differentiation, and minimize vendor management and licensing costs by providing:

    • A rich, scalable set of componentized operating system applications and technologies.

    • Broad and professionally tested hardware support.

    • Familiar, powerful, and consistent development tools.

    In contrast, some other embedded platforms are not nearly as granularly componentized and operating system images are developed by manual subtraction of components. In such cases, operating system customization and footprint reduction is a generally more time-intensive process, compared to the additive approach in Windows CE. In addition, most other embedded operating systems include fewer value-added applications and technologies. Therefore, if device manufacturers want to include these types of applications and software features on their devices, they have three options that entail additional cost, whether realized through license fees or additional development time and expense: build them internally, license them from a handful of companies who support the platform, or find free versions (if available) and then port and modify them as necessary to meet device requirements.

    When device manufacturers choose Windows CE, they can rapidly and reliably incorporate device drivers and other hardware support on a consistent and professionally-tested basis across a wide range of the most popular embedded hardware platforms:

    In contrast, hardware coverage for other embedded operating systems is generally less broad-based and consistent. Device manufacturers, therefore, assume the cost of finding and porting or developing their own drivers. Moreover, pre-built and tested driver availability can be lower with hardware solutions that are tied to a particular operating system vendor or distributor, which then limits choice and flexibility.

    When device manufacturers choose Windows CE, they benefit from decades of Microsoft tool expertise, an application development community of over six million developers, and a fully integrated development environment that is based on rich, mature, and common APIs to accelerate operating system and application software development.

    Other embedded operating systems often lack mature and complete toolsets for building operating system images and developing applications, have multiple non-standard development environments, and lack a common API and rich programmability. As a result, other embedded operating systems also lack a large, experienced developer community. Developers who use other platforms often must purchase, build, or assemble multiple tools from various internal or external sources and ensure that they work together. Moreover, the operating system development tools are often command-line based, which may be challenging to newer developers and result in a longer development process. Application development tools for other embedded operating systems vary widely in quality and are much less widely used or familiar to the developer community. Therefore, it is often difficult to find skilled developers and existing applications for specific platform. Moreover, Java provides the only managed code development environment on other platforms that are in wide use today. The Java Virtual Machine, however, must be licensed and paid for separately at additional cost, usually on a per unit cost that ranges from $1 to $5 US.

    Low Device Life Cycle Cost

    When device manufacturers choose Windows CE, they achieve low device life cycle costs by effectively meeting increasingly rapid time-to-market objectives, while managing predictable device life cycle development, support, and maintenance costs. In July 2003, a third-party research firm, Embedded Market Forecasters (EMF), published Total Cost of Development: A comprehensive cost estimation framework for evaluating embedded development platforms. The report is the first study of its kind in the embedded industry to compare the total cost of development on different embedded operating system platforms. The report, commissioned by Microsoft, analyzed the results of a development experience survey of device manufacturers using Windows CE and XPe, and embedded Linux.

    According to the EMF model, the total cost of software development for any embedded device design can be considered as the sum of three separate costs: total fixed development costs, associated costs, and runtime costs. Overall the study concluded that Windows Embedded has a 75% advantage over embedded Linux.

    Business Model Alignment:

    Business model alignment is important because all companies generally want to develop relationships with vendors that understand their needs, help meet requirements, and mitigate risks, while sharing and increasing rewards. Windows CE is based on a proven commercial software business model that aligns with manufacturer device life cycle needs with the industry’s largest partner ecosystem, low cost, extended operating system maintenance support, and a shared source program—all of which are based on a low upfront cost “shared success” revenue model.

    Long-Term Commitment and Partner Ecosystem:

    Microsoft is committing substantial resources to embedded research and development (R&D) for long-term success. It is also creating strategic alliances with the largest and most dynamic partner base to give device manufacturers the choice of expertise and vendors that they need to most efficiently build designs.

    With other embedded operating systems, various companies continue to enter and leave the market, each developing competing distributions, tool-chains, and APIs without a commonly adopted standard. Such fragmentation reduces the breadth and depth of third-party support and the developer community skill set. As a result, device manufacturers may assume the risk of relying on a self-support model for operating system distribution.

    Proven and Flexible Commercial Software Licensing Models that Protect Device Manufacturer Intellectual Property:

    Through its Shared Source initiative, Microsoft makes approximately 2.5 million lines of Windows CE source code available for reference, debugging, and modification. Windows CE licensees can modify available source code and commercially redistribute Windows CE source derivatives without obligation to notify or share any customizations with Microsoft, partners, or any competitors. While still providing source access and derivative rights, Microsoft’s proven commercial software business and licensing model leaves device manufacturers firmly in control of their intellectual property. Other embedded operating systems often have licensing models that raise issues of accountability, fragmentation, viral licensing, and business viability.

    "Shared Success" Revenue Model:

    The Windows Embedded business model is principally based on run-time royalties. It is structured to provide very low upfront costs, including low cost tools, maintenance for five years, and a “pay as you go” support model. Microsoft, as a vendor to the embedded market, has structured its business model primarily to make money only after the manufacturer ships a product. This model assures that Microsoft has a vested interest and a structural incentive to continually invest in and improve its tools and products so that manufacturers can get to market more quickly, provide more value to their end customers, and ship in high volume.

    Most other embedded software companies have built a business model that is based on high cost services and tools, which are typically paid for upfront, regardless of whether the device manufacturer ships the product and it is commercially successful. Under such models, the device manufacturer assumes nearly all costs early on. This higher upfront investment adds additional risk to the project. Such models with a heavy reliance on development and support services that are charged on a time basis (per hour or per year) result in a structural incentive for the vendor to maximize the length of the development cycle. Therefore, these models often result in high upfront costs, added risk, and longer time-to-market.

    -Andreas

  123. Mike says:

    Paul,

    There are two versions of Target Analyzer, one that runs from DOS, the other runs from Windows 2000 or Windows XP – the tool assumes x86, and PC architecture hardware – Windows CE doesn’t rely on x86 (although it does support x86) or PC architecture hardware.

    BTW – There are some Windows Media players available for Linux. We haven’t validated them. Here is one you might want to try out: http://www.mplayerhq.hu/homepage/design7/info.html

    I’m hoping to get you a direct link to the WMV files (and/or MPG files) in the next day or so.

    – Mike

  124. Jose Felicio says:

    Today’s news:

    ——————————

    Consumer Electronics Linux Forum goes non-profit

    http://www.cbronline.com/article_news.asp?guid=5D02D33C-0E72-410F-AFF0-03EF3CBA6CA8

    The CE Linux Forum, which develops and promotes Linux for consumer electronic devices, has officially established itself as a non-profit corporation based in San Jose, California.

    18 Jan 2005, 09:52 GMT –

    CELF was formed by Sony, Hitachi, NEC, Royal Philips Electronics, Samsung Electronics, Sharp, Toshiba, and Matsushita Electric Industrial through its Panasonic brand, in July 2003 and now boasts more than 50 members.

    The organization said establishing itself as a non-profit organization will allow it greater flexibility to fund open source developments and to create relationships with other organizations committed to its goal of promoting Linux for consumer electronics devices.

    CELF maintains a collection of Linux modifications for use in consumer dynamics as well as the CELF specification and reference implementation. In late January it will host its second plenary meeting and first US technical conference.

    Sony vice president Scott Smyers, who had been chair of the CELF steering committee, is now chair of CELF, with representatives of Panasonic, with the rest of the board made up from representatives of IBM, Hewlett-Packard, Hitachi, LG Electronics, Motorola, NEC, Nokia, Royal Philips Electronics, Samsung, Sharp, Sony, and Toshiba.

    —————————

    For the Mike’s argumments I cannot understand why these big companies don’t prefer to use the "superior" Microsoft embedded technology… 🙂

  125. [OT]As someone said in this thread somewhere above, almost all companies’ out there have people contributing to OSS – except M$ (never heard of it.) Given that M$ has considerable talent, do they prohibit employees’ from contributing to OSS ?[/OT]

    Oh, and BTW, Linux *is* about CHOICE – all other arguments’ are futile. 😉

    Cheers,

    Amar

  126. Mike says:

    Amarendra,

    Yes, there are a number of Microsoft open source projects on SourceForge – add to that Windows CE shipping with 2.5 Million lines of shared source, and GotDotNet projects.

    If it’s all about choice then as an embedded developer I should be free to choose the most appropriate operating system and tools for my embedded project whether this is Linux, Microsoft, home grown, or other operating system, right ?

    – Mike

  127. After years working with Microsoft centric real-time NT and CE embedded solutions Venturecom and elsewhere, my current gig with teh Digital DV group at ATi has required me to become fluent in embedded Linux. The majority of commercial media devices are based on Linux, VxWorks, or proprietary OSs.

    Part of what has driven this choice is a manufactuing tradition which makes non-recoverable enginerring costs preferable, if they result in $2 savings on the product. Part of it is economo-politics – there is a reluctance on the part of Sony to pay per unit license fees to MS. Part is cultural; the anything but MS philosophy has been prevelant in Silicon Valley where many of these devices have had their genesis.

    There are some significant advantages which Linux brings to the table. I work mostly with MIPS-based products. Until the release of CE 5.0, the compilers for MIPS provided with CE were second rate. Fairly predictably, the code output from GCC would be about 20% smaller and run about 20% faster than that emitted by the MS tool chain. For certain tasks, a factor of 2 improvement was not unusual. MS has made significant improvements in code efficiency with 5.0, but with the right patches, the GCC compiler is impressive. The challenge with open source tools is that it requires significant expertise to create and maintain a competent tool chain. Dan Kegel (http://kegel.com/crosstool) and others have made this a bit easier, and as has been noted elsewhere, one can always pay Montavista for reasonably well debugged and optimized tools.

    Debuggers is a different story. GDB is the cornerstone of Linux debuggers, and is, in my experience, as surly as WinDBG ever was (and for the record, WinDBG was the preferred tool until CE 4.0, for debugging anything more complex than a UI prototype on CE). I find I really miss the CE 5.0 debugger; when it comes to diagnosing multiple thread / multiple process problems, I have not found a comparable analoge in the Linux pantheon of free tools.

    There are some really good things in the embedded Linux world.

    – The uCLinux project (www.uclinux.org)has produced a modular and compact alternative for the full-featured Gnu library. It has had wide acceptance, and can for the most part be easily plugged in to a solution to significantly reduce the footptrint.

    – Busy Box (www.busybox.net) and it’s close relatives like Tiny Login are also invaluable in making a small, robust embedded system from open source bits.

    – eFence, the ‘electric fence malloc’ drop-in from http://www.pf-lug.de/projekte/haya/efence.php

    for finding memory allocation bugs

    – The well of open source code solutions is huge; one can usually find big pieces of code which, with a little work, can be adapted to your needs.

    The huge liability which Linux carries is that getting everything working well, from the kernel to the compilers to the application code takes a lot of patience in sifting through the folklore, and finding the bits of gold in the sand. It’s not a straightforward process, and many companies spend years getting the basic platform and porocess stabilized well enough to create an excellent product.

    At the end of the day, the choice of OS and tools is driven by many non-technical reasons, as has been underscored by many others responding on this thread. In my experience, the huge leg-up which a well-characterized deterministic operating system and a robust tool chain which CE 5.0 brings to the table is invaluable, and lets the product development effort focus on the interesting stuff.

    But I have met a lot of brilliant and wonderful software engineers, making exciting and robust embedded products out of this chaotic pile of open source code!

    -Richard R. Lee, eMVP

  128. Mike,

    I was under the impression that the definition of CHOICE has been conveyed correctly by many of the previous posters’ – but it seems it is not. Let me amplify a bit…

    There are two friends’, Foo and Bar. Foo becomes’ a freelance programmer, contributing code, and thus helping his fellow human beings. Bar (who already is of a criminal mentality), goes on to become a mobster, and becomes a very infamous druglord.

    Now, Foo, who earns his bread with dignity, has multiple options with him if he wishes to change his job – he can become a good cook, a good painter, a good anything. Bar, also has choices – but, his choices are restricted, maybe only to serve a sentence in jail, or die. The degrees’ of freedom for Foo and Bar are vastly different.

    Both, Foo and Bar, have choices – and I am referring to the choices available with Foo (which come much close to the ones’ offered by Linux.)

    Kindly note that I am, in no way, trying to offend you, or your employer, but this was as close as I could get to clarify the CHOICE, that I was talking about.

    Philosophy aside, BUSINESS decisions’ definitely play a very crucial role in developing any product – so, yes, I am free to make a choice of MS family of embedded OSes’.

    With the black-box the surrounds’ MS, and its technologies’ – I am surely not going to take that path.

    The idea of releasing Win CE, or Win XPe under GPL also holds water (and surely amused me), because if that is done – the CHOICE, as to what OS we should go with would be a lot more easier to make – as the philosophy part would greatly be reduced (though not eliminated in its entirety.)

    Have a good day, Mike.

    Cheers,

    Amar



    Destiny is not a matter of chance, it is a matter of choice.

  129. Trel Nadal. says:

    As i started reading this, I intended to reply to it. however, after discovering around 90% of this was Reply to a longwinded FUD attack, I’ve decided to just let it rest.

  130. 嵌入式裝置上的 OS選擇,不外乎一開始選邊站,當然排除其他MS以外的commercial OS的話,就屬於Embedded Linux與Windows XP Embedded/Windows CE的選擇了。我一直都有個疑惑,或許也是各方的擁護者都說自己

Skip to main content