| 1 | .. _AVR-System-emulator: |
| 2 | |
| 3 | AVR System emulator |
| 4 | ------------------- |
| 5 | |
| 6 | Use the executable ``qemu-system-avr`` to emulate a AVR 8 bit based machine. |
| 7 | These can have one of the following cores: avr1, avr2, avr25, avr3, avr31, |
| 8 | avr35, avr4, avr5, avr51, avr6, avrtiny, xmega2, xmega3, xmega4, xmega5, |
| 9 | xmega6 and xmega7. |
| 10 | |
| 11 | As for now it supports few Arduino boards for educational and testing purposes. |
| 12 | These boards use a ATmega controller, which model is limited to USART & 16-bit |
| 13 | timer devices, enough to run FreeRTOS based applications (like |
| 14 | https://github.com/seharris/qemu-avr-tests/blob/master/free-rtos/Demo/AVR_ATMega2560_GCC/demo.elf |
| 15 | ). |
| 16 | |
| 17 | Following are examples of possible usages, assuming demo.elf is compiled for |
| 18 | AVR cpu |
| 19 | |
| 20 | - Continuous non interrupted execution:: |
| 21 | |
| 22 | qemu-system-avr -machine mega2560 -bios demo.elf |
| 23 | |
| 24 | - Continuous non interrupted execution with serial output into telnet window:: |
| 25 | |
| 26 | qemu-system-avr -M mega2560 -bios demo.elf -nographic \ |
| 27 | -serial tcp::5678,server=on,wait=off |
| 28 | |
| 29 | and then in another shell:: |
| 30 | |
| 31 | telnet localhost 5678 |
| 32 | |
| 33 | - Debugging with GDB debugger:: |
| 34 | |
| 35 | qemu-system-avr -machine mega2560 -bios demo.elf -s -S |
| 36 | |
| 37 | and then in another shell:: |
| 38 | |
| 39 | avr-gdb demo.elf |
| 40 | |
| 41 | and then within GDB shell:: |
| 42 | |
| 43 | target remote :1234 |
| 44 | |
| 45 | - Print out executed instructions (that have not been translated by the JIT |
| 46 | compiler yet):: |
| 47 | |
| 48 | qemu-system-avr -machine mega2560 -bios demo.elf -d in_asm |