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.
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. :)
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
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.
18 comments
[ 1.6 ms ] story [ 76.1 ms ] threadSuddenly you are in the land of voluminous specs and large amounts of code to get anything working.
My HID implementation isn't worth talking about but it was helpful to test interrupt transfers.
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.
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. :)
I was allegedly a kernel engineer at one time but never go to do any kind of development work, so this sort of thing intrigues me greatly.
What hardware did you have?
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.