My take on learning microprocessors:
1) Pick a reasonable processor. An 8085, Z80,
6502, or 680x is reasonable. A Pentium III is
not.
2) Read the data sheets. Get an idea of what the
timing requirements are, how you interface to
the timing, address, data, and I/O. Don't rely
on other people's schematics unless you absolutely
have no idea what you should do. Make sure after
using other people's schematics that you do under-
stand what they did and why.
3) Build a simple circuit on a large wire-wrap
board. Include the processor, minimal ROM,
minimal RAM, and a simple I/O port with eight
LEDs attached. Write a small program to write
different values to the LEDs. Verify they are
correct. Use a wire-wrap board with enough room
to add lots of stuff later. You'll be glad of
the room later.
4) Add a serial I/O port. Write a small program to
read data from a terminal (or equivalent) and
echo the data back.
5) Start extending the program to write your own
machine language monitor. You've got the I/O
routines. Add the functions one or two at a
time, testing along the way. You'll want to
add memory read, memory write, memory fill,
register read, register write, port read,
port write, program start, breakpoints, but
not a disassembler or assembler. Learn the
machine code first. Later you can add the
assembler/disassembler.
6) Add some kind of program storage, either out
through the serial port, through an additional
serial port (adding another shouldn't be
difficult), or some other way. Be creative.
7) Go off on your own. Experiment. Add some
A/D converters. Add some D/A converters.
Whatever you find interesting. But the most
important point to remember is to understand
the whats and whys of everything you do.
Step (5) is probably the one you'd be most tempted to
cheat on, but it really isn't that difficult to roll
your own. If you'd like, after you've got the basic
functions going, you can either add features from
some other monitor program, or use a completely
different monitor program modified to work with your
system, but definitely write the basics yourself so
you know what's going on.
Any comments?
--
Eric Dittman
dittman(a)dittman.net