Mark A. Yoder wrote:
So what should be covered in a 32-bit embedded course?
Everything.
We already
teach an 8-bit embedded class using PIC processors. It's a good
course, but about all we are able to do is read switches and turn on
LEDs. The Beagle can do so much more.
Yes it can, but that capability isn't worth much if you can't help the
student see the motivation behind all that capability AND properly equip
them to take advantage of all that cool stuff.
My online class at UCSD is 18-ish weeks long, and the student kit
consists of two ATtiny44 chips, a solderless breadboard, half a dozen
LEDs and resistors, two pushbuttons, two potentiometers, and an 8-bit
shift register. We cover every peripheral in the chip, both by lecture
and lab exercise. First in assembly language, then in C. We do a bit
more than blink LEDs and read pushbuttons and potentiometers, but even
that by itself can provide lots of educational opportunities. My
students give me very high marks for satisfaction with the class, but
also complain that we try to cover almost too much material in the time
available.
I'm working in a traditional collage classroom. I have forty 50
minute periods that can be either lectures or labs. The students will
have had some programming experience (python and C) and will have had
an OS course.
I'm thinking of handing them a BeagleBoard with the SD card already
initialized with Angstrom and spend the first lab getting the USB hub
and monitor set up so the can play with streaming video, etc. right
out of the box.
That's a good idea. It has the added benefit of teaching them how to
take it apart and put it back together, i.e. when they get back home.
The next lecture will start with the OMAP 3530 reference manual and
the question "What happens when the OMAP comes out of reset?" Start
at the beginning and build up all that had to happen to run Angstrom.
I don't think I would start with this. It doesn't convey anything
that's of immediate practical use. Would be good information to have at
the end, however, when students are skilled enough to consider tweaks to
u-boot scripts, creating their own system daemons, etc.
I'd like to have a week on programming the DSP side of the OMAP, but I
don't know that I'll have time.
I wouldn't do it at the expense of anything else. Ideally, you'd have
another 10-50 weeks so that you could really dive into it and teach it
properly. The ARM-plus-DSP design is a key component of cell phones,
media players and other important applications. But it's potentially a
complex subject area, no point in approaching it at all if you can't
really deal with it well.
What topics do you have in your embedded classes?
We start with using software polling to blink the LED and vary its
intensity, and use a pushbutton to change the blink rate and/or
brightness. Then we cover debouncing, to explain why the button doesn't
always behave the way you expect.
At that point the student is pretty frustrated with what it takes to
babysit the LED and the pushbutton at the same time, so we introduce the
timer/counter so they can hand the blinking and brightness off to
hardware. Then the frustration comes because they keep stomping on
their timer/counter configuration bits or they get out of sync with the
LED, because they don't know how to synchronize their updates with the
hardware. So we introduce interrupts. And so on.
It was somewhat challenging to come up with a hardware setup that was
pretty idiot-proof. But that was incredibly easy compared to getting
the scope-and-sequence of each lecture right, so that when you came into
the (virtual) classroom each week you were motivated by a problem
created the previous week. Getting that right is essential, otherwise
the student starts asking "why are we learning this today?".
Are there changes you would make it if were face-to-face rather than online?
The only change I would make in my own materials is that if we were
face-to-face, I would have a very long-term project that we started on
the first day of class, and worked on a bit each week in parallel with
the curriculum. Something very ambitious, like an automated Christmas
light display, or something. The final-term assignment would be to
finish that project off.
In the online setting, it seems more difficult to carry things over from
week to week because you don't have an easy way to say "ok, let's set
this aside for a few minutes and discuss where we're at on the X
project". At least, when I tried it didn't work out so well.
Could I get access to your online material to see what you've done with them?
No, it's locked up inside of a Blackboard system that UCSD controls.
I'd never use that specific system again, given a choice. But they're
the Microsoft of the online education world, unfortunately.
But we can discuss it off-list, if you like.
b.g.