bulat-icon  Articles  

[+]  Articles


Porting Windows CE .NET from 4.0 to 4.2

by Harishankkar.S

In this article we will cover how an existing board based on Intel StrongARM(SA1110) running Windows CE .NET 4.0 can be upgraded to 4.2. The following are the issues that have to paid due attention before we go further.

• No UDA1341 support in 4.2(Our board had a UDA1341 audio codec)
• OEMCacheRangeFlush
• Keyboard driver

First steps

Copy the BSP directory from 4.0 to 4.2. If the BSP directory is econtest1 then we should copy the WINCE400\econtest1 to WINCE420\.. In the BSP wizard create a new BSP with the processor named as ARMV4 and the platform directory as econtest1. With the new BSP created, create a new platform based on this new BSP.

UDA1341 Support

Intel has stopped shipping StrongARM processor and also the development board associated with the same processor. Microsoft since then from 4.2 has withdrawn its support for StrongARM. Due to this the UDA1341 codec that was part of the Assabet board does not find any support in 4.2. From the File->Manage Catalog features remove audio.cec. Edit the audio.cec file using notepad and add the following

Name ( "UDA1341" )
GUID ( {BE48601E-319E-4D79-B556-2376B9424AA5} )
Description ( "Philips UDA1341 Audio driver" )
Version ( "" )
Locale ( 0409 )
Vendor ( "Microsoft" )
Date ( "10/30/2001" )
Children ( "{679F95D2-0A63-485A-A602-1E329A38D452}" )
Variable( "PB_REQUIRES_SYSGEN", "uda1341" )
Variable( "BSP_WAVEDEV_UDA1341", "1" )
SizeIsCPUDependent( 1 )
GUID ( {4AD37984-D5C1-4AC8-B4A3-585AA45C39E1} )
Step ( BSP )
CPU ( "default" )
Action ( '#SRCCODE(SOURCES, "$(_WINCEROOT)\platform\econtest1\drivers\wavedev\uda1341")' )


After this is done import the audio.cec from File->Managecatalogfeatures. Refresh the catalog. You should find the UDA1341 in the Audio drivers list. Just drag and drop this in to your platform.


Windows CE 4.2 replaces calls to FlushDCache, FlushICache, TLBClear with OEMCacheRangeFlush. Either you can link this library to your kernel or follow the crude method. Copy the public\common\oak\csp\arm\SA11x0 directory to the WINCE42\platform\kernel directory. More files will be needed to be copied from the CSP and the ARM core directories here. After repeated builds for a small platform size this should be a walk through.

Keyboard driver

Microsoft has introduced a layer between the GWES and the keyboard driver. This is called as the layout manager. The idea is that by having the same keyboard layout multiple formats can be interpreted in run time. For example we can switch in run time from a English one to a Japanese keyboard.

In our case we have a standard 8042 keyboard and we do not need any layout manager interface for our keyboard. It is better here to use the same kbdmouse.dll than again recompiling it for 4.2. In the WINCE420\platform\econtest1\drivers directory edit the dirs file to exclude compiling of kbdmouse directory. On giving a build of the kernel we should be getting an error saying that kbdmouse.dll not found. Copy the WINCE400 kbdmouse.dll to the 4.2 release directory and then give a make image. The image should be ready. To allow the build to take place successfully copy the kbdmouse.dll in any of the following directories

%_PROJECTROOT%\ cesygen\oak\files

The fact is that during the release phase of the build the files are copied from the above directories(Replace the above shell variables with the actual) to the release directory.


e-con Systems is specialized in Windows CE based solution, For Windows CE Driver development, please write to sales@e-consystems.com with the subject Windows CE driver Development. For Windows CE BSP Development, Please write to sales@e-consystems.com with the subject Window CE BSP Development.