Friday, December 28, 2007

Enable Remote Display Application - CERDisp

The "Remote Display Application" or CERDisp is a Windows CE functionality that gives you the possibility to see remotely the content of the Frame Buffer of your device, and to interact with it through the mouse and keyboard. This tool is composed of two part, a client and a server.

The server :
CERHost is the host part of this tool, and must be launched on your computer before the client. This tools will wait for client connections.
The application can be found in the following folder :
C:\WINCE600\PUBLIC\COMMON\OAK\BIN\I386



The Client :
CERDisp is the Windows CE client and must be integrated inside your Windows CE binary image, by selecting the "Remote Display Application" component in your OSDesign. The client will connect to a dedicated server, for which the settings are stored in the registry. Add the following registry settings to your Project.reg file to setup CERDisp.
[HKEY_LOCAL_MACHINE\SOFTWARE\CERDISP]
"Hostname"="nameoftheserver"

The Hostname is the name or the IP address of the server. Use ppp_peer the as Hostname if you want ot use CERDisp throught an ActiveSync connection.

Tip to use this tool :
As you have to launch CERDisp on your device, you need an access to your device through a command prompt. That's why in that case I suggest you to enable a Telnet server to have a network access to your device and be able to launch the client.
[HKEY_LOCAL_MACHINE\COMM\TELNETD]
"IsEnabled "=dword:1
"UseAuthentication"=dword:0
The above settings are enabling the telnet server and removing the authentication. So you may have network security risk to use those settings AS IS on your device.

Launch CERDisp :
Before launching CERDisp, you have to launch CERHost on your computer. To launch CERDisp you have to use the following command line :
Cerdisp –c
The -c parameter is used to specify that the application have to connect.


Note : Do not store any registry settings about the host if you do not have a specific dedicated host. You may be able to select your device in a list under CERHost (File -> Connect).

- Nicolas

Thursday, December 20, 2007

Error while opening pbxml file

If you have the following error while opening a Windows Embedded CE 6.0 OSdesign, that means that in the path to this OSDesign there is a space character.

Platform Builder reported an error while trying to load the OS design file:
System.ArgumentException: Invalid characters in path.
The OS design could not be loaded.

The solution is to remove this or those space characters from the path to your OSDesign files, by simply removing the space or replacing the space by an underscore (_). Usually OSDesign files are located inside the OSDesign subfolder of the WINCE600 folder. By default the WINCE600 is located at the root on the C hard drive.

Do not move your OSDesign to your desktop, as this one is located in C:\Documents and Settings\user name\Desktop, and this path contains a space !!


- Nicolas

Wednesday, December 19, 2007

Enable ROM-only File System under Windows CE 6.0 (R2)

The Windows Embedded CE 6.0 (R2) operating system mounts a File System at startup. By default, this File System is located in RAM and the content is the ROM (content of the nk.bin), this is the RAM and ROM File System. This FS is represented by a backslash (“\”). Additional File Systems can be mounted on the system (external storage) and will be accessible through subfolders of the root (\Hard Drive,…). The inconvenience with this configuration is that your persistent files must be located inside this subfolder, but you may want to be able to store those persistent files directly at the root of the main File System. In that case you have to enable the ROM-only File System.

To be able to mount the storage device as a root folder we have some prerequisites to check.

Mount the storage device in boot Phase 1
The system is booting in different step, and drivers are usually loaded during the last boot step. To mount this storage area as root folder, you must load your storage device driver in the early steps of the boot. So Device Manager must be loaded first and then your block driver.

Start the Device Manager
The device manager must be start at this Phase in order to be able to load the storage driver.
[HKEY_LOCAL_MACHINE\init\BootVars]
"Start DevMgr"=dword:1


Set the block driver to be loaded at this Phase of the boot.
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\]
"Profile"="FlashDisk"

"Flags"=dword:1000


You can notice in the registry setting above that we are associating this Storage driver to a Storage Manager profile using the Profile key. This profile will be used later to define the settings for this storage device (File System type, auto format, …). Flags key is used to specify to the device manager when the driver must be loaded.

