Sunday, January 30, 2011

Free toolchains for STM32VLDISCOVERY

How to program the STM32VLDISCOVERY board? ST does not provide a toolchain themselves, instead there are three different officially supported toolchains available, for which ST has provided simple tutorials. All of the three official toolchains are for Windows, so Linux users have to think of something else. Fortunately, multiple options exist for also Linux users.

Here's an overview of all the tools I'm aware of. First off, I'll explain the easy, official options. These are unfortunately only for Windows users.

Officially promoted toolchains

ST provides example code and documentation for three toolchains: Atollic TrueSTUDIO, IAR Embedded Workbench and Keil MDK-ARM.
Download ST's example firmware package here
User manual for the firmware package

Below are some quick facts & links about the official toolchains.

Atollic TrueSTUDIO (Windows)

This is an Eclipse-based development platform that includes an optimizing C/C++ compiler, editor and a debugger. With the free Lite version, you lose the C++ support, but you get unlimited code size and usage time. If you eventually use the Lite version to design an embedded product, they want you to note it in the user documentation of your product. There is also a 30-day trial version available which has all the functionality of the Professional version. If you use Windows, this toolchain is probably the best & easiest choice to start with. According to a forum post I read, it doesn't work under Wine.

Download Atollic TrueSTUDIO for STM32 here
Lite version vs. Professional comparison
ST user manual for Atollic TrueSTUDIO tutorial: Start new project using Atollic & STM32VLDISCOVERY tutorial: STM32 library examples in Atollic tutorial: how to use the ST code examples with Atollic

IAR Embedded Workbench (Windows)

IAR Embedded Workbench

The Kickstart edition is a free version of the IAR Embedded Workbench. It's limited to 32kB code size, but otherwise it's fully functional. You have to register it in order to get a license key.

ST User Manual for IAR Embedded Workbench
Download the Kickstart edition of IAR Embedded Workbench for ARM here

Keil MDK-ARM-Basic (Windows, under Wine in Linux)

MDK-ARM in action.

There's a free version available of the Keil MDK-ARM-Basic toolchain, but it comes with a 32kB code size restriction. You need to register on the site to get to the download. According to a forum post I read, the Keil toolchain works also in Linux under Wine.

ST User Manual for Keil MDK-ARM
Download the Keil MDK-ARM-Basic here.

STM32 ST-Link Utility (Windows)

ST-Link Utility

This free program from ST can be used to flash the microcontroller and to read and modify the memory contents on the fly. Unfortunately, it's only for Windows.

ST homepage: STM32 ST-Link Utility
Download the STM32 ST-Link Utility here
STM32 ST-Link Utility - User Manual

Alternative options

Here's a list of alternative programming tools for the discovery. Many Linux ones, also some Windows. Unfortunately, to my knowledge, the built-in ST-Link debugger does not work with Linux. Debugging is possible only through some effort. (Edit: Now ST-Link works under Linux too, see "Captn's missing link")

I have to say that I haven't tried out these options yet... If you have some experience and know better, please comment below!

GNU ARM toolkit (Linux, MacOS, Windows under CygWin)

A free toolchain under the GNU license.
GNU ARM toolkit homepage
Installing the GNU ARM toolkit - a blog post with some installation info

Sourcery G++ Lite Edition for ARM EABI (Linux, Windows)

This is a free command-line compiler tool for Linux & Windows.Get the embedded application binary interface (EABI) version. That version is meant for developing stand-alone programs for STM32.
Sourcery G++ Lite Edition homepage
STM32 development - a useful tutorial page

GCC (Any platform)

Here's a guide on compiling GCC with floating-point support for STM32 development.

stm32flash (Linux, Windows)

An open-source command-line tool for flashing STM32 processors using the STM32 bootloader. Support for Linux & Windows. Here's a guide how to program your STM32 with stm32flash.

stm32flash project homepage
STM32 development - a page with useful info on using open-source tools for STM32 development
a Blog post with some help on using stm32flash

STM32 ARM-Cortex bootloader (any OS)

A python script for flashing the STM32, runs on any OS with Python installed. The aforementioned stm32flash is said to be a better solution, but it's only for Linux & Windows, while this runs under Python anywhere.
STM32 ARM-Cortex bootloader home page

CooCox tools (Windows)

CooCox CoIDE

