Version 2.3.50-201508012214 is the first production release of the GNU ARM Eclipse QEMU. It supports a range of STM boards, and fully implements the user LEDs available on these boards, presenting them graphically, in real time animation, over the board picture.

Binary files »

Animated LEDs

In addition to fully supporting the semihosting commands, intended to running unit tests, the GNU ARM Eclipse QEMU is also intended to running the blinky applications generated by the GNU ARM Eclipse templates.

The STM32F4-Discovery 4 LEDs

Supported boards

The following boards are fully supported in graphical mode:

  • Maple - LeafLab Arduino-style STM32 microcontroller board (r5)
  • NUCLEO-F103RB - ST Nucleo Development Board for STM32 F1 series
  • NetduinoGo - Netduino GoBus Development Board with STM32F4
  • NetduinoPlus2 - Netduino Development Board with STM32F4
  • OLIMEXINO-STM32 - Olimex Maple (Arduino-like) Development Board
  • STM32-E407 - Olimex Development Board for STM32F407ZGT6
  • STM32-H103 - Olimex Header Board for STM32F103RBT6
  • STM32-P103 - Olimex Prototype Board for STM32F103RBT6
  • STM32-P107 - Olimex Prototype Board for STM32F107VCT6
  • STM32F4-Discovery - ST Discovery kit for STM32F407/417 lines
  • STM32F429I-Discovery - ST Discovery kit for STM32F429/439 lines
  • generic - Generic Cortex-M board; use -mcu to define the device

Supported MCUs

The following Cortex-M3 and Cortex-M4 microcontrollers are supported:

  • STM32F103RB
  • STM32F107VC
  • STM32F405RG
  • STM32F407VG
  • STM32F407ZG
  • STM32F429ZI
  • STM32L152RE

Peripherals & compatibility

The main compatibility requirement for the emulator was to support all devices addressed during the standard CMSIS initialisations, which generally refer to PLL & clock settings.

The next requirement was to fully support the GPIOs, at the level of allowing one or more LEDs to blink.


The blinky projects generated by the GNU ARM Eclipse templates (and all STM32 HAL projects) use the SysTick to measure time, so any realistic emulation should support SysTick. GNU ARM Eclipse QEMU not only does this, but also provides relatively accurate time intervals, and the SysTick exception can be used from simple time measuring to driving a real-time scheduler with a reasonable number of task switches per second (1000 Hz is OK).

Changes from 2.2.92

  • –semihosting-cmdline was moved to the last position on the command line, and all following options are passed to the emulated application;
  • –semihosting-config enable=on is default, and may be omitted;
  • –image filename.elf defines the application executable to be emulated;
  • –board name defines the CMSIS board name; if missing, the MCU must be defined; to get a list of available boards, use –board help, or –board ?;
  • –mcu name defines the CMSIS device name; if missing, the default MCU of the board is used; to get a list of supported devices, use –mcu help, or –mcu ?.

Known problems

  • QEMU emulates only Cortex-M3 and Cortex-M4 instructions; specific FP (Floating Point) Cortex-M4 instructions are not yet supported;
  • the 64-bit Windows version of QEMU still has some problems with the timers, and applications using SysTick fail; until a solution is found, the 32-bit version of QEMU can be used on Windows 64-bit too; fixed in release 2.3.50-201508051820-dev.
  • the new QEMU uses custom command line options, which makes it slightly incompatible with the experimental version in the previous version (and with the original QEMU); do not try to use the QEMU debugging plug-in with the original QEMU.
  • due to a wrong rpath definitions, in certain conditions, the GNU/Linux distribution failed to start; fixed in release 2.3.50-201508161112-dev.

[August 4, 2015; update]

A problem affecting QEMU graphical features was discovered: on Windows, if the graphical window is selected or moved, rendering hangs; also rendering during Debug sessions is affected; on all platforms rendering during Run sessions seems ok, but the window does not react to any events; fixed in release 2.3.50-201508041609-dev.


The new QEMU can be downloaded from the GitHub releases page.

The MD5 sums of the files are:






[August 5, 2015; update]

The 64-bit Windows package was added as a new GitHub Release.