Thursday, 4 February 2010
Southern Electronics Show
Wednesday, 18 November 2009
CE6.0 CETK using ActiveSync failes on ARM devices
One of the guys here was having problems getting his CE6.0 CETK connected using activeSync to the target device. It sounded like something on the platform or his PC was just not setup correctly as the Platform Builder connection test just wouldn't work... very bizzare.
We're all running Vista 64 or Windows 7 64 so we were thinking it was a 64 bit issue (as there are other problems using these OS's for day to day development work but no it seems that the Platman folders on the PC that are used to store the target binaries for the CETK and remote tools is being checked incorrectly. If you look in this directory:
C:\Program Files\Common Files\Microsoft Shared\Windows CE Tools\Platman\target\wce600\
You'll see the ARMv4i directory but not an ARMv4 one like in previous versions of the Windows CE OS releases. It seems that the PC side application to push these target executables is looking (incorrectly) for an ARMV4 not ARMV4i directory.
To work around this simply copy the ARMV4i folder to create an ARMV4 directory and it should now all connect up.
Monday, 2 November 2009
Calling Kernel IO routines from Apps in CE 6.0
Wednesday, 28 October 2009
Active Sync problems using RNDIS
Wednesday, 21 October 2009
Lightweight XML User interface for Windows CE
Wednesday, 14 October 2009
Using WinCE APIs From Kernel OEM Routines
Wednesday, 30 September 2009
Negating the need to run MakeImage when developing device drivers on WinCE
Debugging of drivers on Windows CE can be painful when downloading large images, NK.bin's of 10-30mb are typical and having to download the whole of this just for a driver modification can mean long times between compilation and testing. Here are my three methods for quicker development without having to push the full nk.bin down each time.
The firstly two methods have pretty much the same outcome but from a different approach:
1 - Remove the driver from the platform.bib file.
This means that the driver isn't embedded in the OS image (nk.bin), then run this image when on KITL enabled (the debug transport typically used to connect the target device to the development PC). This will result in the DLL being pulled from the desktop release directory over the KITL transport and being ran as if it were in the image.
2 - Tell Platform builder to force loading of modules over KITL
In Platform Builder go to
Target -> Release Directory Modules
Then include the DLL's that you want to force loading over the KITL connection, this tells the OS on start-up to ignore any DLLs included in the image. The benefit of this is that you don't even have to build the NK.BIN again.
3 - Load the drivers at runtime using ActiveDevice
This method is handy if you don't have a KITL connection, here we populate the registry with the driver entries, but instead of putting them under HKLM\Drivers\Builtin\ put the registry entry under HKLM\Drivers\Test\ to ensure that the system doesn't load the driver on start-up.
Then create a simple application that will tell device.exe to load the driver when you run it:
HANDLE device = ActivateDevice(L"Drivers\\Test\\myDriver", 0);
Using the handle returned, you can also force it to unload the driver. This means you can start (and stop) the driver without a KITL connection but allowing you to copy new versions of your driver on from an SDCard or ActiveSync, you'll need to rely on serial debug prints probably to debug here but it’s a quick easy mechanism if you don't have a debug transport.