This tutorial was created using Linux Mint 17.1 Rebecca, and has been tested using Ubuntu 14.04. This information should also work with other Ubuntu-based distros, but that has not been tested.
<user> - Your username.
<filename> - Generic file name placeholder. Use whatever file name you wish.
To make sure we have the required dependencies, get the following packages:
$ sudo apt-get install autoconfThis can also be done on one line:
$ sudo apt-get install automake
$ sudo apt-get install pkg-config
$ sudo apt-get install libusb-1.0
$ sudo apt-get install git
$ sudo apt-get install autoconf automake pkg-config libusb-1.0 gitGo to https://libre.adacore.com, click on the banner to download GNAT GPL select "Free Software for Academic Development", click on the button that says "Build Your Download Package", select "ARM ELF format (hosted on Linux)" from the drop-down menu, and download the GNAT GPL tarball for Linux.
Once downloaded, open a terminal (Ctrl+Alt+T), and navigate to the folder where it was downloaded (usually /home/<user>/Downloads). Once there, extract the file as follows:
$ tar -xvf gnat-gpl-2015-arm-elf-linux-binThis will create a folder of the same name. Navigate to that folder using a command such as:
$ cd gnat-gpl-2015-arm-elf-linux-binIf you list all the files, you will see a file called doinstall. Execute that file using a command such as:
$ sudo ./doinstallYou will need to enter your root password here. At some point during the install, you will be asked to specify the installation directory. If you already have GNAT installed for native development, you will need to somehow differentiate between the two. Here we use /opt/ARMgnat as the installation directory. If you have two separate GNAT installations, you will need to write a shell script to set the correct path when using GNAT for ARM. Open a text editor of your choice, write:
The first line makes the tools available at the shell prompt. The second line sets an environment variable used to locate the runtime system to be used in the programs. The idea is that Windows users could set ARMRUNTIME appropriately for their system and thus it is possible to share project files between Linux and Windows. For example in the GNAT project file for a project you might include:
package Builder is
for Default_Switches ("ada")
use ("-g", "--RTS=" & external("ARMRUNTIME", ""));
Save the shell script as <filename>.sh in /home/<user>/bin. Before using GNAT for ARM, you will need to run:
$ source <filename>.shThis will set the correct path for the ARM tool chain.
Now that we have GNAT and GPS installed, we need a way to communicate with the STM board, such as ST-Link. Fortunately, we can retrieve Texane STLink using Git using a command such as:
$ git clone https://github.com/texane/stlink stlinkThis will make a directory in /home/<user> called stlink. You can use any target directory name you like. Enter that director using a command such as:
$ cd stlink
and run the following:
$ ./autogen.shThis will install st-flash, st-info, st-term, and st-util (the one we care about the most) in /usr/local/bin. To ensure that when st-util is run it behaves as though it was run as root, we need to modify it slightly. Change the owner (should be root already, but just to be sure), and the permissions as follows:
$ make install
$ sudo chown root /usr/local/bin/st-utilTo check that everything took the way it's supposed to, run:
$ sudo chmod 4755 /usr/local/bin/st-util
$ ls -l /usr/local/binYou should see an output similar to the following (the file size and, of course, date/time may be somewhat different):
$ -rwsr-xr-x 1 root root 299527 May 14 12:11 st-util
Now that we have everything installed, connect your STM board using the USB mini B port, open a terminal, and run:
$ /usr/local/bin/st-utilYou should see a number of messages giving some information about your board and ending with "Listening at *:4242..." Open a separate terminal, navigate to the directory containing your project, run the script created earlier if necessary, and open GPS.
This will open up the GPS startup window where you can begin working.
$ source /home/<user>/bin/ARMgnatpath.sh
If you are running Linux inside a VirtualBox virtual machine, you may wish to set up a USB filter so VirtualBox automatically recognizes the STM board. To do this, open up the virtual machine settings dialog box and select "USB." Click on the '+' symbol on the right to add a new USB filter. If you have the board plugged into your host, you should see it listed among the USB devices in the menu that appears. Selecting the board will set up a filter automatically.
Alternatively the filter can be set up manually using parameters such as the ones below. These values are appropriate for the STMF4DISCOVERY board. We suggest leaving the Serial Number field blank so the settings will work for any instance of the board (useful for sharing boards).
Name: STMicroelectronics STM32 STLink 
Vendor ID: 0483
Product ID: 3748
Product: STM32 STLink
After configuring a USB filter, boot the virtual machine with the board plugged into the host and VirtualBox should automatically make the board available to the VM.