Why develop a smart, connected device with Windows CE / Compact 7?

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)

-       Multicore

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:\WINCE700\PLATFORM . 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 CE page to see how we can help your project. Feel free to email (info@) or call +44 1295 768800 for an informal chat.

Windows Embedded Compact 7 future

A note to highlight that Microsoft’s Windows CE (Compact) operating system has not been forgotten in the wake of Windows 8 for ARM.

Microsoft has announced plans for several Windows Embedded Compact 7 updates, one planned for the fourth quarter of this year (Q4CY11) and one for the second half of 2012 (2HCY12).

According to the EE Times report. Next year’s version will get an updated kernel, faster file system, and broader hardware support.

I think it’s also worth highlighting that one of the main complaints about Compact 7 was also referenced which is the lack of application development environment support for Microsoft Visual Studio 2010. But at present there are no details of any of the changes confirmed.

Compact 7 Update 3 now available

The Microsoft Embedded Compact 7 team have released the third update to Windows Embedded Compact 7 (previously named Windows CE).

You can get the update via WEDU in your Platform Builder or it can downloaded from here.

This update provides new tools, application updates and bug fixes for Windows Embedded Compact 7:

  • The Compact Test Kit (CTK) has two new tools: The Compact Automation Tool Solution (CATS) for automating test scenarios on Compact 7 devices and The Compact Stress Tool for automating stress tests on Compact 7 devices are included with this update.
  • Also included is new Silverlight for Windows Embedded (SWE) sample code for the Compact 7 Media Player. Previously provided only in binary format, the Media Player sample code is now included in source code and a previous dependency on the compositor in the sample code has been removed, improving performance across all hardware configurations.
  • Finally the update also includes cumulative bug fixes for the Windows Embedded Compact 7 operating system, Platform Builder tools and the Compact Test Kit.

The MSDN version of the release note can be found here.
A Documentation update has been released to MSDN to coincide with this release.
Plus you may find this link to all previous Compact 7 downloads and updates useful here

Hope you find this information useful and any feedback please let us know.

Visual Studio 2005 with Windows Embedded CE6 R3 Device – .NET CF 2.0/3.5 compatibility problems

Windows Embedded CE6 R3 supports both .NET CF 2.0 and 3.5. Great you think, but Visual Studio 2005 debugger only supports .NET CF 2.0. This can lead to some very ambiguous behavior when trying to debug .NET CF applications on a CE6 R3 device.

Picture the following scenario. You have a Windows CE6 R3 device which includes .NET CF 3.5 runtime (CF 3.5 is backwards compatible with 2.0), but does not include the CAB installer, in the installed OS image. You develop a managed code application with Visual Studio 2005 and you build and deploy. Alas the deployment fails and you get an error something like:

—— Build started: Project: HelloWorld, Configuration: Debug Any CPU ——
HelloWorld -> C:\Swift\Initialp\HelloWorld\HelloWorld\bin\Debug\HelloWorld.exe
—— Deploy started: Project: HelloWorld, Configuration: Debug Any CPU ——
Deploying ‘C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\windowsce\wce500\armv4i\NETCFV2.wce5.armv4i.cab’
The system cannot find the file specified.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Deploy: 0 succeeded, 1 failed, 0 skipped ==========

Firstly the deployment error “The system cannot find the file specified” is a little misleading. This is not referring to the CAB file for .NET CF2 (NETCFV2.wce5.armv4i.cab) but to the CAB installer utility (wceload.exe), which it is expecting to find on the device. Obviously after deploying the .NET CF2 runtime to the device, the device needs to extract and install it, and it uses the CAB installer to do this (you also need .NET CF2 SP2 because you will get further additional errors without, see previous post Visual Studio 2005 deploy error after downloading a managed code application to a Windows CE6 R3 device ). The problem is that the OS on the device does not include the CAB installer. If you have the CE6 BSP for the device you could of course re-build the OS image and add the CAB installer from the catalog and that would fix the problem. Alternatively as a “hack” you could simply copy the CAB installer executable to the Windows directory of the device via ActiveSync before deploying.

However in theory this should not be necessary because the image on the device actually already contains the .NET CF3.5 run-time. In Visual Studio 2005 you can disable deployment of the .NET CF2 (Project -> Properties -> Devices), by de-selecting the option:

