Hacking Linux for Fun and Profit at IBM
David Eger GT '03
|
Anand, David, David (Random), and Ron Woan
at the Capitol of Texas
|
Of all of the jobs I've had, the time I worked at IBM was by far the
most intense, and the most rewarding. It was eleven weeks of Linux
kernel and userland programming, working along side some of the most
skilled undergraduates I've met. During that summer of 2001, we
got to play with a prototype technology, think about the business angles
of our project, and in the end present our work to a full array of high
executives in IBM from CEO Lou Gerstner to IBM's Director of Computer
Science Research Stuart Feldman.
In the Spring of 2001, I had met a recruiter by the name of
Ron Woan at an ACM meeting on Georgia Tech campus. He gave a talk on setting
up networks to do specific jobs - where to put your databases and web
servers, how to arrange the servers for various security tasks, and trying
to build enough redundancy into your network so that there aren't any
outages. Having been on the core team responsible for the 1996 Olympics
web site, he knew this stuff from personal experience; and that was one
of the things that attracted me to the internship program - that they
had bothered to send a technical person who really knew his stuff.
The job description didn't hurt either: Take a prototype technology -
an unreleased System-On-a-Chip - and make Linux do something neat with it.
A System-On-a-Chip is basically what the name implies. Take a
microprocessor along with most of the things it needs to work with the
outside world - an Ethernet controller, a PCMCIA controller, input
controllers, a video controller, an interrupt chip, and maybe a USB
controller, and shrink it all down into one tiny silicon package. This
sort of device is can be general purpose or very specialized, and can
be put into a wide range of portable electronics, from mobile phones to
PDAs. The kernel is the piece of software that makes the hardware work.
|
Our toys / Bishop's mad skills
|
What I found when I got to Austin was a mentor who was as bad-ass as
they come. He had been working day and night to get a physical test
rig ready for us. The chip we were to develop for, the PPC 405LP
code-named "Earl", was still not fully designed, and so Bishop's
clever idea was to take Earl's sister chip, the PPC 405 GP and
convince it that it was Earl. He did this by putting Earl's new
functionality into a couple of FPGA's, and then telling the 405 GP
that the new functionality close by. This took lots of mad hackery
with solder, PCI daisy chaining, and playing with internal/external
CPU busses. For a computer science major - someone who is used to
working solely with software, and for which hardware is something the
EE's know about - the fact that you could grab some wires and stretch
them from one board to another and call them interrupt lines was a bit
much. I mean, interrupt lines are abstract notions in the textbooks!
Even wilder is compiling your kernel to try to fix a problem and
having your machine's input suddenly stop working. "Did I break my
kernel? What did I change? It was only three lines, and it had nothing
to do with the touch panel code! Hmm.. well, let's try the old
kernel. That one doesn't work anymore either. When was the last time I
remember the input working properly? I know Ben is working on this
stuff; I wonder if he's changed anything..." and after about half an
hour looking over to realize that someone bumped the interrupt wires
out of their sockets.
|
The Earl Intern Team
Matthew Helsley - Touch Panel
Benjamin Li - PCMCIA, Flash Boot
Benjamin Gigot - Business Case
David Eger - Video
|
Over the summer, I wrote a driver for an LCD controller that the hardware
geeks had built and spent a lot of time trying to optimize a graphics
stack. My comrades - Ben Li and Matt Helsley from UCLA, and Benjamin Gigot
from Harvard - worked on getting the input (a touchpanel) and the PCMCIA +
IBM Microdrive working. The summer gave us many an opportunity to learn
EEish things - how to burn an EEPROM, how to use hardware debugging tools
and inspect CPU lock-ups, and when to ask bishop for the soldering iron
so we could get our serial-port game controller gerry-rigged through
the PCMCIA slot.
Chasing down obscure hardware and software bugs and eating sushi
and Chinese food was life for my team on many a freezing summer night.
Yes freezing. Yes, in Texas. In the land where it was over a hundred
degrees for a month on end. Our work was in the lab on the sixth floor of
building 906. The lab,
formerly a computer room, had three industrial sized air conditioners
with two settings: Off, and Freezing. So while the rest of the world
sweated out the summer nights, we brought blankets and poked around at
our toy machines, trying to make them show pretty colors and do something
neat when we poked at their screens.
The chip, code-named "Earl" by the playful folks at Austin Research
Lab was unveiled to the world on March 13, 2002 at the Embedded Systems
Conference in San Francisco. It was running a 2.4.17 Linux kernel booted
from flash, Qt/Embedded running on the framebuffer with the touchpanel,
and an MPEG-4 video player streaming data from an IBM microdrive. It also
featured dynamic voltage and frequency scaling - an exciting power-saving
technology in the embedded space which gives great hope of extending
battery life.
|