Tutorial: Building an Embedded Operating System using Windows XP Embedded

  1. Peskey's Avatar
    Peskey Peskey is offline Abacus

    Post Building an Embedded Operating System using Windows XP Embedded

    Estimated Time
    8 hours, including the installation and configuration of the build tools.
    Skills Required
    A basic understanding of Windows XP.
    Parts Required
    A Windows compatible Computer system that can boot from a USB drive.
    A USB flash disk 512 MB or larger.
    Tools Required
    The Windows Embedded Toolset
    Building an Embedded OS using Windows XP Embedded

    As the sizes of x86-based single board computers (SBCs) shrink it becomes possible to more easily integrate them into a robotics system. When using a full featured SBC, it is desirable to install a desktop operating system in order to make use of the simple plug and play features found on modern desktops. While this offers many pros to the roboticist, there can be a lot of bad that comes with the good. Specifically, desktop operating systems are not designed for resource constrained systems. An embedded system designer must generally work with limited resources, so they attempt to extract all of the power that the system is capable of. Chances are that an SBC used in a robotics system won't be powered by the most powerful desktop class CPUs, so the operating system may consume more of the SBCs power than the developer intends. The answer to this issue is to either use a tool such as nLite to strip components out of a stock OS install or to use an operating system intended for embedded use. This tutorial covers the latter using the Windows XP Embedded (XPe) SP2 Feature Pack 2007 tool chain.


    Windows XP embedded (XPe) is essentially a set of tools that allow you to build a highly customized version of Windows XP Professional. In XPe, all of the binaries that make up Windows XP Pro are broken into thousands of components. By picking only the components that you need, you can develop an OS with all of the features that your project requires in a small footprint. This means that regular Windows programs, including .NET based programs, can run in your custom OS as long as you have included all of the components that your program will depend on. For instance, you cannot run any networking applications without including networking components. Windows XP Embedded is a good fit for developers who are already familiar with the Windows platform who do not have real-time requirements.

    In addition to the XP Pro binaries, XPe contains a number of components that are specific to embedded designs, known as embedded enabling features. These features make a number of interesting embedded solutions possible, such as headless images (no display required), boot from CD, boot from USB, non-persistent operation (all changes are lost between boots, always giving you a "clean" device) or even defining your own shell program to replace the standard Windows GUI.

    The XPe tool chain is comprised of four separate programs:

    • ta.exe or tap.exe

    These are target analyzer programs; they can be used to develop a baseline component list for your target OS. These tools work by analyzing fully operational Windows operating systems that are running on your target hardware. The output of these programs is a devices.pmq file (also known as a pumpkin file) that lists all of the devices registered with the operating system. This file can later be used to create a custom component that will pull all of the components required to make the devices listed in the pumpkin file operational in your target OS. ta.exe can be run from DOS, but doesn't obtain a full device listing. tap.exe can only be run from within Windows or WinPE, but it gets a full listing of devices currently operational in the operating system.
    • Component Designer

    Component designer is the tool used to create custom components in XPe. Custom components can either be macro components (components that pull other components into the target OS) or to include additional functionalitynot built into the base component database, like additional device drivers.
    • Components Database Manager

    XPe is centered around a SQL database containing all of the componentized binaries required to make a custom Windows OS. As you can probably guess, the database manager is the tool used to manage the component database. Any custom components that are created in the Component Designer would be imported into the database using this tool.
    • Target Designer

    Target Designer is the tool used to actually define all of the components in your target OS. It is also the tool that builds the OS for you.
    (Page 1 of 4)

Replies to Tutorial: Building an Embedded Operating System using Windows XP Embedded
  1. Re: Building an Embedded Operating System using Windows XP Embedded

    Ah, this brings back memories. I used Windows NT and then XP embedded extensively at work between 2000 and 2005. The embedded tools were always a real pain to deal with, and I thought the user interfaces were clumsy, non-intuitive and poorly designed. It would also often take quite a while to build a system, and build failures were common. In 2004 it took me about a week of solid effort to build an XP embedded system to fit onto a 1GB flash disk. I also completely hacked NT4 embedded to remove everything which wasn't needed (including Internet Explorer) and got it onto a 128MB Flash disk (the largest size available in 2000/2001). I don't know if things have changed, but the windows embedded tools used to be really expensive - over 1000 - but for work purposes the cost of software was negligible compared to the total cost of the industrial robot.

    These days I'd probably use a small linux distro to do the same job, such as Puppy or Tiny Core, or just bolt a netbook onto the robot.

Closed Tutorial