Set the storage profile
Once the storage driver definition is done we have to specify to the Storage Manager how to use this storage space :
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk]
"AutoMount"=dword:1
"AutoPart"=dword:1
"AutoFormat"=dword:1
"PartitionDriver"="mspart.dll"
"MountAsBootable"=dword:1
"Name"="NANDFLASH"
"Folder"="NandFlash"
"DefaultFileSystem"="FATFS"

For this storage (FlashDisk) we are enabling the FATFS file system, the content will be automatically formatted (AutoFormat) and partition will be created if the storage is blank (AutoPart). But one of the most important parameters is the MountAsBootable parameter, that will allow the system to access this storage during the boot.

To complete the configuration of the device we need to set the File System properties to finally make this Storage Device as Root.
[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\FlashDisk\FATFS]
"MountAsRoot"=dword:1
"MountAsBootable"=dword:1
"MountPermanent"=dword:1


Enable the ROM-only File System
At this step we are ready to select the ROM-only File System from the catalog to turn on this feature. After selecting this component you have to do a Clean Sysgen to fully enable the feature in your Windows CE binary image.
Note : You must include the file system replication filter in your OS design for ActiveSync to work correctly when you are mounting a file system as the root directory.

Erase the Storage content
Before booting the device for the first time, the content of the storage device must be completely erased (most of the bootloaders provide a menu to clean up your storage device).
After booting all the files that you will store under \ will be accessible on the next boot.

Final note
To clean up the registry file and to insert those settings only when the ROM-Only File System option is selected in your OSDesign, you can use IF statement with the SYSGEN_FSROMONLY variable.

- Nicolas

Thursday, December 13, 2007

VS2005 and square selection

To make a square selection under Visual Studio 2005, use the Alt key and your mouse.


- Nicolas

How does Windows Embedded CE 6.0 starts ?

Kurt Kennett, Senior Development Lead wrote a very interesting article on the early steps of the start of the Windows CE Kernel.

Article : How does Windows Embedded CE 6.0 starts

- Nicolas

Tuesday, December 4, 2007

Reminder - Windows Embedded CE 6.0 Webcast

The Windows Embedded CE 6.0 Drivers development webcast session is planned for tomorrow (12/05/2007) at 1h00 PM PST.
It's not too late to register for this event : Details and Registration (http://www.microsoftembeddedseminars.com/about.aspx?seminarid=88)


- Nicolas

Friday, November 30, 2007

Creation of nk.nb0 file (nb0)

The nk.bin file is the Windows CE binary image that is usually transfered from Platform Builder to the Windows CE device, but for platforms you need to provide the nk.nb0 files. The nb0 files is a raw version of an bin file, that means that this file can be directly loaded in the SDRAM and executed from there.

Manual generation of an nb0 :
Platform builder environment provide two tools for the generation of the nb0 files. The first one Viewbin used to see the properties of the bin file, the second one Cvrtbin used to convert the bin file into an nb0 file using the information provided by viewbin.
So open your OSDesign and go to Build -> Open Release Directory in Build Window, it will show up a command line window setup for your project.
Use : viewbin nk.bin
ViewBin... nk.bin
Image Start = 0x00220000, length = 0x00AC136C
Start address = 0x0023D618
Checking record #72 for potential TOC (ROMOFFSET = 0x80000000)
Found pTOC = 0x80ce02c0
ROMOFFSET = 0x80000000
Done.

Using this output, the following code example shows the syntax used to create an nk.nb0 file, using the values found in the Image Start and length lines:
cvrtbin -r -a 00220000 -l 00ac136c -w 32 nk.bin

Values may vary for your nk.bin as those information are related to the settings of your BSP and OSDesign.

- Nicolas

Tuesday, November 20, 2007

Static IP address for KITL (VMINI)

When you want to connect to your Windows CE device using KITL over Ethernet and having the network support enable, you have to select the following components and settings in your OSDesign :
  • TCP/IP
  • Wired Local Area Network (802.3, 802.5)
  • KITL support in you OSDesign settings