Since .NET CF3.5 is backwards compatible with CF2.0, this should do the trick, right? Unfortunately not. Although you will now successfully deploy the application, the Visual Studio 2005 debugger will fail to start it. This is because the debugger does not support CF3.5, only CF2.0. Of course if you do not want to actually debug the application you could simply copy the application executable to the device via ActiveSync and run it directly on the device. The better solution would be to install Visual Studio 2008 which does support .NET CF3.5 debugging.

So in summary the options are (in order of least effort):

1. Leave everything as is and copy the wceload.exe CAB installer (via ActiveSync) to the Windows directory of the device before deployment. You you may need to repeat this each time you power cycle the device since the Windows directory is often not persistent. This will give you full debugging capability. If you do not need debugging capability, you could simply copy the application itself to the device.

2. Install Visual Studio 2008 (for application development only, you will still need Visual Studio 2005 with PB for OS development, fortunately they can co-exist). Remember to disable deployment of the .NET CF in the Properties.

3. Re-build the CE6 image and include the CAB installer or exclude .NET CF3.5 and include .NET CF2.0. Remember you will ultimately need to do this anyway if you wish to include you driver in the image.

Whilst on the subject of .NET CF deployment, there is a good article on MSDN about creating a CAB installer for end users:

Deploying .NET Compact Framework 2.0 Applications with .cab and .msi Files

Will

 

Windows Embedded Compact 7

Direct Insight was recently involved in running a Windows Embedded Compact 7 event at the UK Microsoft Campus. From which an article has been written including information and quotes from me and colleagues.

You can find the article here at MTEMAG web site.

Please have a read and let us know what you think.

> Nigel

Replace Real-Time Hardware with Multi-Core Software

A snappy title for a good article on soft-control architectures by my friend Jeff Hibbard.

The available processing power of the latest multicore Intel (not to mention future ARM) devices should not be overlooked when it comes to DSP, or other high-performance tasks.

Windows Embedded Compact 7 in Detail – Part 1

Having introduced Compact 7 to a good-size audience on Tuesday at Microsoft’s Offices in Reading, UK, I thought it would be useful to begin to blog some of the very useful information that was presented.

The case for Compact 7 is focused on productivity enhancements provided by new features and tools, and in particular the ability to create differentiated devices thanks to the combination of support for touch and gesture user interfaces, and Silverlight for Embedded.

In Part 1 I’m going to concentrate on Compact 7 itself, and the tools enhancements and Silverlight for Embedded will follow in subsequent entries

Performance

Probably the single most notable feature of Compact 7 is the support of ARMv6 and ARMv7 instruction sets. This was a serious omission in CE 6.0, meaning that even if you were using an ARM11 or ARM Cortex-A8 device, everything compiled down to the v5 instruction set as used on an ARM9 or XScale. In particular, the Cortex-A8′s NEON SIMD (Single Instruction Multiple Data) co-processor is now supported, providing both run-time and native support for VFP (Vector Floating Point), and the DSP and multimedia acceleration which NEON potentially brings.

SMP (Symmetric Multi-Processing) support is now provided. This is a little ahead of time as there are not yet any multiple-core devices aimed at the general embedded space. But these devices have been announced by Freescale, TI and others, and are only a matter of months away. The SMP implementation is done in a very similar way to Intervalzero’s RTX Soft-Control Architecture for achieving SMP with full Windows / Windows Embedded Standard – in fact some of the API calls are identically named. So for example you can SetThreadAffinity and SetProcessAffinity to a core. Other calls allow you to discover how many cores are available, power them on or off, and even examine how heavily utilised they are.

Maximum physical memory has been increased from 512MB to 3GB. You may think these numbers relate to the future rather than the present, but we’re finding that full-blown Silverlight apps need 512MB right now, and I’m sure the first 1GB image is not far away. We’re already offering ARM-based hardware with 1GB RAM, and I don’t think we’re unique in that.

Other noteworthy enhancements under the performance heading are a faster file-system, and new, improved drivers for USB and SD Card storage.

Integrity, Reliability, Security

Windows CE is already used in a variety of applications requiring high reliability. One danger in situations where a system has to run for months or years between reboots is file system fragmentation. Windows Embedded Compact 7 features a new local heap manager designed to address this concern.

