Back to description
While the traditional Windows desktop operating system (OS) developed by Microsoft was designed to run on well-defined and... more
While the traditional Windows desktop operating system (OS) developed by Microsoft was designed to run on well-defined and standardized computing hardware built with the x86 processor, Windows Embedded CE was designed to support multiple families of processors.
This chapter provides an overview of CE and improvements for the latest Windows Embedded CE 6.0 R2 release. Multiple Windows Embedded products, including Windows Embedded CE, are being promoted and supported by the same business unit within Microsoft, the Windows Embedded Product group.
... less
As part of the process in learning any new skill, the keys to mastering the skill quickly and effectively are knowing the... more
As part of the process in learning any new skill, the keys to mastering the skill quickly and effectively are knowing the available tools and resources to help perform a given task, and then lots of practice.
In this chapter, I review the CE development tools and the installation process, and where the OS components, utilities, and sample code are installed.
The Board Support Package is one of the critical components needed to develop the OS design to generate the CE runtime image... more
The Board Support Package is one of the critical components needed to develop the OS design to generate the CE runtime image.
A complete technical reference covering the Board Support Package (BSP) topic for Windows Embedded CE could expand into a whole book. In this chapter, I simply provide a high-level overview of BSPs and how to clone and customize existing BSPs.
In this chapter, we will go through the steps to create an OS design, include additional components from the component catalog... more
In this chapter, we will go through the steps to create an OS design, include additional components from the component catalog, set environment variables to further customize the OS design, and generate a CE 6.0 runtime image.
To work through the exercise in this chapter, you need to have the following software components already installed on the development workstation. The installation steps for these software components were covered in Chapter 2.
Visual Studio 2005
Visual Studio 2005 SP1
Visual Studio 2005 SP1 update for Vista. This step is needed for workstations using Windows Vista. If you are using Windows XP, skip this step.
Windows Embedded CE 6.0
Windows Embedded CE 6.0 SP1
Windows Embedded CE 6.0 R2
If you don’t have all the software components installed, follow the steps provided in Chapter 2.
To build a CE 6.0 runtime image, we will go through the following steps:
1. Create the OS design project.
2. Select the Board Support Package.
3. Select additional needed components from the CE 6.0 component catalog.
4. Generate the OS runtime image from the OS design project.
Windows Embedded CE runtime images were generated from the exercise in Chapter 4. To launch these runtime images to the designated... more
Windows Embedded CE runtime images were generated from the exercise in Chapter 4. To launch these runtime images to the designated target devices, we need to establish connections between the target devices and the development workstation.
The OS design in Chapter 4 was created to support three BSPs. Each BSP is designed to support one particular family of target devices. The OS design was created to generate three different sets of OS runtime images for the three supported BSPs. Each set of OS runtime images consists of one release mode and one debugging mode runtime image.
This chapter goes over the process to establish connections between the development station and the three target devicesthe emulator, eBox-4300, and CEPCand to transfer the OS runtime image from the development station to the target device after each connection is established.
In most embedded development projects, there are multiple options and methods to reach the same design goals. Throughout... more
In most embedded development projects, there are multiple options and methods to reach the same design goals. Throughout the development process, even with the best engineering team, you are expected to spend a great deal of time and resources to look for alternative ways to improve system performance, debug, and identify problem areas. A productive debugging environment can help minimize the time and effort you need to spend for debugging, which can have a direct impact on the project’s cost, schedule, and success.
The Windows Embedded CE Platform Builder and Visual Studio 2005 development environment provides an efficient debugging environment, with easy-to-use debugging tools, to help minimize the needed efforts for debugging and to resolve design deficiencies.
Many different options and resources are available to help with the debugging process. Some options are from Microsoft, some are from third-party vendors and may require additional debugging hardware, and some are undocumented processes from other developers sharing their knowledge. In this chapter, we will attempt only to cover the common debugging tools available within the Platform Builder tool.
Chapters 4 and 5 covered the steps to create the OS design, generate the OS runtime image from the OS design, and establish connection between the development workstation and target device to download the CE runtime image to the target device. In this chapter, we will use the same OS design project, from Chapters 4 and 5, to work through the exercise and show the debugging environment and tools available within Windows Embedded CE.
In the previous chapter, I talked about the Board Support Package, the OS design, connecting to the target device, the debugging... more
In the previous chapter, I talked about the Board Support Package, the OS design, connecting to the target device, the debugging environment, and debugging tools. All of these development processes come into play after the boot loader.
In the Windows Embedded CE development environment, the boot loader is the first piece of code to develop for a new hardware platform and is needed to download the debug and release mode OS runtime images to the hardware platform. Unless you’re developing brand-new hardware from the ground up, it’s not likely that you need to develop new boot loader code from scratch.
In general, the hardware platform manufacturer is likely to have a platform that supports the Windows Embedded CE environment and provides the reference development hardware with a boot loader and a BSP to support that environment. Microsoft also provides a sample boot loader, with source code, as part of the Platform Builder installation, for developers to use as the starting point to create their own boot loaders.
The registry is a collection of data containing configurations, settings, and usage parameters for the operating system,... more
The registry is a collection of data containing configurations, settings, and usage parameters for the operating system, device drivers, and applications. The registry is a critical part of the system.
The registry affects the operating system’s boot process, device driver, and application loading process. Some device drivers and applications have dependencies and must be configured to load after certain components are loaded before launching. When the registry is not configured correctly, the system may not function properly and may even fail to complete the boot process.
This chapter takes a brief look at the CE registry and provides an overview of persisting registry settings and how the boot process can be affected by the registry.
Ingenious design may yield interesting products. But no matter how ingenious, it’s difficult for products to be successful... more
Ingenious design may yield interesting products. But no matter how ingenious, it’s difficult for products to be successful if they can’t perform all their intended functions consistently.
Although it’s a time- and resource-consuming process, testing to validate the product’s ability to perform consistently is vital. It makes good business sense to incorporate testing checkpoints throughout the development process, to validate design features and maintain the quality of the development.
Using the same VS2005 IDE environment to develop managed-code and native-code applications, the application development environment... more
Using the same VS2005 IDE environment to develop managed-code and native-code applications, the application development environment for Windows Embedded CE is quite similar to desktop Windows. Developers with previous experience, who are developing applications for the desktop version of Windows using VS2005, can adapt their knowledge quickly to learning and developing CE applications.
This chapter provides a general overview of the application development environment available in CE.
Although CE is designed from the ground up in a completely different way from desktop Windows, there are a lot of similarities between the two environments. In general, there are two categories of CE applications, native-code and managed-code applications. Just like the desktop version of Windows, a developer can use the VS2005 IDE to develop native-code applications using Visual C++, and managed-code applications using Visual Basic or C#.
Depending on the target device’s business scope, required functions, and features, the development process may need to focus on meeting one or more of the following objectives:
Real-time
Small footprint
Existing code base reuse or porting
Application binary that can be portable across multiple hardware platforms
Application source code that can be portable across multiple hardware platforms
To meet one or more of the above objectives, the application developer may need to develop the solution using managed code, native code, or a combination of both.
Writing C# code for CE devices is quite similar to writing it for XP, Vista, and other versions of Windows. The Visual Studio... more
Writing C# code for CE devices is quite similar to writing it for XP, Vista, and other versions of Windows. The Visual Studio 2005 IDE provides an efficient and effective environment to develop C# applications for CE devices. Developers with experience writing C# code for the desktop Windows environment can easily adapt their skills to this new task.
When writing code for embedded devices, you need to be conscious of some drawbacks. An embedded device typically has a slower processor with much less system memory and storage compared to the desktop computer. In addition, the embedded device display screen is typically smaller than the desktop computer’s and may not have a keyboard or mouse to capture user input. Some embedded devices use the touch screen to capture user input, but some don’t have any user interface at all.
In this chapter, you’ll go through the steps to develop a C# application for the CE device, using the VS2005 IDE.
The Visual Basic programming language has a history going back to the late 1980s. The first version debuted in 1991 and expanded... more
The Visual Basic programming language has a history going back to the late 1980s. The first version debuted in 1991 and expanded to a huge user base very quickly.
The language has been a popular rapid-application development tool to create user interfaces and database applications. As it evolved over the years, from 16-bit to 32-bit to the current .NET version, a large pool of third-party commercial, shareware, and freeware components has been developed to support the VB community. These third-party components, along with the technologies added for each new version of Visual Basic, help enhance and extend VB’s capabilities to create new types of applications.
The Visual Basic migration to support the .NET Framework involved significant changes and improvements and made the new generation of Visual Basic programs more efficient and able to perform tasks that were problematic or impossible in the pre-.NET version.
Visual Basic 2005 (VB 2005) .NET Framework applications execute on top of the same Common Language Runtime (CLR) as Visual C# and Visual C++ .NET Framework applications and have access to the same system resources through the .NET Framework.
With the release of .NET Compact Framework 1.0 in 2002, Visual Basic developers were able to develop applications for CE and Windows Mobile devices. As a subset to the .NET Framework, application development for the .NET Compact Framework was similar to the .NET Framework.
With the 2.0 release able to support headless devices, the .NET Compact Framework enabled Visual Basic developers to write code for a new generation of small-footprint, low-cost embedded devices and to open up a whole new world of opportunities for the Visual Basic developer community.
Visual Basic developers with experience writing code for the desktop version of Windows can easily adapt their skills to write code for the CE environment. Using VB 2005, writing code for the CE is not much different from writing it for Windows, Windows XP, or Windows Vista.
Chapter 11 covered C# application development for CE and used the emulator as the target device.
For this chapter, we will go through a Visual Basic 2005 application exercise using the eBox-4300, a compact computing device.
An application written in native code is compiled into a binary executable consisting of CPU instructions... more
An application written in native code is compiled into a binary executable consisting of CPU instructions native to the hardware’s processor, and it cannot run on a different type of processor. A native-code application’s binary is compiled to run on the ARMV4I processor and cannot run on an x86 platform.
For the general application developer, Visual C++ with the Visual Studio 2005 IDE is the platform of choice when it comes to developing native-code applications for the CE target device.
While the Platform Builder tool itself is a plug-in for the Visual Studio 2005 IDE, the Platform Builder IDE provides its own environment in which to develop native-code applications.
Embedded Visual C++ is another IDE created by Microsoft to develop such native applications for earlier versions of CE. Support for the Embedded Visual C++ is being phased out. If you are new to the CE environment and are planning to develop a new application, the Embedded Visual C++ is not a recommended option and is not covered in this book.
In this chapter, we’re going to go over the native-code application development environment and create two native-code applications, a Visual C++ 2005 application and one created with the Platform Builder IDE, to cover the following actions:
Configure an OS design, build the runtime image, and generate an SDK to support native-code applications.
Establish a connection between the target device and the native-code development IDE.
Deploy the native-code application to the target device.
A Windows Embedded CE device is generally designed to perform certain designated functions, and it launches one or more applications... more
A Windows Embedded CE device is generally designed to perform certain designated functions, and it launches one or more applications to perform these functions during start-up.
Different methods are used to automatically launch an application when CE starts. Some applications require certain OS resources to be ready before launching. Some applications need to be launched with command-line parameters. For some CE devices, more than one application needs to be launched in sequence when CE starts.
In this chapter, we’ll go through the following methods to autolaunch an application when CE starts:
Configure the registry to automatically launch the application when CE starts.
Autolaunch an application using the Windows\Startup registry.
Develop a utility to launch the application when CE starts.
All Windows Embedded CE devices are built with a unique User Interface (UI) designed to capture input and provide output... more
All Windows Embedded CE devices are built with a unique User Interface (UI) designed to capture input and provide output unique to the device’s functions and features.
The elements needed for the UI depend on the device’s features and function, and can be very different between devices for different application scenarios.
The common input and output interfaces for a CE-based thin-client terminal consist of the following:
Standard computer keyboard and mouse
Switches to reset the system and turn the system on and off
Computer monitor, speaker, and printer port for output
Wired and wireless network link for inbound and outbound data
The common input and output interfaces for a CE-based home automation control system include the following:
Custom keypad
Multiline character display LCD or small graphical display LCD
Temperature sensor
Humidity sensor
Light sensor
In addition to the above input, output, and sensor devices, the home automation control system also uses GPIO (General Purpose Input and Output) to link to LEDs and buttons, and Relay to turn appliances on and off.
In this chapter, I will go over some of the common inputs and outputs you may find on the CE device and we will work through two exercises to create customized UIs for the device. For the exercises in this chapter, the development workstation is connected to a local area network with a DHCP server to provide IP addresses dynamically.
In all previous chapters, we talked about the CE development environment, worked through exercises to clone BSPs, created... more
In all previous chapters, we talked about the CE development environment, worked through exercises to clone BSPs, created OS design projects, generated CE runtime images, and downloaded the images to the target device. Application development and custom user interfaces were also discussed.
So far, I’ve covered many pieces of CE and the development environment. This and the remaining chapters will discuss application scenarios and cover how we can use CE to build different types of devices. For this chapter, we’ll create an OS design using one of the Windows Thin Client OS design templates and configure the OS design as a development platform for different types of information appliance devices, such as information kiosks, self-serve terminals, and digital signage.
The exercises in this chapter can be done using other OS design templates and work just as well. The Windows Thin Client is used for two reasons:
Windows Thin Client is a well-established product. Although it does not have a clearly established specification, Windows Thin Client-capable hardware must be built with the minimum hardware resources to support Windows while having the necessary hardware to support CE.
The thin-client terminal market is one of the key markets for CE. It’s an opportunity to introduce the thin-client resources available as part of CE.
The exercises in previous chapters were done using the emulator. While the emulator is a great tool for general learning,... more
The exercises in previous chapters were done using the emulator. While the emulator is a great tool for general learning, it’s a virtual environment and cannot do much beyond simulation.
For this chapter, we will work through various exercises to create simple CE applications that can be used as the starting point for a home automation control application, and work with real hardware.
Since most of us live in an apartment, condominium, or house, the home automation system provides a simple and straightforward application environment we can easily relate to.
Hardware is an integral part of the embedded development environment. Without going through the hands-on process and working with actual hardware, the embedded development learning process is incomplete.
The application developer engaging in embedded development faces many challenges related to hardware. These challenges range from finding hardware with appropriate device drivers to figuring out how to fit all the pieces together, how to interface to the external peripherals, and how to write code to access the hardware.
In this and the subsequent chapters, we will work though CE application development exercises that tinker with hardware.
Working to resolve modern security concerns, the security industry has evolved rapidly to develop more effective and cost-efficient... more
Working to resolve modern security concerns, the security industry has evolved rapidly to develop more effective and cost-efficient solutions, creating new technologies and improved products and services. Radio Frequency Identification (RFID) is one of these technologies that has gone through tremendous growth and gained widespread adoption globally in different segments of industry, government, and academia.
Following the home automation sample applications in the previous chapter, we’ll now work through the exercises in this chapter to add RFID applications to the project. The sample application for the exercise in this chapter shows how to interact with the RFID reader using the PhidgetFramework library and can be used as the building block or starting point for a security access control application.
Robotic applications provide an interactive and interesting way to learn and engage in the embedded development environment... more
Robotic applications provide an interactive and interesting way to learn and engage in the embedded development environment. The robotic applications can be complex, involving different type of sensors, responding to the sensors’ data, and using complicated algorithms to maneuver the robots. At the same time, robotic applications can be simple, controlling a simple robot’s movements. For academic institutions, robotics has been a learning resource for engineering students around the world.
For the hobbyist community, there is a huge audience who like to tinker with robotic hardware and develop applications for different types of robotic devices.
For the academic, hobbyist, and commercial developer community, Windows Embedded CE’s real-time capability, wireless networking resources, multimedia resources, small footprint, and quick start-up time, along with the efficient Visual Studio IDE, provide the best development environment for a broad range of robotic applications.
In this chapter, we will cover simple robotic applications for CE, using C#, to help all levels of robotic enthusiasts engage in and develop CE robotic applications.
We will use a Stinger robot built with a CE-enabled robotic controller, the Serializer WL robot controller board, and the eBox-4300 running CE 6.0 to work through the exercises in this chapter. Even without the Stinger CE Robot, it’s worthwhile to go through this chapter thoroughly to get an idea of how a CE-enabled robotic controller works.
In the preceding chapters, we covered the CE development environment, tools, how to develop applications using the VS2005... more
In the preceding chapters, we covered the CE development environment, tools, how to develop applications using the VS2005 IDE, and sample applications. For most of these chapters, we used the emulator to work through the exercises. In some of the chapters, we worked through the exercises with the eBox-4300 target device, using a DOS-based boot loader.
While the DOS-based boot loader is a great tool for the development process, DOS is a commercial product and requires a separate license to be distributed as part of another commercial product. In this chapter, we will show how to deploy a CE 6.0 device using the BIOS Loader to eliminate the need for booting to DOS and using the DOS-based boot loader to launch the CE runtime image.
We will work through an exercise to build and deploy a CE 6.0 device, using the eBox-4300 as the target device with the BIOS Loader to eliminate the need to use DOS. In addition, we will work through an exercise showing how to clone the sample code under the _WINCE600\PUBLIC directory to the OS design for customization.
We will use the Windows Network Projector (WNP) OS design template to build a Windows Network Projector CE 6.0 device and use the BIOS Loader as the boot loader to launch the CE runtime image when the device power is on. We will also work through an exercise to clone the WNP sample application to the OS design in order to customize the WNP application.
The CE device created through the exercises in this chapter can be used to upgrade an existing computer video projector with the same functions and features available from the new generation of Windows Network Projectors.
To work through the exercises in this chapter, the development workstation and the eBox-4300 device are connected to a local area network (LAN) with DHCP service to assign IP addresses dynamically. We will work through the following exercises in this chapter:
Create an OS design with the Windows Network Projector template.
Clone the Windows Network Projector user interface application for customization.
Configure and build the OS design.
Configure the eBox-4300 to boot using the BIOS Loader, to eliminate the need for DOS, and configure the BIOS Loader to launch CE.
A large pool of information resources is available for Windows Embedded CE. By searching the Internet with the correct keywords... more
A large pool of information resources is available for Windows Embedded CE. By searching the Internet with the correct keywords, you can find the helpful information and avoid what’s unnecessary. The challenge in locating information on the Internet is providing the correct keywords to the search engine.
This appendix provides a list containing Windows Embedded CE resources with brief descriptions.
The Windows Embedded CE 6.0 R2 development environment requires multiple pieces of software and updates for the software.... more
The Windows Embedded CE 6.0 R2 development environment requires multiple pieces of software and updates for the software. Improper installation and missing software are the two major causes for many of the problems encountered by developers new to the Windows Embedded CE environment. This appendix provides information regarding installation and the software needed to work through the exercises in the book.
A series of OS Design and application development exercises is provided throughout the chapters in this book. Some of these... more
A series of OS Design and application development exercises is provided throughout the chapters in this book. Some of these projects require certain versions of the programming library and board support package to function. When attempting to compile and build the sample project files provided as part of the software for this book, using mismatched versions of libraries and BSPs will generate errors. This appendix provides more detailed information about the sample projects and shows how to modify the projects to support different versions of the libraries or BSPs, when possible. This appendix also provides information about additional sample projects.
In addition to the code used for the exercises in this book, other code is available for download from
www.embeddedpc.net/ce6book/
Purchase Before purchasing this product, please be sure you have met all software and system requirements, and that you understand any limits placed upon its use.
Return Policy Wrox Chapters on Demand are non-returnable and non-refundable.
Reader Software Wrox Chapters on Demand are offered as PDFs, and they must be viewed using the Adobe Reader. If you do not have the Reader installed, it can be downloaded for free at Adobe.com.
Test Download As Wrox Chapters on Demand purchases are non-returnable, it is advisable that you test your system and software configurations with a free sample download before you place an order.
Usage Rights for a Wrox Chapter on Demand File Any Wrox Chapter on Demand product you purchase from this site will come with certain restrictions that allow Wiley to protect the copyrights of its products. After you purchase and download this title, you:
If you have any questions about these restrictions, you may contact Customer Care at (877) 762-2974 (8 a.m. - 5 p.m. EST, Monday - Friday). If you have any issues related to Technical Support, please contact us at 800-762-2974 (United States only) or 317-572-3994 (International) 8 a.m. - 8 p.m. EST, Monday - Friday).
Related Books