At this time the VIMINI driver is mounted on your system to provide access to the network API and support even if your physical network interface is already handled by KITL. This Virtual network interface (Virtual Mini Adapter) requires an IP address like another network interface.
If your network have a DHCP server enable, this interface will get an IP Address automatically. If it's not the case, you will have a default IP address (169.254.50.67) associated to this network interface and unfortunately this interface cannot be used as is. You must provide a valid IP address to this VMINI network driver through the registry.
; Enable static IP address for VMINI1
[HKEY_LOCAL_MACHINE\Comm\VMINI1\Parms\Tcpip]
"EnableDHCP"=dword:0 ; Disable the DHCP/ enable static IP
"IPAddress"="192.168.1.3"
"SubnetMask"="255.255.255.0"
Note : VMINI1 is the correct key path to point to the registry settings used by this driver.
Those settings must be added to your project.reg as those settings are specific to your current OSDesign and not linked to the BSP.
Using the same technique you can set a Static IP address to other network interfaces available on your device.

In the case of the usage of the Emulator BSP, the network interface used in this case is not VMINI1 but the NE20001 driver provided by Microsoft, emulating the access to your real network interface. In this particular case the registry settings will be :
; Enable static IP address
[HKEY_LOCAL_MACHINE\Comm\NE20001\Parms\Tcpip]
"EnableDHCP"=dword:0 ; Disable the DHCP/ enable static IP
"IPAddress"="192.168.1.3"
"SubnetMask"="255.255.255.0"

- Nicolas

Wednesday, November 14, 2007

Windows Embedded CE 6.0 R2

Windows Embedded CE 6.0 R2 (Release 2) has been released and is available for download from the Microsoft Website (link).

This version include the following new features :

  • Support for Remote Desktop Protocol (RDP) 6.0. RDP 6.0 includes support for Secure Sockets Layer/Transport Layer Security (SSL/TLS), Network Level Authentication, Server Authentication, and 32-bit color graphics.
  • Support for Microsoft Web Services on Devices (WSDAPI), which is an unmanaged code implementation of the Devices Profile for Web Services (DPWS) protocol standard.
  • Support for Video over IP telephony calls.
  • Additional Voice over IP (VoIP) functionality, including a VoIP boot loader application and resources for QVGA landscape mode and QVGA portrait mode user interfaces.
  • Support for the Pocket Outlook Object Model (POOM) and ActiveSync in the VoIP Home Screen and VoIP Contacts applications.
  • New sample board support packages (BSPs).
  • Support for Auto Proxy Configuration Support in Internet Explorer 6 for Windows Embedded CE.
  • New driver that supports USB CCID Smart Card readers.
  • Support for Windows Media Player OLE Control Extension (OCX) 7.
  • New componentized flash driver and new partition driver for the management of flash memory.
  • Improved Secure Digital (SD) bus driver that supports SDHC specification 2.00 functionality, for example Secure Digital High-Capacity (SDHC) cards.
  • Sample Serial ATA driver, extended from the ATAPI driver, which supports the Promise PDC40518 SATA card.
  • Support for pluggable third-party font drivers.
  • Support for Extended File Allocation Table (ExFAT) and FAT32 on the x86 BIOS Loader, which provides access beyond 2 gigabytes (GB) of hard disk space.
This release also includes the QFE for Windows Embedded CE 6.0 'till August 2007, and requires the installation of CE 6.0 SP1. For all the requirements of this release you can go here.

More details on this release will be available later....

- Nicolas

Tuesday, November 6, 2007

Subversion (SVN) and Visual Studio 2005

Tigris, the subversion (SVN) software developer group, is currently working on the integration of the support of Subversion under Visual Studio 2005. The Ankhsvn plug-in give you a chance from VS2005 to manage files version control on C#, C++ projects.


Unfortunately you could not use this plug in to manage files under version control for a BSP.

For downloads go to http://ankhsvn.tigris.org/

- Nicolas

Windows Embedded CE 6.0 Webcast

Microsoft in partnership with Adeneo organize a live webcast on Windows Embedded CE 6.0. Two sessions are planed in the next few days to give you a chance to discover the Windows Embedded CE 6.0 environment. The first session will be an introduction to Windows Embedded CE 6.0, and the second, do by myself, will focus on the development of device drivers under Windows Embedded CE 6.0 R2.

Scheduled Sessions :
- Introduction to Windows Embedded CE 6.0 and Platform Builder (details and registration)
Speaker : Nick MCCarty - Software Embedded Engineer with 1 year experience in Windows CE

