On Windows users should ensure that the following software is installed:
7zip
git
cmake
(3.17.0 or later)MinGW-w64
(7.0.0 or later) with GCC toolchain 8.1.0
- Install
7zip
from https://www.7-zip.org - Install
git
from https://git-scm.com/download/win - Install
cmake
from https://cmake.org/download
Ensure that you add cmake to the $PATH system variable when following the instructions by the setup assistant. - Install
- EITHER: MinGW-w64 from https://sourceforge.net/projects/mingw-w64 (mingw-w64-install.exe)
- OR: MSVC toolchain from Visual Studio Build Tools 2019
- Create a new destination folder at a place of your choice
- Open the command-line (cmd.exe) and execute
cd C:\$Path-to-your-destination-folder$\
- Fetch the project sourcefiles by running
git clone https://github.com/stlink-org/stlink.git
from the command-line (cmd.exe)
or download the stlink zip-sourcefolder from the Release page on GitHub
Visual Studio IDE is not necessary, only Windows SDK & build tools are required (~3,3GB).
-
Navigate through menus as follows (might change overtime)
All downloads > Tools for Visual Studio 2019 > Build Tools for Visual Studio 2019 > Download
-
Start downloaded executable. After Visual Studio Installer bootstraps and main window pops up, open
Individual Components
tab, and pick
- latest build tools (eg.
MSVC v142 - VS 2019 C++ x64/x86 build tools (v14.25)
) - latest Windows SDK (eg.
Windows 10 SDK (10.0.18362.0)
)
- After installation finishes, you can press
Launch
button in Visual Studio Installer's main menu.- Thus you can open
Developer Command Prompt for VS 2019
. It iscmd.exe
instance with adjusted PATHs including eg.msbuild
. - Alternatively, you can use
Developer Powershell for VS 2019
which is the same thing forpowershell.exe
. Both are available from Start menu. - Another option is to add
msbuild
to PATH manually. Its location should beC:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin
. Then, it should be available from anypowershell.exe
orcmd.exe
session.
- Thus you can open
- Use the command-line to move to the
scripts
directory within the source-folder:cd stlink\scripts\
- Execute
./mingw64-build.bat
NOTE:
Per default the build script (currently) uses C:\Program Files\mingw-w64\x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0\mingw64\bin
.
When installing different toolchains make sure to update the path in the mingw64-build.bat
.
This can be achieved by opening the .bat file with a common text editor.
- In a command prompt, change the directory to the folder where the stlink files were cloned (or unzipped) to.
- Make sure the build folder exists (
mkdir build
if not). - From the build folder, run cmake (
cd build; cmake ..
).
This will create a solution file stlink.sln
in the build folder.
Now, you can build whole stlink
suite using following command:
msbuild /m /p:Configuration=Release stlink.sln
Options:
/m
- compilation runs in parallel utilizing multiple cores/p:Configuration=Release
- generates Release, optimized build.
Directory <project_root>\build\Release
contains final executables.
(st-util.exe
is located in <project_root>\build\src\gdbserver\Release
).
NOTE 1:
Executables link against libusb.dll library. It has to be placed in the same directory as binaries or in PATH.
It can be copied from: <project_root>\build\3rdparty\libusb-{version}\MS{arch}\dll\libusb-1.0.dll
.
NOTE 2:
ST-LINK drivers are required for stlink
to work.
Install the following packages from your package repository:
git
gcc
orclang
ormingw32-gcc
ormingw64-gcc
(C-compiler; very likely gcc is already present)build-essential
(on Debian based distros (debian, ubuntu))cmake
(3.4.2 or later, use the latest version available from the repository)pkg-config
libusb-1.0
libusb-1.0-0-dev
(development headers for building)libgtk-3-dev
(optional, needed forstlink-gui
)pandoc
(optional, needed for generating manpages from markdown)
or execute (Debian-based systems only): apt-get install gcc build-essential cmake libusb-1.0 libusb-1.0-0-dev libgtk-3-dev pandoc
(Replace gcc with the intended C-compiler if necessary or leave out any optional package not needed.)
- Open a new terminal console
- Create a new destination folder at a place of your choice e.g. at
~/git
:mkdir $HOME/git
- Change to this directory:
cd ~/git
- Fetch the project sourcefiles by running
git clone https://github.com/stlink-org/stlink.git
- Change into the project source directory:
cd stlink
- Run
make release
to create the Release target - Run
make debug
to create the Debug target (optional)
The debug target is only necessary in order to modify the sources and to run under a debugger.
The top level Makefile is just a handy wrapper for:
$ mkdir build && cd build
$ cmake -DCMAKE_BUILD_TYPE=release -DCMAKE_TOOLCHAIN_FILE=./cmake/linux-mingw64.cmake -S ..
$ make
$ mkdir build && cd build
$ cmake -DCMAKE_BUILD_TYPE=release -DCMAKE_TOOLCHAIN_FILE=./cmake/linux-mingw32.cmake -S ..
$ make
As an alternative you may also install
- to a user folder e.g
$HOME
withcd build/Release && make install DESTDIR=$HOME
- or system wide with
cd build/Release && sudo make install
.
When installing system-wide, the dynamic library cache needs to be updated with the command ldconfig
.
To build the debian package you need the following extra packages: devscripts debhelper
.
$ git archive --prefix=$(git describe)/ HEAD | bzip2 --stdout > ../libstlink_$(sed -En -e "s/.*\((.*)\).*/\1/" -e "1,1 p" debian/changelog).orig.tar.bz2
$ debuild -uc -us
By default most distributions don't allow access to USB devices.
Therefore make sure you install udev files which are necessary to run the tools without root permissions.
udev rules create devices nodes and set the group of these to stlink
.
The rules are located in the subdirectory etc/udev/rules.d
within the sourcefolder.
Copy them to the directory path /etc/udev/rules.d
and subsequently reload the udev rules:
$ cp etc/udev/rules.d /etc/udev/rules.d
$ udevadm control --reload-rules
$ udevadm trigger
Udev will now create device node files /dev/stlinkv2_XX
, /dev/stlinkv1_XX
.
You need to ensure that the group stlink
exists and the user who is trying to access these devices is a member of this group.
At the time of writing the STLink-v1 has mostly been replaced with the newer generation STLink-v2 programmers and thus is only rarely used. As there are some caveats as well, we recommend to use the STLink-v2 programmers if possible.
To be more precise, the STLINKv1's SCSI emulation is somehow broken, so the best advice possibly is to tell your operating system to completely ignore it.
Choose on of the following options before connecting the device to your computer:
modprobe -r usb-storage && modprobe usb-storage quirks=483:3744:i
- OR
echo "options usb-storage quirks=483:3744:i" >> /etc/modprobe.conf
modprobe -r usb-storage && modprobe usb-storage
- OR
cp stlink_v1.modprobe.conf /etc/modprobe.d
modprobe -r usb-storage && modprobe usb-storage
The best and recommended way is to install a package manager for open source software, either homebrew or MacPorts.
Then install the following dependencies from the package repository:
git
gcc
orllvm
(for clang) (C-compiler)cmake
pkg-config
libusb
gtk+3
orgtk3
(optional, needed forstlink-gui
)
To do this with only one simple command, type:
- for homebrew:
- with gcc:
sudo brew install git gcc cmake libusb gtk+3
or - with clang:
sudo brew install git llvm cmake libusb gtk+3
or
- with gcc:
- for MacPorts:
- with gcc:
sudo port install git llvm-9.0 cmake libusb gtk3
or - with clang:
sudo port install git gcc9 cmake libusb gtk3
- with gcc:
- Open a new terminal window
- Create a new destination folder at a place of your choice e.g. at
~/git
:mkdir $HOME/git
- Change to this directory:
cd ~/git
- Fetch the project sourcefiles by running
git clone https://github.com/stlink-org/stlink.git
- Change into the project source directory:
cd stlink
- Run
make release
to create the Release target - Run
make debug
to create the Debug target (optional)
The debug target is only necessary in order to modify the sources and to run under a debugger.
To put the compiled shared libs into a different directory during installation,
you can use the cmake option cmake -DLIB_INSTALL_DIR:PATH="/usr/lib64" ..
.
Author: nightwalker-87