User Tools

Site Tools


Development tools

ARM GNU C/C++ toolchain for bare-metal devices

Download the arm-none-eabi-gcc-4.9 toolchain from the GNU ARM Embedded Toolchain project (currently tested with the 14.07 release ).

Extract the archive (e.g. to ~/toolchains ).

Update your PATH to find the newly installed toolchain. In your ~/.profile (for bash) or your ~/.zshrc (for zsh) , add


Restart your session so that is sourced again, and verify that you are running the correct arm-none-eabi-gcc version:

$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 4.9.3 20141119 (release) [ARM/embedded-4_9-branch revision 218278]
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO

Add compiler to Code::Blocks

If you want to use an IDE like Code::Blocks, you can configure it to use the newly installed toolchain.

  • Settings > Compiler
  • Copy “GNU GCC Compiler”, call the new compiler “Quimesis ARM Linux Compiler”
  • Toolchain executables:
    • Compiler's installation directory: $HOME/toolchain/usr/bin
    • C compiler: arm-linux-gcc
    • C++ compiler: arm-linux-g++
    • Linker for dynamic libs: arm-linux-g++
    • Linker for static libs: arm-linux-ar

When you create your project in Code::Blocks, be sure to select the “Quimesis ARM Linux Compiler”.

Libraries for host developments

  • libfuse-dev

Run a 32-bit toolchain on a 64-bit Ubuntu

sudo apt-get install lib32stdc++6
sudo apt-get install lib32z1

Windows tools

ST/Link v2 windows driver: STSW-LINK009 :

ST/Link Utility: STSW-LINK004 :

GDB server for emIDE:

CANUSB module

To use the CANUSB module :

  1. Connect CAN_L (pin2), CAN_H (pin7) and CAN_GND (pin3) (see
  2. Follow this step-by-step guide to install the Lawicel CANUSB adapter on Linux (mainly step 1 to 6) :

In brief :

  • Install can-utils package :
sudo apt-get install can-utils
  • Check if the kernel modules “can”, “can_raw” and “slcan” are already loaded using lsmod. If not
sudo modprobe can
sudo modprobe can_raw
sudo modprobe slcan

Make them load automatically :

sudo nano /etc/modules

Add the three modules “can”, “can_raw” and “slcan” to the list (each goes in one line).

  • Bind the CANUSB device (on port /dev/ttyUSB0) to the slcan interface (slcan0) and set up baud rate to 1Mbit/s (-s8) :
sudo slcand -o -c -f -s8 /dev/ttyUSB0 slcan0
  • Bring the slcan interface up :
sudo ifconfig slcan0 up
  • To intercept CAN messages (sended and received) :
candump slcan0
  • To send a CAN message (for CAN 2.0 frames, max 8 bytes separated by '.' and given in hex format) :
cansend slcan0 <ID>#<byte1>.<byte2>.<...>.<byte8>

USB-I2C (USB-ISS) module


To be used with i2c-devantech-iss kernel module, to access a dedicated /dev/i2c-x device on one's Linux desktop.

Then you can use the /dev/i2c-x device directly, or request another kernel module to use it:

echo <your_module> <device_address> > /sys/bus/i2c/devices/i2c-<x>/new_device

When using zsh, the latest command may result into failure zsh: file exists: /sys/bus/i2c/devices/i2c-<x>/new_device; in that case, just switch to bash, and the same command will succeed.

tools.txt · Last modified: 2020/03/02 14:53 by damien