Saturday January 31, 2004
SFU to VPC

Microsoft recently released SFU (Services For Unix) as a free download. Anil provides more background. (p.s. you need W2k server or XP Pro and the patience/bandwidth to download a 230M file)

The folks over at Tool Warehouse have a pile-o-unix goodies that will run on SFU (SSH, Bash, etc...). MS SFU isn't nearly as easy and integrated a Unix as OS X but kind of handy if you find yourself stuck on a windows box and pin(e)ing for familiar Unix tools.

While we're on the subject of OS-gender bending I got a chance to play with Virtual PC (version 6.1, W2k) on a coworker's OS X 10.2 machine down in Florida a couple weeks ago. Before the trip I spent a bunch of time getting a Windows machine ready so he could write drivers for the Windows CE .NET project we are working on.

At his office I started setting up the PC and explaining the layout. Instead, he thought it would be worthwhile to try and get Win CE working in Virtual PC. He does a fair bit of traveling, moving software projects between PowerMac and PowerBook, so being able to always use a Mac would be ideal.

I humored him, sure that the ungainly large beast that is Windows CE could never be caged inside a Mac, Virtual PC or not. He'd installed Windows CE .NET 4.2 in Virtual PC and it seemed to run. We moved the source files and projects over, but some Win-Mac-Win transfer glitch caused the first attempt to fail. Moved the files over using Windows file sharing (within VPC) and...grind, grind, compile, compile, link, link...it worked!

The real test was getting the debug environment working between Windows and our development hardware. Microsoft has abstracted the communications channel for debugging CE, which means it can run over a number of physical interfaces. We use ethernet, allowing for quick image transfers and pretty seamless source level debugging. Ethernet was a good choice for VPC too, since a parallel port was out of the question and the serial port is much slower.

In OS X we used a Keyspan Serial-USB adaptor and ZTerm for controlling the low-level boot-loader on our development board. The boot-loader is used to initiate the image download over ethernet. Once the image is downloaded the boot-loader writes it into flash, jumps to the image start code, and in a few seconds all debug traffic is routed over ethernet.

And, again, it just worked. The test driver was downloaded, break points set and stopped at, variables examined...the works, all within Virtual PC on OS X.

I packed the Windows Machine back in its shipping box and headed back to New Hampshire with a new respect for Virtual PC. Hmm, maybe the office will buy me a G5 and Virtual PC 7?