Ultimately, one of the important steps in developing a Windows Embedded Compact device is to build an OS image, which includes the necessary software components and configuration, for distribution to the end user.

In addition to configuring an OS image to deploy to a target device for distribution to the end user, there are other situations where you need to deploy an OS image to the target device’s local storage, such as: 

·         To provide device that can launch an OS image from local storage, configured to launch one or more application for testing purpose.

·         To provide device that can launch an OS image from local storage, configured with the necessary components to support application development.

Depending on the hardware platform and associated application, deploying a Compact 7 OS image to a target device’s local storage involves different components and configurations, such as:

·         Different type of bootloader

·         Different type of storage device

·         Support and future software update consideration (After the device is distributed to the end user)

·         Etc.

In part-9 of this getting started series, we will work through the process to deploy an OS image to an x86 device to support application development, using an eBox-3300MX (eBox) as the target device with the following components:

·         Using SD flash as the bootable storage.

·         Using BIOSLoader to launch the OS image from local storage.

·         Using the DiskPrep utility to format and configure the SD flash.

Note:

The Compact 7 getting started series consist of 9 articles, and additional supporting articles, to provide information about OS design, application development and related development tools.  When application, hands-on examples written in step-by-step format with graphic illustrations are provided.

For more information about this series, visit:

    http://embedded101.com/Compact7/  

Although we are talking about deploying a Compact 7 OS image to an eBox to support application development in this application note, we can use the same process to deploy OS image to an x86 device for distribution to the end user.

Prerequisites:

To work through the exercises in this guide, we need to have the following:

·         An eBox-3300MX as target device with bootable flash storage.

Refer to the following URL for more information about the eBox-3300MX:

http://www.embeddedpc.net/eBox3300MX/

Preparing OS Image to Boot From Local Storage

During the development process, additional components are included to the OS image to support development and debugging tasks, such as:

·         CoreCon (Core Connectivity)

·         KITL (Kernel Independent Transport Layer)

·         Serial Debug

When launching an OS image from the target device’s local storage, built with the above debugging helper components enabled, the OS image may not be able to function as intended and may not be able to complete the boot process, such as:

·         When an OS image is generated with KITL component enabled, it attempts to establish connection with an unavailable KITL connection, which causes the OS not able to complete the boot process.

·         When an OS image is generated with the serial debug component enabled, the serial debug component capture one of the available serial port, making the port unavailable to the device’s application.

Prior to deploying the OS image to the device’s local storage, these debugging helper components need to be removed from the image, or disabled.

In this section, using the OS design project from part-3 of this series, Develop a Compact 7 OS Design, we will configure the OS design to generate an OS image to boot from local storage with the necessary components to support application development, as follow:

·         Disable KITL and Serial Debug.

·         Include CoreCon and other components to support application development.

·         Include the remote display application to the OS, to support remote viewing of the device’s desktop from the development workstation.

·         Configure the OS to launch the remote display application and CoreCon connection utility during startup.

Disable KITL and Serial Debug

Work through the following steps to configure the OS design to disable KITL:

1.       Launch MyCompact7 OS design project.

2.       From VS2008 menu, select ProjectàMyCompact7 Properties to bring up the MyCompact7 Property Pages screen.

3.       From the left pane, expand the Configuration Properties node and select the Build Options node.

4.       From the right pane, set the Enable KITL build option to No.

5.       Click Apply follow by OK to save the change and close the screen.

6.       From click on the Catalog Items View tab to bring focus to the Catalog Items View window.

7.       Expand the \Third Party\BSP\ICOP_eBox3300MX_70D: X86\Serial Port\COM1 folder, uncheck the Enable Serial Debug component.

Component to Support Application Development

Continuing from the previous section, work through the following steps to include the components needed to support application development:

1.       From the Catalog Items View window, expand the following folder:

\Core OS\Windows Embedded Compact\Applications – End User

2.       Include the following component to the OS design:

o   CAB File Installer/Uninstaller

3.       From the Catalog Items View window, expand the following folder:

\Third Party\Embedded101\

4.       Include the following components to the OS design:

