Texane/stlink - открытое кроссплатформенное программное обеспечение для работы с программаторами st-link и st-link/v2 и предназанченое для программирования микроконтроллеров STM32. В состав пакета входит утилита для обычной прошивки st-flash, и Debug-сервер st-util. Проект расположен на github: https://github.com/texane/stlink.

В этой статье я дам подробный пошаговый туториал по сборке пакета под windows. Мы установим чистый MinGW и linux-подобную среду MSYS, соберем в них библиотеку libusb-1.0 и пакет stlink. Уже собранную мной версию можете скачать тут: Собранный texane stlink 26.01.14 для win32 и инструменты для сборки. Также в архиве присутствуют инсталляторы и дополнительные пакеты которые будут использованы в статье.

1) Установить MinGW и MSYS в C:\MinGW используя графический инсталлятор, который можно скачать здесь http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download (или взять в моем архиве installers_and_lib\mingw-get-setup.exe). 

Когда установщик дойдет до списка с пакетами, нужно выбрать следующие пакеты(Mark for Installation):

  • mingw32-base
  • mingw-developer-toolkit

Затем запустить Installation -> Apply Changes -> Apply. После завершения установки нажимаем Close, и Installlation -> Quit

Теперь добавляем каталог C:\MinGW\bin а также c:\MinGW\msys\1.0\bin\ в переменную среды Path. При добавлении директории нужно найти и ВРЕМЕННО удалить из переменных Path(их две - одна системная, вторая пользователя) все директории ко всяким тулчейнам и прочему, что бы они не конфликтовали с MinGW.

Например у меня есть Path пользователя:

%APPDATA%\Python\Scripts;C:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI\bin_cache;C:\ti\ccsv5\utils\bin;C:\Program Files\Versaloon

Я её сохранил в текстовый файл для последующего восстановления и полностью удалил. И также есть системная Path:

C:\Program Files\STMicroelectronics\st_toolset\asm;C:\Python27\;C:\Python27\Scripts;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI\bin\;C:\Program Files\COSMIC\CXSTM8_32K

Ее я опять же сохранил в тот же текстовый файл, а в переменной оставил только что-то системное, ну и сюда же дописал путь к MinGW, и того системная Path у меня выглядит:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\MinGW\bin\;c:\MinGW\msys\1.0\bin\

А пользовательская PATH осталась пустая.

2) Создайте файл C:\MinGW\msys\1.0\etc\fstab что бы смонтировать каталог C:\MinGW на точку монтирования /mingw :

#Win32_Path     Mount_Point 
c:/mingw        /mingw

3) Скачайте три архива с библиотеками glib, pkg-config, pkg-config-dev(или возьмите из моего архива) 

http://win32builder.gnome.org/packages/3.6/glib_2.34.3-1_win32.zip

http://win32builder.gnome.org/packages/3.6/pkg-config_0.28-1_win32.zip

http://win32builder.gnome.org/packages/3.6/pkg-config-dev_0.28-1_win32.zip

Извлеките их внутренности прямо в C:\MinGW. Проследите что бы пути в архивах легли ровно по путям в C:\MinGW.

4) Качаем git отсюда http://git-scm.com/download/win (или из архива) устанавливаем его. Запускаем Git Bash из меню приложений или из иконки на рабочем столе.

Терминал будет запушен в домашней директории (/c/Documents and Settings/Admin). Я буду работать в отдельной папке /c/tmp, поэтому создам ее:

mkdir /c/tmp && cd /c/tmp

Скачиваем исходники libusb-1.0 и stlink

git clone git://git.libusb.org/libusb.git 
git clone https://github.com/texane/stlink

5) Теперь можно собрать либу. Сборку нужно запускать в среде MSYS, из которой нужно запустить bash. Git Bash в этом случае не подойдет! По этому закрываем Git Bash и запускаем Win+R -> cmd, Enter, Вводим bash, Enter. Путь к MSYS у нас добавлен в Path, поэтому bash запустится именно оттуда.

cd /c/tmp/libusb/  
./autogen.sh 
./configure --prefix=/mingw  
make && make install

6) Ну и собираем точно так же stlink

cd ../stlink  
./autogen.sh 
./configure --prefix=/mingw  
make && make install

7) Забираем в нужную вам деректорию из папки c:\MinGW\bin\ полученные файлы st-util.exe, st-flash.exe, st-info.exe, libusb-1.0.dll

8) Возвращаем на место из текстового файла обе Path, измененные на шаге 1