I realize this is just one data point, but I implemented a full EHCI (USB 2.0) stack in 3 weekends. Then I implemented a simple mass storage driver in 2 more (that was the hardware I was targeting).
My HID implementation isn't worth talking about but it was helpful to test interrupt transfers.
I'm assuming by the fact that it took you a few weekends, you are beyond the level of learning about OS's as an undergrad, though :) I'm sure it is doable, but the point is probably that it's a non-trivial detour from writing a basic OS.
I'm all for teaching as many undergrads as possible about writing an OS - so many valuable lessons that aren't easy to teach in any other context.
Still – there are always a few who really take off. Such might enjoy a tutorial that walked through doing a full USB stack. Maybe... :)
I feel compelled to speak for the over-achievers because they may not even realize they could go so far, so fast, until someone points them in the right direction. It's fun to watch.
I thought about a tutorial or a step-by-step but EHCI controllers vary widely by platform, and going with the "least common denominator" means doing it for x86... I could never convince myself it was worth a blog post.
Maybe if the RPi becomes a favorite for OS development, I might do it. You could always poke around on http://osdev.org and see if you find some useful stuff there. :)
Right, which is FTDI's USB interface chips are so popular. Everyone has used USB-serial but there's also some USB host controllers with MCU-friendly interfaces.
Suddenly you are in the land of voluminous specs and large amounts of code to get anything working.