GNU ARM Eclipse QEMU v2.3.50-20150801*-dev released

Contents

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.

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.

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

Note: the rest of the boards listed in the previous QEMU release will be added in future versions.

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.

SysTick

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

the 64-bits Windows version of QEMU still has some problems with the timers, and applications using SysTick fail; until a solution is found, the 32-bits version of QEMU can be used on Windows 64-bits 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.