o   AutoLaunch_v300_Compact7

o   AutoLaunch_v300_Compact7\Autolaunch CoreCon

The AutoLaunch component is an application launcher, which can be configured to launch one or more application during startup.

When the Autolaunch-CoreCon component is selected, CoreCon files and associated configuration to launch CoreCon connection utility during startup are added to the OS design.

Note:

The CoreCon component is intended to support application development and should not be included to OS image for distribution to the end user.

The AutoLaunch component, an application launcher, is suitable to be part of the OS image for distribution to the end user.

Remote Display Application

The remote display application enables developer to view the Compact 7 target device’s desktop remotely from the development station, which help eliminated the need to have a display monitor for the target device and help free up more workspace.

Continuing from the previous section, work through the following steps to add the remote display application to the OS design:

1.       From the Catalog Items View window, expand the following folder:

\Third Party\Embedded101\AutoLaunch_v300_Compact7

2.       Include the following components to the OS design:

o   Autolaunch Remote Display application

This component set the SYSGEN_CERDISP variable to include the remote display application to the OS image and includes additional registry entry to launch the application during startup.

Generate an OS Image to Support Application Development

From VS2008 menu, select BuildàBuild Solution to build the OS design.

After a successful build, a Compact 7 OS image (NK.BIN) is generated in the following folder:

C:\WINCE700\OSDesigns\MyCompact7\MyCompact7\RelDir\ICOP_eBox3300MX_70D_x86_Release

Configure Local Flash Storage to Launch Compact 7 OS

To configure local flash storage to launch Compact 7 OS image, we need the following:

·         Bootloader developed to support the target device and the flash storage.

·         Hardware and utility to program or load the bootloader and OS image onto the flash storage.

Different hardware platforms, such as ARM and x86, require different type of bootloader and mechanism to program or load the bootloader and OS image onto the flash storage.

There are multiple bootloaders and different type of storage devices available for x86 devices.  For this application note, we use the following components to configure the eBox:

·         BIOSLoader – A bootloader for x86 device.

·         DiskPrep – A software utility to format and configure storage device with BIOSLoader for x86 device.  This utility is available for download from the following URL.

http://archive.msdn.microsoft.com/DiskPrep

·         SD Flash – As bootable flash storage

·         SD-to-USB adapter – To attach the SD flash to the development station, in order to use the DiskPrep utility to format and configure the flash.

Note:

Generally, the hardware vendor provides the board support package, bootloader and associated resources to program and loads the bootloader and OS image to the target device’s local storage.

Work through the following steps to configure the SD flash for the eBox;

1.       Create the following temporary folder as the workspace:

C:\TempOS

2.       Copy the OS image file (NK.BIN) from the earlier step to the C:\TempOS folder.

3.       Download and place the DiskPrep utility, DiskPrep.exe, to the C:\TempOS folder.

4.       Attach the SD-to-USB adapter with SD flash inserted to the workstation.

5.       After the workstation detected and recognized the SD flash, launch DiskPrep with administrator privilege, as follow:

o   From the file explorer, navigate to the C:\TempOS folder.

o   Right-mouse-click on DiskPrep.exe and select Run as administrator.

6.       From the DiskPrep program screen, select the following:

o   From Disk Selection, select the detected flash storage.

o   From Use File System Format, select FAT, FAT32 or exFAT.

o   Keep the default Splash Screen selection (Use the default Windows CE splash).

o   Keep the default BOOT.INI selection (Place a BOOT.INI file on the disk).

o   From Physical Video Mode, select 640 x 480.

o   Keep the default Bit Depth selection (16 bpp).

o   Keep the default device name prefix (Use “CEPC” as device name prefix).

o   Select “Load specific image file copied from” and click Browse to select the following file:

C:\TempOS\NK.BIN

With the above selection, the DiskPrep screen should look like Figure-1.

Fig-1

Figure - 1

7.       From the DiskPrep screen, click OK to format and configure the SD flash.

After the above steps, the SD flash is formatted and configured with the following files:

·         BLDR (BIOLoader)

