Quick intro: I've been doing some bare-metal beagleboard stuff just
for entertainment, and I also had a quick look at minix 3 (and haiku)
along the way.
Wrt required expertise:
Good experience in C programming is a must. Most of the programming
will be done in C.
It's almost all C, so you need to know it well.
Note that you will be dealing with hardware at a very low level and in
order to have a decent understanding of what is going on it you should
know about interrupts, memory mapped i/o, memory management and
possibly DMA and board initialisation.
Definitely need DMA, but it's about simplest hardware in the machine.
Hopefully the rom and bootloader do most of the board init. I'd add
caches to that too.
Wrt the project itself:
After that we need to identify what is needed to get this running.
Guess there are some low level issues to be resolved, but I expect
most of the work to be to actually write or port the needed device
drivers. TTY is probably going to be easy (as you might be able to
reuse a lot from the PC implementations as uarts seem to become fairly
standardized wrt interface). USB and SD might be somewhat more
complicated. Audio and video are probably going to be even harder as
there is probably little in the PC version that you can reuse or learn
TTY is trivial - hardware is the same as pc serial except memory
mapped. SD don't know about. Audio/Video are relatively simple since
the hardware is pretty simple, even if the manual isn't (for
dvi/s-video at any rate, not sure about lcds). Interrupts depend on
the ARM implementation, so any work done may not be usable.
USB will be the big thing - last time i looked minix3 had no usb
support - although I see a project released just a week ago on
googlecode for it, but it is uhci only.
Personally (without knowing too much what there is now), I would be
inclined to call the process a success if you managed to get a booting
minix image with tty, sd, usb hub, usb mass storage and usb ethernet
Sounds about right to me from what I've looked at - oh and something
for managing the NAND, and maybe expansion stuff. Although given that
USB will be for the most part the same as any PC implementation, huge,
and they still don't have one, maybe it would be better to focus on
beagle-specific stuff at this point?
tty, nand, sd, expansion i/o (gpio/serial interfaces), neon, video,
audio in approximately that order is quite a lot to look at already.
And if that isn't enough, there's always the dsp. I mean obviously
USB is very important, but as an embedded device you can still do a
lot without it.
When I last looked (a few months ago), minix also suffers a lot from
it's pc architecture roots. There's no framework for multiple
architectures. And things are a bit over the place as students have
hacked in additional features such as virtual memory.. It's a far cry
from the original `book version' in terms of 'clean simple design'.