ST-Link + MDK-ARM + Linux

Пользователям Linux, желающим программировать микроконтроллеры фирмы STM.

Будем использовать:

MDK-ARM прекрасно работает под wine. Чтобы не было проблем с кодировкой при комментировании в своей программе, надо в uVision в меню Edit выбрать пункт «Configuration…» и на вкладке «Editor» выбрать кодировку (Encoding) UTF-8: «Encode in UTF-8 without signature».

Чтобы разобраться с texane/stlink, скачаем его для начала:

  1. если не установлен git (кто не знает: система контроля версий, должна быть у каждого программиста), установим:
    sudo apt-get install git
    
  2. скачиваем texane/stlink с помощью git:
    git clone git://github.com/texane/stlink.git
    

Теперь собираем:

  1. Удовлетворяем зависимости:
    sudo apt-get install libusb-1.0 pkg-config libtool autoconf
    
  2. Собираем:
    cd stlink
    ./autogen.sh
    ./configure
    make
    

Не выходя из каталога stlink выполним пару команд:

sudo cp 49-stlinkv1.rules 49-stlinkv2.rules /etc/udev/rules.d
sudo udevadm control --reload-rules

чтобы у нас всегда был доступ к программатору ST-Link без прав суперпользователя.

Команда, чтобы прошить микроконтроллер:

~/stlink/st-flash write путь адрес

где:

  • путь — путь к двоичному файлу прошивки (*.bin),
  • адрес — шестнадцатеричный адрес в памяти (например, начало флеш-памяти в STM32: 0x08000000).

Утилита st-flash позволяет также считывать данные, если вместо write задать read и указать поcле адреса объем данных в байтах.

Получить двоичный файл можно средствами MDK-ARM. Чтобы при сборке проекта генерировался двоичный файл, добавляем в настройках проекта на вкладке User в секцию «Run User Programm After Build/Rebuild» строку:

FromElf.exe --bin --output путь_к_bin путь_к_axf

где:

  • путь_к_bin — путь к двоичному файлу, который будет генерироваться,
  • путь_к_axf — путь к стандартному файлу прошивки, который по умолчанию генерируется при сборке проекта.

На панели uVision имеется кнопка «Load» для загрузки прошивки в микроконтроллер. Настроим поведение этой кнопки. В настройках проекта на вкладке Utilities выбираем «Use external Tool for Flash programming» и в поле «Command» добавляем: load-firmware.sh. Ставим галочку «Run Independent», чтобы интерфейс не зависал. В папке проекта создаем файл load-firmware.sh и добавляем в него следующие строки:

#!/bin/bash
~/stlink/st-flash write путь адрес

подставив путь к двоичному файлу и адрес начала флеш-памяти программируемого микроконтроллера. Файл необходимо сделать исполняемым.