How to configure Ubuntu to program STM32

OpenOCD installation

The Open On-Chip Debugger (OpenOCD http://openocd.org/) aims to provide debugging, in-system programming and boundary-scan testing for embedded target devices. If you using Ubuntu or any Debian like OS, OpenOCD could be installed by running following command:

sudo apt-get install openocd

ARM toolchain installation

Now we need compiler, linker and assembler (toolchain) for ARM Cortex architecture (https://launchpad.net/gcc-arm-embedded).

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt-get update
sudo apt-get install gcc-arm-embedded

Eclipse

First install Eclipse IDE (https://eclipse.org/). After installation run Eclipse and install plugin for STM32 procesors development. Follow this instruction http://gnuarmeclipse.github.io/plugins/install/ .

USB rules

Next thing is to add proper permission to new devices.

cd /etc/udev/rules.d/
sudo nano 50-usb-stlink.rules

After opening 50-usb-stlink.rules (you can chose number to be anything integer under 99) file in nano, paste following rules for different ST-Link devices.

#FT232
ATTRS{idProduct}=="6014", ATTRS{idVendor}=="0403", MODE="666", GROUP="plugdev"
#FT2232
ATTRS{idProduct}=="6010", ATTRS{idVendor}=="0403", MODE="666", GROUP="plugdev"
#FT230X
ATTRS{idProduct}=="6015", ATTRS{idVendor}=="0403", MODE="666", GROUP="plugdev"
#STLINK V1
ATTRS{idProduct}=="3744", ATTRS{idVendor}=="0483", MODE="666", GROUP="plugdev"
#STLINK V2 and V2.1
ATTRS{idProduct}=="3748", ATTRS{idVendor}=="0483", MODE="666", GROUP="plugdev"

If you have different programmer you should change idProduct and idVendor. To find out your numbers first plug your USB device and then type lsusb

~$ lsusb
Bus 002 Device 007: ID 041e:323d Creative Technology, Ltd 
Bus 002 Device 005: ID 04d9:1702 Holtek Semiconductor, Inc. Keyboard LKS02
Bus 002 Device 004: ID 09da:9090 A4Tech Co., Ltd. XL-730K / XL-750BK / XL-755BK Mice
Bus 002 Device 003: ID 0424:2504 Standard Microsystems Corp. USB 2.0 Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 064e:a219 Suyin Corp. 1.3M WebCam (notebook emachines E730, Acer sub-brand)
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

In the end restart USB service by pasting to terminal

sudo service udev restart

Testing

For tests I am using ST-Link 2.1 programmer from NUCLEO-F401RE board and  STM32F103C8T6 procesor in my USB Accelerometer device connected to Nucleo by SWD.

sudo openocd -f /usr/share/openocd/scripts/interface/stlink-v2-1.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg

That’s it. If you had any troubles preparing you Ubuntu to program STM microcontrollers please let me know in the comment section below.

 

Leave a Reply

Your email address will not be published. Required fields are marked *