·         BOOT.INI (Boot configuration for BIOSLoader)

·         NK.BIN (Compact 7 OS image)

·         SPLASH.BMX (Graphic for splash screen)

 

Startup Splash Screen & Boot Options

When deploying Compact 7 OS image to a target device for distribution to end user, it’s a good practice to configure the device to display a customized splash screen and provides option to launch a secondary OS image or bootloader, which provides connectivity and additional resources to access the device in order to perform software upgrade and other service.

Custom Splash Screen

We can configure the Compact 7 device to display a custom splash screen during startup by changing the SPLASH.BMX graphic file.

To change the startup splash screen, do the following:

·         Create a graphic file suitable for the device’s display resolution, such as 640x480 in BMP, GIF, PNG or JPG format.  The BIOSLoader does not have graphic code to display high color image, and it’s best to use an image in 256 colors.

·         Convert the graphic file to the compressed bitmap format (BMX format).

·         Replace the existing SPLASH.BMX graphic file with the newly created custom graphic file.

The Windows CE splash generator utility, a community project on the Codeplex site, is created to convert BMP, GIF, PNG and JPG graphic file to the BMX format.  This utility is available from the following URL:

http://splashce.codeplex.com/  

Boot Options

We can configure the Compact 7 device with different boot options by editing the BOOT.INI configuration file.

In the earlier step, using DiskPrep utility to format and configure the SD flash, the DiskPrep utility included a BOOT.INI configuration file to the flash storage, with the following entries:

#

# BIOS loader configuation file

#

 

#

# Primary File to Load on startup:

BinFile=NK.bin

 

#

# Device name root string:

DeviceNameRoot=CEPC

 

#

# Video Setting:

Video=on

 

#

# Physical screen width

# Must be >= DisplayWidth

PhysicalWidth=640

 

#

# Physical screen height

# Must be >= DisplayHeight

PhysicalHeight=480

 

#

# Display Depth

# Possible values are 8, 15, 16, 24, 32

DisplayDepth=16

 

#

# Display width

DisplayWidth=640

 

#

# Display height

DisplayHeight=480

By changing and adding entries to the BOOT.INI file, the device can be configured to boot up as follow:

·         During boot up, the device displays a splash screen and delay 15 seconds before launching the default Compact 7 OS image, NK.BIN.

·         During boot up, while the device is displaying the splash screen, press “1” before the 15 seconds delay timed out to launch the Ethernet bootloader (EBOOT.BIN), to download OS image from the development workstation.

·         During boot up, while the device is displaying the splash screen, press “2” before the 15 seconds delay timed out to launch a secondary OS image, NK2.BIN.

Follow is the modified BOOT.INI file listing, with the above behaviors:

#

# BIOS loader configuration file

#

 

#

# Primary File to Load on startup:

BinFile=NK.bin

 

# Boot delay (in seconds) in which to select alternative image

Delay=15

 

# Alternative image

# While booting press the key corresponding to the suffix char

# (e.g. “1” for BinFile1, “2” for BinFile2, etc.) to boot the alternative image

BinFile1=EBOOT.bin

BinFile2=NK2.bin

 

#

# Device name root string:

DeviceNameRoot=CEPC

 

#

# Video Setting:

Video=on

 

#

# Physical screen width

# Must be >= DisplayWidth

PhysicalWidth=640

 

#

# Physical screen height

# Must be >= DisplayHeight

PhysicalHeight=480

 

#

# Display Depth

# Possible values are 8, 15, 16, 24, 32

DisplayDepth=16

 

#

# Display width

DisplayWidth=640

 

#

# Display height

DisplayHeight=480

 

In addition to modifying the BOOT.INI configuration file, we need to copy the following file to the flash storage:

·         EBOOT.bin (Ethernet bootloader)

·         NK2.BIN (A secondary Compact 7 OS image)

Summary

Depending on the selected hardware platform, storage and interfaces, there are different options to deploy Compact 7 OS image to a target device.  The process and components discussed in this application note is just one of the options for x86 devices.

Talk to your hardware development team, or vendor, to get more information about the best approach to deploy OS image to the target device.