Does size really matter?


The first embedded release of Windows CE shipped in 1998 (the Embedded Tool Kit, or ETK), at every embedded conference since then we talk about Windows CE as being a small footprint, hard real-time, componentized operating system. The CE6 kernel only build is around 350KB, obviously the operating system image size increases with the addition of components to the core operating system. A build of Windows CE that includes the “Standard Shell”, Internet Explorer, .NET Compact Framework, Media Player, and even adding Solitaire for good measure would get you an operating system in the 20MB range. For Windows Embedded Standard (Windows XP Embedded) an average operating system image size is ~300MB.

Devices can fall into one of two categories, “open” where the end user can add media, games, applications, maps, POI data, and more, in these devices there is typically additional storage available either shared with the o/s image, or potentially external media (USB stick, SD card etc…) – Examples of opens device would be Windows Mobile (some devices ship with on-board flash, others with optional SD storage) or Apple iPhone (where the base operating system image size is 500MB and the device ships with 8GB ro 16GB flash) – And then there’s “closed” devices that ship with a pre-baked operating system image and no options for installation of new applications, examples here would be a real-time controller, ultrasound machine, gaming device (casino).

So, here’s the question to you… What is an acceptable operating system image size?

– Mike

Comments (8)

  1. Really small!  In http://blogs.msdn.com/barrybo/archive/2006/08/21/710908.aspx, I walk through creating a DeviceEmulator ROM that is just 1.3mb, but still has all of the APIs and features needed to support usermode app development from Visual Studio.

    I was impressed by how small Windows CE could get without resorting to any code editing.

    Barry

  2. Andreas Schloffer says:

    Just the way it is. Please, please don’t blow up CE 7 (if that is why you ask)!

  3. I think that size can matter in some situations 😛

    OS image size is related, for example, to startup time.

    You can use some tricks like the enhanced busenum dll to load drivers quicly, you can configure your application to start as soon and as fast as possible, you can put a startup screen that reduces the time perceived by the user (that works! 20 second staring at a black screen are longer than 20 second looking at a progress bar on a nice background, try that yourself!), but if you have to load 20MB from NAND flash to RAM this overhead will impact on the total startup time.

    On some kinds of devices you can use suspend/resume instead of cold boots, but this is not always an option.

    Image size also impacts on available RAM (if you run the image in RAM, of course, but XIP sometimes is too slow…) and on some platforms 64 or 128Mb is the maximum amount of RAM supported by the hardware. Having 20 allocated to OS image isn’t that good.

    If you are preparing us to larger OS image sizes in CE 7… could we ask something in exchange? 🙂

    I would ask multi-core support and a better UI (silverlight?).

    P.S. IMHO even if you have a closed device putting the application and the most frequently update component out of the image (maybe using a portion of flash as filesystem) will make upgrades of the device simpler because most of the times it’s the application part the one that need updates on the field.

  4. mikehall says:

    Andreas, there are no plans to "blow up" the Windows CE operating system size.

    We’ve been talking about the ~300kb kernel image size for about 12 years, the reality is that no devices ship with just the kernel, every device needs additional technologies (networking, graphics, audio), and, depending on the device type is also increasing the size of the storage needed by the applications running on the device – take a fairly typical Portable Navigation Device, today these ship with 64MB Ram, and perhaps 4GB storage for maps, POI, voice files etc…

    It would appear that the size of the operating system is becoming less important given the amount of storage and RAM needed by many of the latest embedded applications. The reason for posting was to get your feedback :O)

    – Mike

  5. David says:

    CE is almost unnecessarily small today. If a future version fits within 500MB with "lots of features", that’s fine. Of course, there has to be a way to be "really small", which today means ~64MB flash footprint.

    I miss some middle ground between desktop Win XP/7 Embedded and CE.

  6. Barry Kogan says:

    On my device the image size gets to 22Mb which includes all networks, Web server  and IM. It boots in 5 sec.

    I think maybe we need some tool which allows more presize detection of memory layout, maybe it exists and I just do know about it 🙂

    Barry K.

  7. mikehall says:

    What memory tools are you looking for? – what problem are you trying to solve?

    – Mike

  8. Barry Kogan says:

    Mike,

    I am looking for the tool which allows

    to optimize RAM usage and CPU speed because

    this directly affects the cost.

    I would like to use the slowest CPU possible with smalest RAM possible to satisfy my system and application requirements.

    Barry.