8) DEVELOPMENT TOOLS
Having a programming language is usually not enough to develop a
program for a microcontroller. Some way of debugging your program is
needed. I am only too painfully aware of this fact.
A simulator runs your microcontroller program on a host machine (such
as your PC). You can step through the code to see exactly what is
happening as the program runs. Contents of registers or variables
can be altered to change the way the program runs. Eliminates (or at
least delays) the erase/burn/program EPROM cycle common in
microcontroller program development. You can work out ideas or learn
about microcontrollers by experimenting with small code fragments and
watching on the screen what happens. A simulator can't support real
interrupts or devices, and usually runs much slower than the real
device the program is intended for.
Some manufacturers have a cross between a software simulator and the
hardware emulator - a hardware simulator. This is a piece of
equipment that plugs into your target, and the pins will toggle and
react like they should - just MUCH slower. Cost of a device like
this is only about $100. Two such boards by National Semiconductor
and Philips are detailed in section 6.2.
A resident debugger runs your program on the microcontroller itself,
while showing the progress on your host machine (such as a PC). Has
many of the same advantages as simulator above, with the additional
benefit of seeing how the program runs on the real target machine. A
resident debugger needs to "steal" some resources from the target
machine, including: a communications port to communicate with the
host, an interrupt to handle single stepping, and a certain amount of
memory for the resident part (on the target) of the debugger.
If you've got the money, this is the equipment you want to develop
your system with (yeah, that's right, a preposition at the end of a
sentence!). A [usually] expensive piece of hardware that even for
the cheaper versions will run you at least $700. An emulator is a
sophisticated device that pretends that it is the microprocessor
itself, while at the same time capturing information. It provides
full and total control over your target, while at the same time not
requiring any resources from the target. The emulator can either be
a stand alone device with its own display, or it can be interface to
a PC.
This is the most important tool for the microcontroller developer, or
for any computer system developer for that matter. Don't expect to
get anywhere unless you have the proper music playing in the
background(?) at the proper volume. I find that I do my best work
with the Rolling Stones (especially Goats Head Soup) or Clapton
(especially early stuff like Cream - Disraeli Gears is a killer
album!). The volume must be set to cause excrutiating pain to be
most effective. Trust me on this ;-).
Tom Mornini of Parallax reports: "Johnny Cash also has a certain
effectiveness, as well as the Beatles, Aerosmith, and Rush! 60's
rock and British invasion bands in particular seem to have a
particularly productive effect."
This would be an interesting topic for an in-depth study.
Particularly intriguing, is if certain types of music work better
with specific [families of] processors. Another question in need of
study would be if it's really true that the smaller the chip (in
bits), the louder the music needs to be.