CooCox offers many free tools suitable for STM32F100RB. Unfortunately they are not compatible with ST-Link, but you can use their free and open CoLink programmer among others. Coocox CoIDE is a new, free and highly-integrated software development environment for ARM cortex M3 and M0 based microcontrollers. CoOS is a free and open realtime operating system for the Cortex-M series. CoFlash is a stand-alone flash programming software that uses their free CoLink programmer. Unfortunately, the software is for Windows only.
CooCox development tools
A forum post with help for CoIDE with STM32VLDISCOVERY

Raisonance Ride7 (Windows)

Raisonance Ride7 and RKit-ARM is a complete toolchain for ARM Cortex-M. There are some limitations to the unlicensed software. What the limitations are is not very clear, but at least there's no code size limitations. (Thanks error404)

Download Raisonance Ride7 and RKit-ARM and documentation here

Free Pascal (any OS)

Jeppe at the element14 forums pointed out Free Pascal. He says it's a fun and logical langugage to use, but not entirely finished yet. Still, should probably work for most uses.
Jeppe's post at the element-14 forums
Jeppe's page with some help for Free Pascal and the STM32F103 (should be quite close to F100RB)

Captn's missing link - ST-Link on Linux!

This guy has succeeded in making the ST-Link working under Linux. This means you can finally program the STM32VLDISCOVERY via it's built-in USB programmer under Linux! Quoting texane in the discussion: "an opensource stlink-like standalone software to program the discovery kit is on its way. It is a bit crappy yet (you will have to look inside the source), but it supports both flash and RAM programming plus some other features." Great news!

Captn's missing link
Texane's repository of the mlink source code with added flash access on Github:

Another ST-link upload / debug program for Linux, from the comments. Thanks Anonymous!

The creator, Donald Becker, writes:
"It's a command line program to do the usual download/upload/debug actions.
It can
  - write firmware into the flash (system and user memory)
  - read/verify/write to memory and devices
  - read and set registers and
  - change run state (run/debug/halt) and
  - single step"

arm-utilities Google code page
An introduction post in the Openocd-development mailing list

Using BusPirate for serial-wire debugging the STM32

Debugging the STM32VLDISCOVERY with a Bus Pirate

If you want to debug your STM32 in Linux, here's a page about using a handy tool called the Bus Pirate for that cause.

OK, that's it for now. If you have any other options, ideas or recommendations, please comment!

[Edit: added CooCox tools, Raisonance Ride7]
[Edit2: added Free Pascal]
[Edit3: added Captn's missing link]
[Edit4: added arm-utilities]


  1. If you need tutorial for STM32 look here:

  2. Eventhough it is still a bit crapy, the following
    code implements all that is needed to program the
    kit directly from the usb port from linux (both flash
    and RAM, plus some jtag related features). And it is
    opensource, so feel free to contribute.

    initial website:
    git repo: git://

  3. hi, just to inform the post on hackaday is not from
    captn himself, but from me (

    He started the implementation from scratch and
    I added the support for the flash access.

    I maintain a repository of its source code + the added flash access on github:



  4. Whoops, sorry. Fixed it!
    Great work for making this possible on Linux!

  5. no problem, that is a shame STMicroelec people
    did not do it themselves... thanks for sharing
    all those info.

  6. There is also Donald Becker's Linux utility

  7. Thanks! I added the arm-utilities to the list.

  8. For information, ST-Link on Linux from texane (git:// is now supporting : st-link v1 & v2. Boards STM32 VL, L and F4 can be flashed and debugged with it.

  9. You can also build stlink for Mac OS X

  10. Found this STM32VLDISCOVERY Linux template project for ST-Link:

  11. And here's a STM32VLDISCOVERY project template tutorial for Windows, using Eclipse and Code Sourcery.

  12. Yet another GNU ARM toolchain: YAGARTO.

  13. What is so hard to understand is that ST like many others want you to pay tax to Micro$oft instead of spending your money on THEIR products and evaluation boards.

  14. Now CooCox compatible with ST-Link from the box.

  15. I also successfully built basic STM32 applications with tcc (, itself built with cross compilation enabled!

    ST is known for long to build good hardware but to be light on "public" support (focusing on close links with big customers), but things are evolving, especially with STM32/STM8 spreading!

  16. This new IDE package looks great:

    Another free package: comes with IDE, GNU ARM compiler, but needs a J-link debugger.

    Haven't tried them yet though...

  17. Also, Wikipedia has now a handy list of toolchains!