Embedded System SImulator Generator
Python C Java JavaScript Emacs Lisp C++
Switch branches/tags
Nothing to show
Pull request Compare This branch is even with ekohl:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Embedded System SImulator Generator


The Embedded System SImulator Generator is a design project at the University of Twente. The goal is to generate a simulator for microcontroller programs based on the specification of such a microcontroller. The bug tracker and forum are on Redmine (requires login) [1].


To build the project:

essig $ make
essig $ cd vm
essig/vm $ python simulator.py /path/to/atmega16-program

This requires that you have a working (GNU C compatible) C compiler, a make program, Java, Maven and Python 2. In order to build Atmega 16 programs (or programs for other microcontroller architectures, you need to install a compatible compiler. For Atmega 16, the avr-gcc, avr-binutils (objdump and such), and avr-libc form a good choice. These tools can be used like this:

$ avr-gcc -g -Wall -mmcu=atmega16 -o program program.c
$ avr-objdump -d program | less

With the project come a few code sample, which can be build from the project's root directory by typing:

essig $ make code-samples

The factorial sample can then be run like this:

essig/vm $ python simulator.py ../code-samples/factorial


essig/vm $ make run

To debug the simulator itself use (requires GDB):

essig/vm $ make run-debug

For further instructions and a general overview of the project, see the 'report' directory:

essig $ cd report
essig/report $ make

This should make a report.pdf in the current directory. For this you will need Latex and TexLive.

Writing a new specification

Currently, a few things are hardcoded to use the atmel spec. So one should either modify grammar/examples/atmel.dmo or modify the build system:

  • Change the vm/generated_simulator.[ch] symlinks
  • Make sure Makefile points to the correct specification