A lot of people contact us looking for basic information about Windows CE 6.0 and Compact 7, probably because we are a Windows Embedded Gold Partner – maybe we are more approachable than Microsoft? Or perhaps it’s because we don’t just do Microsoft. Anyway, if you’re thinking about Windows CE, but undecided, hopefully this post will help.
Windows Embedded Compact 7 and its still-popular predecessor Windows Embedded CE 6.0 offer a number of key advantages, especially for developers looking to quickly develop a product with a touch screen, or to add wired and/or wireless connectivity. This article assumes no prior knowledge of Windows CE, and walks through the typical process step by step, from OS selection to hardware choice to development and deployment.
OS Selection Matters
Obviously different project teams will have their own unique reasons for choosing Windows CE or Compact 7 (the products are officially called Windows Embedded CE 6.0 and Windows Embedded Compact 7, but we’ll abbreviate to Windows CE to refer to the product family, or CE 6.0 or Compact 7 to refer to the two currently popular versions). Typically, the technologies competing for attention will be Linux and increasingly Android.
There is no right or wrong choice between these operating systems, and it’s important to enter the decision process with an open mind. Each offers different strengths and weaknesses in respect to a particular project. In case you heard otherwise, Windows CE is reliable, inexpensive and the source is available. But it is a proprietary system and will lead you to a constrained and predictable end point without exposing you to the huge choice of open-source stuff which can be leveraged under Linux, which may be a good or bad thing depending on your situation and skill-set. Often the application development environment or GUI methodology, as will the existing capabilities of the engineering team will quite rightly dictate OS choice. Other times, it’s not so cut-and-dried.
A good project manager will visualize the path to a successful, timely outcome, and attempt to predict and minimize risks along the way. There are sometimes good reasons for choosing Linux over Windows CE, but ideology and prejudice should never be amongst them. Here are some advantages of working with Windows CE:
– Commercial out-of-the-box tools and support
– Stable, reliable releases only changing every couple of years, and supported for 10 years
– IP liability risk is fully underwritten
– Real-time kernel functionality built-in
– Good power-management framework for battery powered devices (often overlooked)
– Good, included, high-level user-interface framework (particularly in Compact 7)
– Reasonable pricing (especially for CE 6.0)
– Compatible with familiar desktop .NET coding environment
In a nutshell, the promise of getting a development kit, loading up the tools, and having something that looks pretty application-ready running out-of-the-box, with the potential to develop a product as quickly as you can spin a board and code an application is the biggest attraction. Unless you are a Linux guru, Windows CE is a time-to-market winner.
Having made a preliminary decision to go with Windows CE, the next step is to get hold of the free 180-day evaluation version of the tools, and to start researching hardware.
Choosing the hardware
Windows CE, whether CE 6.0 or Compact 7, will run on both ARM and x86 based hardware. However, in most of our projects ARM hardware is chosen over x86 for its low-power, and low cost. CE 6.0 cannot easily make use of the enhanced instruction set of ARM-Cortex A series devices, including floating point, and so when looking towards these high-end devices with an eye to performance, it is as well to think about Compact 7. The highest-performing devices at the time of writing are ARM Cortex-A9 multicore parts, and Compact 7 also has multiprocessing capability to allow these to be used.
At the low-end, the minimum requirement is usually ARM9, which looking along the ARM roadmap was the first device family to incorporate an MMU, which is a basic requirement for a virtual memory addressing OS such as Windows CE (or Linux/Android). ARM9 system-on-chip micros are available with a full range of peripherals including USB, SD, Ethernet, UART, I2C, Audio, CAN, SPI etc. – additional connectivity such as 3G modem, Bluetooth, GPS is easily added. Some (such as Freescale’s i.MX28) are available with longevity guarantees of up to 15 years. ARM9 devices can offer surprisingly good performance, and so there should be specific reasons for choosing high-end micros. The main features which are mostly exclusive to ARM Cortex-A8 or –A9 devices are:
– On chip graphics accelerators
– On-chip hardware video codecs
– Floating point
– Support for large displays (1024 x 768 and above)
Remember that RAM requirement will also increase with complexity. A straightforward CE 6.0 project on ARM9 will happily get by with 64MB RAM or even less, while a demanding Compact 7 project on Cortex-A8, running Silverlight may need 512MB.
Board, module or integrated solution?
If your products will only ever be made in a quantity of 100s, your board will look a lot different when set alongside one designed to be made in 100s of thousands. The greater the production quantity, the more NRE (non-recurring engineering) charge that can be amortized over the production, and the less re-use of existing design will be needed.
If you are planning for a few dozen units, your starting point will naturally be to look far and wide for a ready-made board which is close enough in functionality to your requirement. Perhaps something already matched to a touch-screen is available?
If your project will run to hundreds or thousands, then using a standard production-ready module but spinning a custom baseboard to include the right connectors, power supply etc, will cut your development time and cost by a factor of 5 to 10 compared with full-custom. This type of solution can also come with the biggest task – porting the OS to a production-tested standard – already done.
If you are making 10s of thousands of units or more, then the cost incurred to develop a fully integrated board may be justified, providing the timescales also make sense. This generally involves starting from a silicon vendor reference design, but accepting that a lot of modification to the hardware design and in particular to the BSP will be needed to reach a production-ready platform.
How do I get started with the actual development?
First off, while developing with Windows CE can be much easier (from a standing start) than developing with Linux, do bear in mind that attending a training course will significantly accelerate your progress. Microsoft has an official program of Windows Embedded training courses, which are implemented by qualified partners such as Direct Insight.
Having chosen your hardware, you will be able to purchase a system already running Windows CE, whether this is a development board, a kit based around a production-ready module, or a reference board (such as TI’s Beagleboard or Freescale’s i.MX53 QuickStart). Bear in mind that a reference board, although cheap, will not come with a production quality BSP, and will not be easy to turn into manufacturable solution. Often, the services of a Systems Integrator are required to complete this task – particularly the creation of a finished BSP.
If you are using a production-ready module or other ready-made board, there will be minimal work to do at the level of the Board Support Package, and apart from some configuration, the platform is application-ready. In the case of a module the hardware developer will be set to work to respin the supplied baseboard schematics to implement a different set of connectors and physical layout, but this will not usually impact on the OS implementation.
The main areas where configuration is required when working with a production-ready module are:
– Choice of screen type, size and resolution
– Choice of BSP components according to chosen interfaces and features
– Choice of OS functionality and components
This is largely accomplished from Platform Builder.
I have a development kit and have installed the eval. tools, where do I start?
When you power up the kit, it will boot a pre-configured Windows CE image, and so a familiar screen image should appear on the supplied touch-screen display. The kit is connected to the host via Ethernet, and RS-232.
The kit will ship with a binary and/or source BSP, and this should be extracted to the prescribed host directory, such as C:WINCE700PLATFORM . There should also be a sample Platform Builder Workspace which will allow you to recreate and adjust the OS image supplied with the kit…
But it’s not the purpose of this article to teach you Windows CE. If you have got this far, you should be thinking of attending windows CE training, and/or reading some books, such as Pavlov/Belevsky’s “Windows Embedded CE 6.0 Fundamentals” or Phung/Jones/Joubert’s “Professional Windows Embedded Compact 7”.
If you’re using a reference board, production hardware must be designed and prototyped, and then a production-quality BSP is developed to complete the finished application-ready platform.
If you are working with a production ready system-on-module (or “SOM”), you will have the schematics of the development system and a design guide to help your hardware designer to create a custom baseboard for your project. But because this will be functionally identical with the development baseboard, and will run an image based on the same BSP which is itself already production-ready, you can usually develop and test your application immediately on the development system.
When prototypes arrive, you will create a release build of your OS image for testing. When it is time for production deployment, you will need a purchased copy of the Microsoft tools to generate the licensed image, and a license sticker for each unit to be commercially shipped.
A Word about Support
Microsoft has a comprehensive ecosystem of Partners and Authorized Distributors, including Gold Partners like Direct Insight, who provide the required support, services and training to end-users, and have access to all required Microsoft resources. At first sight you may ask why Microsoft do not provide all that to the end-user themselves. But when you think about it, not doing so allows them to be completely focused on the product, and also means that even though your project might be trivial in license revenue terms (at $3 a licence, your volumes have to be quite high to be significant), by partnering with someone who is providing you with hardware, services, or training and is therefore suitably invested in your success, you can ensure help is there when you need it.
Do take a look at our Windows Embedded page to see how we can help your project. Feel free to email (info@) or call +44 1295 768800 for an informal chat.