Date : November 07 2007 @ 1:00 PM - 2:00 PM PST

- Development of Drivers with Windows Embedded CE 6.0 R2 (details and registration)
Speaker : Nicolas BESSON - Embedded Project Manager with 6 years experience in Windows CE
Date : December 05 2007 @ 1:00 PM - 2:00 PM PST

I'm waiting for you for those two events.
- Nicolas

Tuesday, October 23, 2007

Join us at the Windows Embedded CE 6.0 R2 Launch Event and get ready to build the next generation of smart, connected devices.Windows Embedded CE 6.0 R2 adds even more exciting technologies to the CE 6.0 operating system - technologies that embedded developers can use to boost their creative capabilities and easily establish connections to Windows Vista, Windows Server 2008 and other devices (WSD technologies, VoIP technologies).This is a virtual event, so you'll be among the first to get up to speed on the latest features in CE 6.0 R2, right from your PC. There's no travel, no registration fees, and no downtime required - just sign up and attend from your office, living room, or any remote location...

Inscription

- Nicolas

Tuesday, September 25, 2007

Does PB 5.0 work side-by-side with PB 6.0?

Your are currently using Windows CE 5.0 and you plan to move to Windows CE 6.0 but being able to use Windows CE 5.0. So you have to be aware of some specifities of those two tools before moving forward in the installation of Windows CE 6.0.
Check out the Doug Cook article for that.

- Nicolas

SDHC fix for large SDCard capacity

Microsoft released a patch (in May) for the support of high capacity SDCard under Windows CE 5.0, now it can support SDCard larger than 1GB.
You can check it out here.

- Nicolas

Monday, September 24, 2007

Windows CE QFE's

Every month the Windows Embedded team is realizing Quick Fix Engineering (QFE) to fix some software issues for Windows CE 5.0 and Windows Embedded CE 6.0.
Those patches have to be installed on your development computer. So you have to regenerate your Windows CE binary image to integrate those new improvements in your device. Every year all the QFE's are grouped into one single MSI file to reduce the time spent to install those QFE's on a clean computer.
So do not forget to update your development computer every month :-)

All QFE are available from the Microsoft website
- Nicolas

Monday, September 17, 2007

How to fix an ordinal error

Most of the time if your are using an SDK to build your application that doesn't match with the current Windows CE binary image you are using to run this application, your application could not be launched and you have an ordinal error :
"Function @ Ordinal 1788 missing in Module 'coredll.dll'"
That's mean that your application is using a Win32 API that was available in the SDK but is definitively not available in your image. So a Component is missing in the OSDesign.

How could I find the missing function ?

To find the missing component you have to find where ordinals are defined for the coredll.dll (the Dll containing the most common Win32 APIs). When you are building a Dynamic Library (DLL) you always have to provide the entry points of the final binary file, as you can have private and public procedures in a DLL, the public functions are definied in a def file using by the linker to export those entry points.
For the Coredll.dll library each function is associated to an ordinal, so in the Coredll.def file you will find all the Win32 entry points.

Where to locate the coredll.def file ?

The Coredll.def file will be proceed during the sysgen phase of the build, so depending on the components you selected in the OSDesign some functions will be disabled by CESYSGEN filtering. That's the main goal of the sysgen. So instead of looking at the resultant file, you have to look at the original one.
This file is located in :
_WINCEROOT\PUBLIC\COMMON\OAK\LIB\_CPUDEPPATH
Depending on the processor family of your target device, you will not have the same content as some functions have aliases depending on the processor for which it is compiled for.

How could I identify the missing component ?

Open the coredll.def file corresponding to the processor family you are using and search for the missing ordinal. In our case we are looking for ordinal 1788.
....
; @CESYSGEN IF SHELLSDK_MODULES_AYGSHELL
; AYGSHELL thunks
SHDoneButtonI=xxx_SHDoneButton @1782
SHGetAppKeyAssocI=xxx_SHGetAppKeyAssoc @1783
SHSetAppKeyWndAssocI=xxx_SHSetAppKeyWndAssoc @1784
SHSetNavBarTextI=xxx_SHSetNavBarText @1785
SHSipPreferenceI=xxx_SHSipPreference @1786
NotSystemParametersInfoI=xxx_NotSystemParametersInfo @1787
SHCloseAppsI=xxx_SHCloseApps @1788
SHNotificationAddI=xxx_SHNotificationAdd @1806
SHNotificationUpdateI=xxx_SHNotificationUpdate @1807
SHNotificationRemoveI=xxx_SHNotificationRemove @1808
SHNotificationGetDataI=xxx_SHNotificationGetData @1809
; @CESYSGEN ENDIF
....

