Sha Viswanathan: Introduction


I'm a developer on the Windows Mobile BSP team. I came to Microsoft after graduating as an EE from the University of Texas in 2005 (Hook 'em!). I've worked mostly on Intel-based BSPs in my time here, and am now working on future BSPs.

Being new to CE, I know how hard it is to find the information you want sometimes. If anyone has questions about BSPs (bootloaders, the OAL, KITL, drivers) feel free to ask!!

I spend my free time getting out in the beautiful Pacific Northwest, enjoying friends, the many microbrews, mountains, parks, and islands...except in the winter, where I spend my time wondering where the sun went.

Comments (4)
  1. ce_base says:

    Welcome to the blog, Sha!  Good first post.  🙂


  2. RAGHU says:

    Hi sha,

    I want to develop a bootloader that downloads the OS image (nk.bin ) from USB.

    I have read #2535 article on "how to develop a Bootloader".

    Can u please give me any specific links or blogs that discusses mainly on USB Bootloaders

    Thanks in advance,


  3. ce_base says:


    I don’t know of any specific links or blogs that discuss how to develop a USB transport for bootloaders/KITL. We have been working to make this easier for OEM’s and customers, but for now all I can do is point you to source code (the "ultimate" documentation :)).

    I recommend you reference the MainstoneIII platform, either the Mainstone BSP Update for CE 5.0 [] or wait a little bit for Windows CE6.0. Mainstone’s bootloader implementation of USB RNDIS for image download as well as KITL debugging lives in platformmainstoneiiisrccommonusbfnrndiskitl.

    From a high level, Mainstone’s design assumes you already have a bootloader, and you already had a working OS-level USB Function driver (you may not have these already available and will have to write them).

    To implement USB RNDIS downloads, we took the OS-level USB Function PDD and made it compile in the bootloader (Removed any  critical sections, removed __try/__except, for example). We then linked the boot-level USB Function PDD with a special wrapper you can borrow (platformmainstoneiiisrccommonusbfnrndiskitlrndis_pdd.c) that ‘glues’ to our RNDIS client library (rne_mdd.lib).

    This leaves three main entry points (RndisInit, RndisEDbgGetFrame, RndisEDBgSendFrame) that your bootloader can use to fire up the USB port, and send/receive data. Use these functions in your bootloader in the way that Mainstone does, and you should be able to download OS images over USB.

    If you still have questions, I strongly suggest you post this to our public newsgroups (microsoft.public.windowsce.platbuilder). Surely some of the MVP’s can chime in with any other advice they may have, or answer questions as you implement this feature.


  4. Raghu says:

    Hi Sha

    Thanks for the help


Comments are closed.

Skip to main content