| Interview: Porting Windows CE .NET to the Xbox |
(Jan. 7, 2004)
According to its website, the "xbox-windows project" is an effort to bring Microsoft Windows operating systems to the Microsoft Xbox hardware platform. Members of the project recently announced that Windows CE .NET is now booting on the Xbox . . . "Currently, we have a partial BSP for CE .NET 4.20, and working PCI, USB, Display, and Mouse drivers. Most of the "important" parts of the BSP are done, however some features are still lacking or bug ridden. We also have a simple, preliminary bootloader based on xbeboot from the xbox-linux project. With these in place, CE loads and runs properly, but is not yet very useful." Additionally, the project has adopted the following guidelines: - Open Source; All of our works will be LGPL and readily available. (Note: GPL is NOT an option in most cases, as we are STATICALLY linking against closed, copyrighted code from Microsoft)
- Legality; All of our works must remain legal, and not infringe upon anyone's copyrights or binding licensing.
- Community; Anyone may contribute to the project in any area they choose, and anyone may use the project for whatever purpose they see fit, within the limitations set forth by "Open Source" and "Legality"
Intrigued by this open source community effort of porting Windows CE .NET to a popular and readily available consumer device (the Xbox), WindowsForDevices contacted the project's originator, who prefers to be known by the pseudonym "Artifex", to gain insight into the project's origins, goals, and plans for the future. Here's what we learned . . .
WindowsForDevices: How and when did the project originate, and who started it? How many developers are currently working on it?
Artifex: The project started about four months back, when, at my place of employment, we began to evaluate Pocket PC as a potential replacement platform for a rapidly aging Palm/Handspring solution. I decided that I would take a look at the Platform Builder, and the "guts" of the OS as part of my evaluation. Around the same time, I was running out of ideas for things to do with the Xbox. After building a few CEPC platforms, and reading over the CEPC source, it seemed only natural to create a BSP for the Xbox.
At first, I was the only developer. I did almost all of the BSP work, fixed a few bugs in the "xbeboot" bootloader from the xbox-linux project in order to get minimal kernels booting, and started the initial platform work. I only brought another developer, "stealth," on after being stuck with an especially frustrating bug, related to IRQ - SysIntr mappings. Being recently married, however, he didn't have much time to work with me on it, and mostly just "looked over my shoulder" and caught some of my mistakes.
Interestingly, I couldn't seem to get anyone else interested in doing development before release.
Now that it has gotten stable (and "pretty") enough for an initial release to the public, and now that an open, public project has been created, there are several people actively working on the project, more trying to learn the Platform Builder and Windows CE environment so that they can help, and some doing various other tasks related to the project, such as setting up the website and designing logos. At any given moment there are about 20 to 30 people in our IRC channel, and 5-10 of them tinkering with something-or-other.
WindowsForDevices: What are the goals of the effort?
Artifex: This will really be up to the people contributing to the project, as they will be the ones deciding the direction, and what "big picture" tasks take priority. I know that everyone seems to have a strong drive towards an eventual XP Embedded implementation, but most of us realize that this is a somewhat distant goal. Short-term, our focus is on device support. We are still lacking drivers for the network adapter, gamepad, and the Xbox file system. We all feel that these three components are crucial to any potential application of the project.
WindowsForDevices: How far have you progressed?
Artifex: The project is far enough along, now, that people can see it running and immediately realize the potential applications. However, the project is still in its infancy. Although most of the "fundamentals" are in place, and we can even build reasonably stable platforms with GUI and applications, there are still quite a few little bugs to be worked out, and even more work that has to be done on making it the sort of complete, friendly, easy-to-use platform that people expect from a Windows OS.
WindowsForDevices: Are you making use of Microsoft's "shared source" program to collaborate on the CE .NET sources in this project? Are you using the "shared platforms" option?
Artifex: Yes, we are making use of the Shared Source program for our work. As the Xbox is very similar to a PC platform, our BSP is based heavily on pieces from the CEPC platform. Also, our initial plans for support of the Xbox filesystem include extending the existing FAT filesystem code. However, we hope to eventually re-implement as much as possible of the portions of our bsp currently drawing from Microsoft's source. We have not yet reviewed and considered the Shared Platforms program to any major extent, and don't have any specific plans with it, currently.
WindowsForDevices: What have been the toughest challenges in the project, so far?
Artifex: I would have to say that the biggest roadblock has been in debugging. The Xbox lacks a serial port, and I had little success using the Ethernet for debugging. In the very beginning of the project, I used the LEDs on the box, and simple framebuffer fills for debugging, and later got a rudimentary "text mode" up. When I began to build more complete platforms, I started to write the debug logs out to some Flash attached to the LPC (X-Bus), the only open expansion on the hardware, and then read the flash back on a PC. This got to be tedious, and I eventually built some custom hardware to monitor the onboard I2C bus, and wrote the debugging information there. No interactive debugging was ever successfully implemented, and this proved to be a major hurdle in the end.
WindowsForDevices: Have you received any help from Microsoft?
Artifex: No, nor have I contacted them for any. We did make a few postings to the newsgroups with general questions, but nothing directly related to Xbox. I'm not quite sure how they'd take to the project. They have a long standing reputation of mostly ignoring what people are doing with the Xbox, with a few exceptions. I'm not sure if this would be one of them, and if it were, I'm not sure if they would respond positively or not. I'd be interested to hear their take on my work, and the project, however, and would welcome any friendly contact or assistance from them. I do have an indirect contact at Microsoft Games Studios, who told me that some of the staff there have tried CE on the Xbox, with mixed success.
WindowsForDevices: What can the modified Xbox (i.e. running CE .NET) be used for?
Artifex: Microsoft has made great efforts recently to make CE a practical operating system for more then just PDAs and cellphones. I wouldn't be surprised to see eventual CE-Xbox platforms for set-top home media centers, I-Appliances, embedded servers, etc. Heck, it's even been proposed that it would make a decent gaming platform! ;-)
WindowsForDevices: What are the next steps to the project?
Artifex: Most of our top priorities are related to getting organized and collaborating efforts. We're also working on making it as painless as possible to get a development environment up and running. After the initial "settling in" phase, our focus will be on Ethernet, filesystem, and gamepad support. After that, we will probably work on a more suitable bootloader, and building useful platforms. Like I said, however, the direction of the project is really up to those who chose to involve themselves.
WindowsForDevices: How can other developers get involved? And where can they download source code and other background info?
Artifex: Right now, the best way to get involved is to join our IRC channel which is #xbox-windows on server irc.oftc.net and speak to people there. We are working on setting up forums and a mailing list now, and will have these linked from the webpage when they are ready. We have a few developers, now, with some small amount of time behind Platform Builder, who have the initiative to really get the project rolling, but we can use as much help and support as we can get, obviously. Also, as one of our "down the road" goals is to bring XP Embedded to the Xbox, we'd certainly welcome, with open arms, anyone with experience with that platform, as well.
WindowsForDevices: Anything else you'd like to add?
Artifex: The Xbox "scene" in general has done some amazing things with the platform, and created an incredible community of thousands of enthusiasts who practically live, breath, eat, and sleep Xbox. I've always been a bit of a Microsoft "zealot," and think that some of the things that they've been doing lately are just incredible. The .NET initiative has dramatically changed my daily software development routine over the past couple of years, and in a very good way. I'm very glad that there has been such a positive response to my work, from users, interested developers, and the media. I've always firmly believed that great technology should not only be put to good use, but actively celebrated and, as far as I'm concerned, both CE.NET and the Xbox are great technologies.
WindowsForDevices: Thanks very much for sharing this information with the Windows Embedded Community, and good luck with your interesting and challenging project!
Why do it?
In the words of the project's README file . . .
"Because we can, and it's cool"
Further info
For further details on this project, please visit the project's website:
Xbox-Windows project website
About the interviewee: Nate (who prefers to be known as "Artifex" ) is 21 years old, lives in the northeastern U.S. and spends most of his time programming. He's been working with computers since early grade school, and is currently employed as a software engineer, mostly doing asp/asp.net work. He spends most of his evenings doing the sort of programming he really enjoys -- writing embedded software for the Xbox, various microcontroller projects, and, recently, experimenting with CPLD and FPGA projects including learning VHDL.
Related stories:
(Click here for further information)
|
|
|