After locating the correct ordinal in the file scroll up to the previous @CESYSGEN IF statement. This one is used to include those APIs only in the case of the IF statement is evaluated to TRUE. In our case the SHELLSDK_MODULES_AYGSHELL variable must be set to have access to those APIs.

Most of the time the name of the variable is explicit enough to identify the component linked to it. In that case we identify the AYGSHELL component name. But some times it more complex to identify the module associated with.
So next time we will look more in details in the deptree mechanism to identify component and sysgen variables naming convention.

Stay connected ...

- Nicolas

Thursday, September 6, 2007

ESC East at Boston

Attending ESC East at Boston, MA from 9/18 to 9/21 ?
Come and visit us on Microsoft Booth, #401 !

For more details about this conference go to the ESC website

- Nicolas

Thursday, August 16, 2007

Windows CE CEDebugX

On his blog, Mike Hall introduces one of the cool new features available with the Windows CE SP1, the CEDebugX. This tool gives you the possibility to debug your platform applications and drivers, by detecting memory leak, memory corruption, deadlocks ....
Here's a link to the MSDN Channel 9 Video Page - and a link to the full screen video (WMV).

-Nicolas

Wednesday, August 15, 2007

Debugging technics for Windows CE (Part 2)

In Part1, we removed the driver or the application from the Windows CE image, but how to make sure that the file in my RAM file system is the last one I built !! Because if I modify my application and I did not re-download my Windows CE image, there is an instance of my driver or application already available in the RAM file system (downloaded by the OS on the previous launch of this module).There is an option in Platform Builder to force the system to always load the file from the desktop even if an instance is available on my RAM file system. You have to go in Target followed by Release Directory Modules then click on Add, and select the corresponding binary file in the list.
Now the OS will load it frmo your hard drive..


-Nicolas

Tuesday, August 14, 2007

Debugging technics for Windows CE (Part 1)

Everybody want to reduce the time used to debug developments, so I will share with you my tips to spend less time in debugging for your drivers, applications ...
First things that we can avoid is to download the Windows CE image to the device every time we made a modification of the driver or the application. So the idea is to exclude the driver or the application from the nk.bin. So in that case how my driver or application can be loaded ?
If KITL is enable in your Windows CE image you have by default an NFS (Network Filesystem) mounted in the RAM filesystem under Release folder. This NFS is the content of you _FLATRELEASEDIR on you desktop computer. By using this NFS you can access the content of your _FLATRELEASEDIR directly from Windows CE. When accessing a file for loading, the OS is using this NFS partition to find missing files in the current RAM filesystem. In our case the file is not available in the RAM filesystem but in the NFS partition, so the OS will copy it from this network path to the RAM filesystem.
In other words, if your binary file is not in the NK.bin but available on your harddrive in the _FLATRELEASEDIR, the system will be able to load it.

You can imagine now how to avoid the download of the Windows CE image every time you modify your source code.

-Nicolas

Tuesday, August 7, 2007

Windows CE 6.0 and SDKs

Every time you have to develop an application using VS2005 for Windows CE devices (smart devices) you have to generate the SDK associated to the OSDesign used to generate the current Windows CE binary image.
The SDK contains all the API enabled by selecting components in the OSDesign for the Common component and specific components (drivers, BSP applications, ...). Those APIs will be available in you VS2005 project, so the compiler will be able to build your application. This protect you on the usage of unsupported API by your Windows CE Image, in that case checking is done a build time and not at runtime.
Under VS2005 development environment they are some restrictions, that will be solved in the future by Microsoft (Hope so !). You must add the following components to your OSDesign, even if you do not need those functionalities :
  • AYGShell API Set
  • Windows Networking API/Redirector (SMB/CIFS)
