GNU MCU Eclipse

A family of Eclipse CDT extensions and tools for GNU ARM & RISC-V development

GNU ARM Eclipse plug-ins v2.9.1.201508011813 released GNU ARM Eclipse QEMU v2.3.50-20150804*-dev released

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

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

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

  • QEMU emulates only Cortex-M3 and Cortex-M4 instructions; specific FP (Floating Point) Cortex-M4 instructions are not yet supported;
  • 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.

Download

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-bits Windows package was added as a new GitHub Release.