AVRsimulator is basically a C library that emulates the behaviour of AVR MCU's by software. Together with an object file parser and a frontend (user interface) it can be used for AVR firmware debugging.
Inspired by Atmels AVR studio I started development in 2001 to create a UNIX program for debugging - but doing this job alone is not really motivating and things are evolving slowly ... so everybody is welcome to contribute to this project, especially the GUI. It is my first one and it is neither fast nor "beautyful" (anyway from the programmers view).
The screenshot shows the OSF/Motif 2.0 GUI I have written for this
demo version. The left window shows the source code with the selected
line as the one to execute next. The right window shows the SRAM
address space of the MCU. The red marked addresses are the register
file, the blue ones are the I/O ports and the green ones are normal
memory locations. The info field on the bottom shows the current
values of program counter and status register (also visible in the
memory window as hex value but the bit names are better readable).
Pressing the "Single step" button executes the command that
is marked in the source window. All changed memory locations are marked
in red color.
-------------- | | | Frontend | User interface | (frontend) | | | -------------- | | | | | ------------------ | | | | | AVRsimulator | | | library | Simulator engine | | (libAVRsim.so) | | | | | ------------------ | | ------------------ | | | Import library | Abstraction layer to support different | (libimport.so) | object file formats | | ------------------
Only the AVR core can be simulated by AVRsimulator at the moment.
The peripheral support is under development.
Clicking on a memory location opens a dialog box to change the value.
Manual jumps (click on command) are currently not supported.
Currently there is only "single step" support, breakpoints are missing.
AVRsimulator supports the Atmel .obj file format.
The UNIX assembler 'tavrasm' can create this file format.
"*.obj" files created with Atmel tools can also be
used.
Get them from download page.