Otherwise you will have that kind of error during the build :
fatal error C1083: Cannot open include file: 'winnetwk.h': No such file or directory

-Nicolas

Thursday, July 12, 2007

Remote Tools Framework for Windows CE

You want to use the Remote Tools but you do not want to install Platform Builder 6.0 extension, on your computer. So the Remote Tools Framework for Windows CE is the solution to your need.
That Framework also provides tools and facilities to implement your own Remote Tools.

[Update 7/12] : You still need to install Visual Studio 2005 to use the framework

- Nicolas

Wednesday, July 11, 2007

Adeneo gets EMEA Windows Embedded Partner award

Adeneo has received the Windows Embedded Partner Excellence Award for 2007, for the EMEA (Europe, Middle East, Africa) region. The company received this award in the System Integrator category, as part of Microsoft's recent Mobile & Embedded Developers Conference (MEDC) in Berlin.

- Nicolas

Customise your x86 device splash screen

Some of you are using the CEPC or x86 targets and wants to customize the splash screen displayed by the Bios Loader at startup. This loader can only display bmx files.
But what is the type of those files !! Is there any editor available for these files ??
Mike Hall has the answer and wrote an article about those files, this article is available here.

Thanks to mike !!

-Nicolas

Monday, July 9, 2007

Dealing with OAL IoControls

I found a good reference article on the differences between Windows CE 5.0 and Windows CE 6.0. One of the paragraph is linked to the KernelIoControl call restrictions under Windows CE 6.0.

So I give you more details about it.
On the previous version of Windows CE, user mode code could use any valid OAL IoControl code when calling KernelIoControl. But it's not the case under Windows CE 6.0, as it provides security enhancement, now you can only call IoControls listed in a callable OAL IoControl code list. This list is predefined and limited to a small subset of all IoControls code supported by the OAL. This list can be extended by modifying a Dll provided as public code in public\common\oak\oalioctl folder of Windows CE 6.0. Its main purpose is to intercept all OEMIoctl calls coming from user mode before they are routed to OAL code.
So your application might generate a failure if you are trying to call one of the OAL IoControl that is not listed. In your BSP, if you want user to be able to use those IoControls, you will have to explicitly add them to the list.
For example, under Windows CE 6.0 calling IOCTL_HAL_REBOOT in your application might failed until this code is added to the list by the OEM.
The default OAL IoControl callable codes is limited to the same list that would have been callable by un-trusted applications in Windows Mobile :
  • IOCTL_HAL_GET_CACHE_INFO
  • IOCTL_HAL_GET_DEVICE_INFO
  • IOCTL_HAL_GET_DEVICEID
  • IOCTL_HAL_GET_UUID
  • IOCTL_PROCESSOR_INFORMATION


- Nicolas

Monday, July 2, 2007

Welcome to a new MVP

Microsoft just awarded Fabien Decret, a friend of mine, as MVP in Windows Embedded technology... So now Adeneo count 4 awarded MVP employees.
Here is the link to his personnal blog : http://fabdecret.blogspot.com/


Well done guy, and welcome.

- Nicolas

Thursday, June 28, 2007

Remote Tools, ARM processor and Windows CE 6.0

You are using an ARM processor, ActiveSync, and the Remote Tools are not working with your device...
Then you are reading the right article !
Lots of users want to use Remote Tools using ActiveSync, but the connection always fails. Why ?

Remote Tools launched from Platform Builder 6.0 are using platman (Platform Manager) over ActiveSync to connect your device, when platman starts, it asks Windows CE to return the processor type, through a KernelIoControl, to download the right binary file to the device (client side of the tool). In the case of the ARM processor, Platform Manager do not seem to identify correctly the ARMV4i processor type, but identify ARMv4 instead. Therefore the tool cannot copy the right files to your device. The files used by the remote tools are located in C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\target\wce600\. Each sub folders contains the binary version for a specific processor familly (x86, ARMV4i, ....)
As there is no ARMv4 subdirectory, platform manager cannot copy the right file to the platform. The workaround to solve this issue is to duplicate your ARMV4I folder to ARMV4 one, and then, TADAAAA, it works !

