FAQ: Windows Embedded Compact

I could not create a new project using Visual Studio

  • Verify that you have installed Service Pack 1 for Visual Studio. See Help→About Microsoft Visual Studio.

  • If you have installed Internet Explorer 8 read:Some VS2005 and VS2008 Wizards Pop Up Script Error. It tells you to create the registry-key: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1000] 1207=dword:0.

How to debug an application running on Windows Embedded CE

There are 3 ways of remote-debugging a Windows Embedded CE device:

  1. Using ActiveSync

  2. Using an Ethernet-Connection

  3. Using Platform-Builder Kitl-Interface

The preffered and easiest way to debug an application is ActiveSync. This debug-transport is selected as default in the Seco SDK's and will be used by Visual-Studio and Embedded Visual C++ if you press F5 for debug. To establisch an ActiveSync connection, you need to install ActiveSync ( see Microsoft's download website at Download Drivers & Updates for Microsoft, Windows and more - Microsoft Download Center ) and connect the device to your PC using an USB-cable.
Another way to connect Visual-Studio to a target-device for debugging is an ethernet connection. This typically involves starting an application on the target-device and than connecting from Visual-Studio to this device.
The third possibility to debug an application is using the Platform-Builder Kitl-Interface. This is typically used, if the above debug-options don't give enough information or when debugging a driver. Kitl-debugging needs Microsoft Platform Builder and a special debug image to connect to. With a debug image you can step into most system calls. See the Getting Started Guides found in the Board Support Packages (Microsoft)-section for details.

How to debug an application running on Windows Embedded CE6 using Ethernet

If you want to debug an application using the TCP/IP -connection instead of ActiveSync follow these steps:

  1. Copy the ConManClient2.exe and CMAccept.exe from .\Program Files\Common Files\Microsoft Shared\CoreCon\1.0\target\wce400\armv4i\-directory to the device: i.e. to the flashdisk-folder. If you are not using the english-version of Microsoft-Windows, .\Program Files\Common Files\ might have another name; i.e. in german: .\Programme\Gemeinsame Dateien\.

  2. Start ConManClient2.exe on the device.

  3. Start CMAccept.exe on the device.

  4. In Visual Studio 2005 select Tools→Options..

    1. Device Tools→Devices. Show devices for platform: should show the device associated to this SDK, if not select it.

    2. Press Properties.. and the Configure button next to Transport:

    3. Set Use a specific IP address to the IP-address of the device.

    4. Close all dialogs with OK.

  5. In Visual Studio 2005 select Tools→Connect to Device..

  6. Select the device you configured previously and press Connect.

  7. Now you are connected to the device and may press F5 to debug the application.

How to Connect to Windows CE Device Without ActiveSync with Visual Studio 2008

see: How to: Connect to Windows CE Device Without ActiveSync

Can not connect using Visual Studio Built-In Remote Tools

If you can run the external Remote-Tools ( Program Files→Microsoft Visual Studio 2005→Remote Tools) but fail running Target→Remote Tools from inside Visual Studio and see this error message:
The Microsoft Active Sync reported the following error: Unable to load device side components. Please check server configuration settings.
Create a ARMV4-folder and copy the contents of the folder:
C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\target\wce600\armV4i
to
C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\target\wce600\armV4
Hint: Target→Remote Tools uses the tools at: C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\bin\wce600\, whereas the external tools use: C:\Programs\CE Remote Tools\5.01\bin\.

How can I change to another display without recompiling the OS-Image ?

  1. Seco offers a bootloader which is able to show a Slash Screen. With the Boot Picture the customer can stamp all display paramters with his *.bmp file into a bootable file. The bootloader is able to pass those paramters to the Seco display driver. These parameters include display-timings as well as the definition how the contrast and backlight is connected. Seco supports PWMs, i2C potentiometers, and eepots, a special FPGA solution or GPIO based switching functionality.

  2. All parameters can also be set by registry parameters. When the bootloader passes params, they can be read back via registry. So the customer can identify the display name and values.

