Introduction: Kurt Kennett

Hi!  I’m a development lead on the Windows CE base team here at Microsoft.  I just started back in June, after working in the industry for over 15 years at companies like Electronic Arts, General Electric, Nortel Networks, and Intrinsyc Software.  I used to be a ‘technologist’ doing systems integration for ARM-based platforms and general software engineering for a multitude of products, both PC-based and non-PC based.  My first love in computers is operating systems in general (which my book shelf will attest to!).  My desk at home is usually covered with hardware and wires, and books for programming this chip or that chip.


My team at Microsoft is responsible for Windows CE drivers and forward-looking technology in that area, including both OAL and Bootloader design and implementation.  I get involved with all the other groups to help with reviews, designs, and looking at whatever technology is coming down the road at us.


I just relocated from Canada with my family, and I’m enjoying the Seattle area quite a lot.  I do science fiction/fantasy writing as well as some romance writing on the side.  Some of my work has over 25,000 readers on the internet.  Maybe you’ve read my stuff!


Please feel free to email me and ask questions about drivers, interfaces like touch and display, as well as anything to do with bootloaders and system bringup!

Comments (4)
  1. aaab01 says:

    Hi , I have a problem with KernelStart(), I am use SMDK2410.

    At CE5.0 age, after bsp finish a mim work, then to call KernelStart to start kernel.

    now, at CE6.0, I have a look at OAL also call KernelStart(), but when I check KernelStart() in


    the promlem is KernelStart() in CE6.0 is not called by oal in bsp at all, is called from NKStartup().

    Should my oal in bsp call KernelStart() ? I have doing from this way, but it doesn’t work, OEMInit() is not run, but emulator is correct.

  2. ce_base says:

    You should look at the following MSDN article which details the OS boot process for CE 6.0.

    In short your OAL code, after minimal initialization, calls into kernel loader component (privatewinceoscoreosnkldr<cpu>) which gets the entry point for kernel.dll and then jumps to that.

    Your OAL code should call KernelStart() which is implemented in the kernel loader component listed above. You can look at any of the other sample platforms to see how this works.


  3. MikeB says:

    I was wondering what the display driver requirements are for CE 6.0.  Can an all software implementation of the 3D driver meet the LTK requirements?

  4. Kurt Kennett says:

    Mike, can you post the question to the general blog or to a newsgroup?  I think more people will have a chance to respond to it there.  Thanks!

Comments are closed.

Skip to main content