- Nicolas

Thursday, June 21, 2007

Using Multiprocessor for building WinCE 6.0

Last week a cutomer and I tried to enable the Multiprocessor building option that is available for Windows CE 6.0. And located in "Tools -> Options" menu, in the "Platforn Builder for CE -> OS design and Build - 6.0 -> General" options.
When you enable that functionnality the build system will plainly use the power of your duo (maybe quad) processor. It will speed up the build by 30%, but there is a race condition issue when you are building layered drivers and the MDD/PDD are located in the same sub folder.

The build process will parallelize the build of the two folders, but in some condition the build of the MDD will finish before the end of the build of the PDD and will generate a build error as the PDD library is not available for the final link of the MDD.
To avoid that race condition for a layered driver you have to specify SYNCHRONIZE_BLOCK=1 into the PDD sources file to force the build to finish the current build before processing the next directory in the queue.


(Thanks to David for finding the workaround)
- Nicolas

Wednesday, June 13, 2007

Adeneo-Official Windows Embedded CE 6.0 training with an Atmel AT91SAM9261-EK evaluation kit provided as a FREE gift

These training sessions are the perfect opportunity for OEMs willing to start a Windows Embedded CE on a powerful platform like the Atmel ARM9 based AT91SAM9261 chip. Adeneo and Atmel partnered to offer you these top level 5 days deep technical trainings. As a special FREE gift, attendees will keep the Atmel development kit ($975 value) to continue their evaluation and development on Windows Embedded CE. For registration or further information, please contact.
contact.msembedded@adeneocorp.com


More details available here.

-Nicolas

Thursday, June 7, 2007

Troubleshoot TFTPD32

I'm actually using a very cool software called tftpd32 as DHCP server on my desktop computer, to assign IP address to my embedded board, when I am working out of the office. This software developed by Ph. Jounin (link) is a tftpd client/server, dhcp server and sntp server.

I was using version 3.02 since last week I moved to version 3.22. That new version integrate optimization, and better management of the network resource, but also new functionalities. And if you use it out of the box without looking to the default selected options, you will have troubles with your Windows CE device and Platform Builder. Especially when you will use KITL.
By default that new version enable an automatic ping request before assigning an IP address to make sure that IP is not currently used. The problem is when KITL starts VMINI interface, it asks by default for an IP address using a DHCP request again. As the board already ask for an IP address during the boot process of the bootloader, an IP address is already assign to the MAC address of the board. So TFTPD32 send a ping request to the board IP address with the board MAC address (see TCP/IP protocol specification).
As the network interface of the board is not completely initialized (remember KITL is currently in the initialization process), but receives a ping request and it locks the KITL VMINI initialization.
So to avoid that misunderstood between the device and TFTPD32 you have to disable that functionality.



- Nicolas

Friday, June 1, 2007

Windows CE 6.0 remote tools over activesync workaround

A lot of Windows CE 6.0 users have troubles with activesync and remote tools, they can't connect to a Windows CE device to use their favorite remote tool.

There are some pre-requirement for using the remote tools.

  1. Add the 'C++ Runtime Support for Exception Handling and Runtime Type Information' component to your OSdesign
  2. Use the remote tools not from the VS2005 menu but from the 'Start Menu' in Progams -> Microsoft Visual Studio 2005 -> Visual Studio Remote Tools
  3. Open your favorite remote tool, and go to the Target -> Connectivity Options ... menu
  4. Select the Platformbuilder entry and edit the properties
  5. Set- Transport to TCP Connect Transport - Startup Server to Activesync Startup provider
  6. Validate and connect to the device using that entry.

Wednesday, May 30, 2007

Windows Embedded CE 6.0 BSP for new Atmel AT91SAM9263 chip

Adeneo has just released the Windows Embedded CE 6.0 BSP for the brand new Atmel AT91SAM9263 chip.
With this BSP, Adeneo now proposes CE 6.0 BSPs for all Atmel AT91SAM chips family, including SAM9260, SAM9261 and SAM9263.
More infos on Adeneo's BSP for Atmel AT91 ARM9 chips

- Nicolas

Introduction

Hi everybody,

I create this blog to share with you tips and news from the Microsoft embedded "world".