My display flickers....

Display flicker can have several reasons:

  1. Display timings

    1. verify pixel clock → Control3 Register, last 8 Bits = PCD (pixel clock divider)

    2. verify horizontal frequency → Control1 Register

    3. vertical frequency → Control2 Register

  2. Ringing Sync lines, watch line termination → Look for Busstrength registers
    HKLM/Drivers/Display/Default/BufferStrength = 2 . . . 10 (default = 5)

  3. At very high resolutions set the Bus Arbitration Register → HKLM/Drivers/Display/Default/ARB_CNTRL = try with 0x04000F11

  4. Data and clock voltage levels too small → voltage translators needed ?

How to keep registry changes after a power-cycle

A small region at the end of flash is used to store the permanent registry (see Flash Division of Trizeps I to VI). If this is not availlable, the default-registry stored in the Windows CE image is used.
To store the registry:

  • Run Start→Programs→KuK Tools→Kuk Tools: Store.

  • Use drvlib_app.dll function: Registry_Save

To erase the registry:

  • Use bootloader command ereg.

  • Run Start→Programs→KuK Tools→Kuk Tools: Erase.

  • Use drvlib_app.dll function: Registry_Clear

How to keep files copied to the device after a power-cycle

All folders not stored under a drive or external store belong to the RAM-based filesystem (object-store).
To store files permanent copy them to the \flashdisk-folder or \TFFS-folder or to an externally mounted device i.e. \SDMMC Card, \Hard Disk ( USB-Drives), \Storage Card (Compact-Flash-Card). \flashdisk is a region of the NOR-flash where the OS-image resides. It is included in the system search path for programs and DLL's. \TFFS is the folder for a DiskOnChip-device ( if mounted on the Trizeps).

How to update my Device

There are several ways to update a Trizeps-Device.
Using the bootloader, you may update the device with:

  1. a SD,MMC or Compact-Flash card using the autoboot.bat-mechanism. See Using Bootloader Autoboot Function.

  2. the bootloader command interpreter. This allows updates through storage-cards, tftp and the serial interface. See Bootloader Command Reference.

When using Windows CE, you may update the image while the OS is running, with the flashupdate or OS-Update-tool. On newer images, you can modify the image-file to have the extension .os. Double-Tap this file in the explorer and it will automatically start flashupdate with this files.

How to control GPIO's

GPIO's are general-purpose pins, which may be configured as input, ouput or as special function pin. Most pins of the Trizeps-modules are GPIO's. Those pins can be used in application-programs, using Seco drvlib_app.dll ( see GPIO & SPin).

How to install a Program

Most programs or drivers distributed for Windows Embedded CE use a CAB-file. For Trizeps you need a ARM-version of this cab-file. If the install fails to execute, it could be that the install-software only check for StrongARM (Trizeps1). To install this software to newer Trizeps-modules, which ie. use PXA270 as processor, set:

[HKEY_LOCAL_MACHINE\KUKINIT] "FakeStrongARM"=dword:1

How to open a device index >= 10

Add the $device to the identifier:

HANDLE hfile=CreateFile(TEXT("\\$device\\COM10"), GENERIC_READ GENERIC_WRITE, 0,NULL, OPEN_EXISTING, 0, NULL);

Where to get the Product-Key for the Windows Embedded CE6.0 trial

The end? Not quite. ?

Abbreviations

BSP

Board Support Package. A Board-Support-Package contains drivers and software to build own OS-Images.

SDK

Software Development Kit. A Software-Development-Kit include header-files and libraries needed by an application to be build for a specified target-device.

_FLATRELEASEDIR

_FLATRELEASEDIR is a variable used by the Platform-Builder to specify the output-directory for generated files. This directory contains the Windows Embedded CE Image nk_ram,nk_rom and nk_zip.nb0.