To address malware-related concerns, address space location randomisation is now available to ensure that load addresses are not predictable, and data execution prevention now covers the possibility of code being injected into data space prior to execution.

In amongst the many networking improvements, IPSec – a well known method of packet level encryption – and Kerberos implementations have been upgraded to the same standard as Windows 7.  Kerberos is an industry-standard system for client/server authentication in unsecured networks.

A new loader/verifier module (LVMod) provides an authentication mechanism such that only application binaries within the run-time image, or signed with a security certificate can be loaded.

Connectivity Features – RemoteFX

RemoteFX is a pretty new – and potentially quite exciting and disruptive -  remote desktop protocol technology from Microsoft, first seen in Windows Server 2008 R2 SP1 and Windows 7 SP1 as recently as last month. The idea is that RemoteFX cleverly encodes the rich graphical experience generally appearing on a high-end user screen, communicates it to the client in a reasonable bandwidth, and with an appropriate codec on the client side.

Support for RemoteFX in Compact 7 gives rise to the concept of a “zero client” – that is a thin client that isn’t a PC.  This is a topic in itself, and one on which I’m sure we’ll blog soon.

Windows Device Stage

This is the thing which pops up in Windows 7 when you connect a printer, media player, camera, or whatever, which shows a photo and branding for the connected device above a list of options. It depends on the client device offering an MTP (Media Transfer Protocol) Responder, which Compact 7 does. The interest in the embedded space is that because you have the MTP Responder source code, you can modify it to achieve results outside of the usual wizards, thus it should be possible to create your own device type and Device Stage content.

New Networking Stack

In addition to the IPSec and Kerberos improvements already mentioned, an all new Winsock 2.2 stack brings the same features as available in Windows 7 (note the underlying theme here) to Compact 7.

Noteworthy features include enhanced accessibility of protocols other than TCP/IP SMP support, NDIS 6.1, IPHelper – which enables applications to retrieve information about the network configuration of the device and modify the network configuration, and Windows Filtering Platform which provides an API for packet-level filtering across multiple laters.

Other Connectivity Features

Compact 7 includes Bluetooth 2.1 support, and a new Native Wi-Fi, which has configurations based on XML profiles and features to facilitate automatic hand-overs when roaming across multiple access points and subnets.

An extensively improved Connection Manager allows automation of connectivity choice where multiple options are available (e.g. wired Ethernet, 3G, Wi-Fi), with a unified programming interface via WinInet.

Connected Multimedia is Standard

The idea of seamless interaction with the world of Windows often seems chiefly applicable to consumer products and less relevant to the broader embedded world. However, the need to capture, stream and display video and rich graphics is becoming more common, and every display – even in the most specialist, rugged industrial environment – is seen as a potential advertising vehicle by a marketer somewhere, and so the question of multimedia arises with increasing frequency.

With Compact 7, more features than you are likely to need are included.

At a practical level, multi-touch and gesture support, something likely to be needed with a modern user-interface based on Silverlight with a capacitive touch screen is provided.

A new DirectShow multimedia pipeline has enhanced buffering, and a new video mixing renderer which is achieved for the first time via DirectDraw. MPEG-2 and MPEG-4 containers (as used in DVB) can be demultiplexed and streamed.

Media Library allows you to locate and retrieve media held locally, remotely or via the internet. An SQL database is used to store and retrieve metadata. Media Player is similar to the equivalent function in Windows 7, and has its own UI – being capable of functioning as a standalone player (DMP), as well as a renderer (DMR) when attached to a server(DMS) under remote control (of a DMC).

DNLA

The Digital Network Living Alliance is an industry body responsible for interoperability of media infrastructure in the home. Thus if you want to show your home movies residing on your PC or recorder on the TV, print some photos, or play your music wherever, you should be able to do this even though the separate elements of your system are from different vendors. The above abbreviations (DMP – Digital Media Player, and so on) come from the DNLA context.  There is a two-box (DMS serves, DMP interacts with the user and plays back) paradigm, and a three-box paradigm (with separate Controller and Renderer in place of the Player), and both these are supported in Compact 7.

Other Multimedia Features

Compact 7 includes new readers for PDF, and for Office up to 2007 version.

A new Internet Explorer for Embedded is based on IE7, with performance enhancements based on IE8 features. Flash 10.1 support is included (but not an Adobe license). There is Pan and Zoom, XHTML support, and the new IE comes with a customizable XAML skin.

