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.
This is the kind of stuff that I've been waiting to see on the Pi. It was touted as a "learning tool" by the foundation, but was co-opted by the hacker community as a cheap but full-fledged computer to hack with, completely overshadowing the teaching tool aspect.
I'm surprised you say "co-opted" for a couple of reasons.
1) I thought the intent of "learning tool" was teaching novices how to program in Python. This has huge ramifications in developing countries. In a mid to high income family in the US, it isn't clear if the raspberry Pi is the right computer to give to a child in order to teach them basic programming.
2) The hacker community's exploration is not devoid of learning. I'm a software guy and I've learned a great deal about hardware due to the Arduino and the Raspberry Pi. I don't think this overshadows the teaching aspects in any way.
It's a cheap hack to get around the de-duping system for submitted links. This article was submitted 53 days ago, with a good discussion about it: http://news.ycombinator.com/item?id=4467612
Suddenly you are in the land of voluminous specs and large amounts of code to get anything working.