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.

More details available here.


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.