This site is oriented to providing hobbyists with pointers to software that can help with the engineering of micro controller controlled electronic devices. The software referenced here is all either free, inexpensive, or demo software so it can be tried without initially investing significant money. A few of them are tools we've developed, but most we've found at other places on the web. Where possible we've included a link to the site where you can get the latest version rather than a direct download of a possibly stale version that I have. All CPU software development tools mentioned here will be for 16-bit or 8-bit micro controllers since there are plenty of Unix and Windows based tools for most 32-bit CPUs. My favorite 16-bit micro controllers are Intel 80x96 variants and the most popular micro controllers are Motorola 68HC11 variants so you'll notice there will be more tools for these on this site than for other micro contollers.
For the microcontroller novice:
The typical software tools that you would need to develop a micro controller device include the following. An assembler is used to convert assembly source code into a machine instruction binary file that can uploaded to the controller or burned into its EPROM. A higher level language compiler, such as a C, Pascal, Forth, or C++, can be used to generate the assembly code or some will create a machine instruction binary file directly. Higher level languages such as a Java or CSharp will create an intermediate instruction file that would need an interpreter to be uploaded to the controller. It's easier to write source code in a high level language than in assembly source code. The next tools that you would need include either a monitor or a debugger. If these tools are designed to work with the controller, they can be used to upload the binary to the actual controller. Debuggers also exist that allow you to test the code with out the hardware. They do this by simulating on your desktop computer most of the behavior of the controller. While a simulating debugger might be easier to configure, you won't know the code really works the way you want it to until you upload it to the hardware.
It can also be useful to use development software such as SPICE, PSpice, and others to simulate the behavior of your electronics. Unfortunately, its hard to simulate the full behavior of a micro controller with these simulation programs. However, they are still helpful in testing out the design of additional electronic circuitry. Another class of helpful development tools are circuit board layout and auto router programs. With these you can design the layout of the electronic components on a circuit board. While circuit layout and auto routers are typically used to design a printed circuit board, they can also help you visualize component interconnection. Thus, they can be helpful even if your wire wrapping your circuit board and not etching a printed circuit board. Finally, CAD and CAM software can be helpful is designing mechanical parts.
Email suggestions for inclusion to teraKuhn@yahoo.com