In Part 2 and 3 of this article, coming soon, we’ll look at the two other key enhancements in Windows Embedded Compact 7 – the new tools, and the ability to create exciting user interfaces with Silverlight for Embedded. In Part 4 we’ll examine the available licence types, and other go-to-market matters.

Compact 7 Launch Success at Microsoft

Our Compact 7 launch event at Microsoft Campus on Tuesday was very well attended, with most of the 80+ registered delegates arriving eventually despite a local traffic meltdown. Following Lorraine Bardeen’s inspiring keynote,  excellent sessions from ARM, Freescale, TI, UICentric and Captec were alternated with Compact 7 sessions from Direct Insight.

 TI brought along a RemoteFX demo, Freescale showed their new, tiny, i.MX53 Quick Start board, and Direct Insight showed i.MX51 and DM3730 modules, the latter running a UICentric medical device demo.

 Dr Tony Hedge of Benthic Sciences was the lucky winner of the HTC Trophy 7 phone.

 Feedback was very positive, and we hope to hold follow-up single-topic events, as well as the hands-on training announced on the day. Delegates will be receiving a link to download most of the presented material in due course. For others, we’re planning to bring as much as possible of the material to this blog during the coming days and weeks, and starting later today.

 We’re grateful for the support of Microsoft, Arrow, and ARM, who already blogged about the event.

Windows Embedded Compact 7 – all you need to know

If you’re wondering what the real deal is with the new version of Windows CE, and would like to hear from key stakeholders including ARM, Texas Instruments and Freescale, as well as from Lorraine Bardeen, Microsoft’s Embedded Czar for Europe, then here is a unique opportunity.

On March 29th, at Microsoft’s European HQ in Reading, UK, there is a free one-day seminar where you can hear from the above and other interesting people, interspersed with knowledgeable Direct Insight folk taking you through the various new features of Windows Embedded Compact 7 such as Silverlight for Embedded, RemoteFX. SMP Support, ARM v7 instruction set, improved toolchain etc.

Entry is free, and this could be a popular event, so visit the Windows Embedded Compact 7 UK Launch Event page to reserve your place.

Visual Studio 2005 deploy error after downloading a managed code application to a Windows CE6 R3 device

After deploying a managed code application to a windows CE6 R3 device you get a deployment error something like:

Deploying ‘C:\will\VBProjects\CEApp\bin\Debug\HelloWorld.exe’
Deploying ‘C:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\windowsce\diagnostics\System_SR_enu.cab’
Post-deploy error 0×00000001 returned after calling ‘\Windows\wceload.exe /noui \Windows\System_SR_enu.cab’.
========== Build: 1

Visual Studio 2005 will attempt to download the .NET CF 2.0 cab file (System_SR_enu.cab) and automatically install  if the device does not already contain the  run time (however the OS dependencies for the .NET CF 2.0 must be included in the WinCE6 image). It appears that the version of .NET CF 2.0 included with Visual Studio 2005 SP1 is not compatible with the R3 release of Windows CE6. To fix the problem, shutdown all instances of Visual Studio 2005 and simply download and install .NET CF2.0 SP2:

http://www.microsoft.com/downloads/en/details.aspx?familyid=AEA55F2F-07B5-4A8C-8A44-B4E1B196D5C0&displaylang=en

Try again and everything should be fine.

A successful deployment should then look something like:

DeviceApplication1 -> C:\Documents and Settings\XPMUser\My Documents\Visual Studio 2005\Projects\DeviceApplication1\DeviceApplication1\bin\Debug\DeviceApplication1.exe
—— Deploy started: Project: DeviceApplication1, Configuration: Debug Any CPU ——
Deploying ‘C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\windowsce\wce500\armv4i\NETCFV2.wce5.armv4i.cab’
Deploying ‘C:\Documents and Settings\XPMUser\My Documents\Visual Studio 2005\Projects\DeviceApplication1\DeviceApplication1\bin\Debug\DeviceApplication1.exe’
Deploying ‘C:\Program Files\Microsoft.NET\SDK\CompactFramework\v2.0\windowsce\diagnostics\System_SR_enu.cab’
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Deploy: 1 succeeded, 0 failed, 0 skipped ==========