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.
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 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
The following Cortex-M3 and Cortex-M4 microcontrollers are supported:
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 ?.
- 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:
8eaf34b847e5b65b15f118c980b3f5c4 gnuarmeclipse-qemu-debian32-2.3.50-201508012214-dev.tgz 969f536db8768604fef113ffcd7a6bcd gnuarmeclipse-qemu-debian64-2.3.50-201508012214-dev.tgz 22bd97ade3233134e83ddf55912ec9ef gnuarmeclipse-qemu-osx-2.3.50-201508012214-dev.pkg d0a6114d2ede44ad8bcff40e8baeb21f gnuarmeclipse-qemu-win32-2.3.50-201508012214-dev-setup.exe f4d0618158f37284416f0e13aba83160 gnuarmeclipse-qemu-win64-2.3.50-201508051820-dev-setup.exe
[August 5, 2015; update]
The 64-bit Windows package was added as a new GitHub Release.