First, you have to know there are several boards supported by the software.
Those boards use a chip to translate from USB to JTAG commands. The chip is
called stlink and there are 2 versions:
First, you have to know there are several boards supported by the software.
Those boards use a chip to translate from USB to JTAG commands. The chip is
called stlink and there are 2 versions:
-2 different transport layers are used:
-. STLINKv1 uses SCSI passthru commands over USB,
-. STLINKv2 uses raw USB commands.
+* STLINKv1, present on STM32VL discovery kits,
+* STLINKv2, present on STM32L discovery and later kits.
+
+Two different transport layers are used:
-. libusb-1.0 (You probably already have this, but you'll need the
-development version to compile)
-. pkg-config
+## Common requirements
+
+* `pkg-config`
+* `libusb-1.0` (plus development headers for building, on debian based distros `libusb-1.0.0-dev` package)
+
+## For STLINKv1
The STLINKv1's SCSI emulation is very broken, so the best thing to do
is tell your operating system to completely ignore it.
Options (do one of these before you plug it in)
The STLINKv1's SCSI emulation is very broken, so the best thing to do
is tell your operating system to completely ignore it.
Options (do one of these before you plug it in)
- *) modprobe -r usb-storage && modprobe usb-storage quirks=483:3744:i
-or *)1. add "options usb-storage quirks=483:3744:i" to /etc/modprobe.conf
- *)2. modprobe -r usb-storage && modprobe usb-storage
-or *)1. cp stlink_v1.modprobe.conf /etc/modprobe.d
- *)2. modprobe -r usb-storage && modprobe usb-storage
-IF YOU HAVE AN STLINKv2
-~~~~~~~~~~~~~~~~~~~~~~~
+* `modprobe -r usb-storage && modprobe usb-storage quirks=483:3744:i`
+* or 1. `echo "options usb-storage quirks=483:3744:i" >> /etc/modprobe.conf`
+* 2. `modprobe -r usb-storage && modprobe usb-storage`
+* or 1. `cp stlink_v1.modprobe.conf /etc/modprobe.d`
+* 2. `modprobe -r usb-storage && modprobe usb-storage`
+
+## For STLINKv2
This project was converted to Autotools by a well meaning individual. The
following steps will build the project for you.
This project was converted to Autotools by a well meaning individual. The
following steps will build the project for you.
Then, in your project directory, someting like this...
(remember, you need to run an _ARM_ gdb, not an x86 gdb)
Then, in your project directory, someting like this...
(remember, you need to run an _ARM_ gdb, not an x86 gdb)
You may reset the chip using GDB if you want. You'll need to use `target
extended-remote' command like in this session:
You may reset the chip using GDB if you want. You'll need to use `target
extended-remote' command like in this session:
(gdb) target extended-remote localhost:4242
Remote debugging using localhost:4242
0x080007a8 in _startup ()
(gdb) kill
Kill the program being debugged? (y or n) y
(gdb) run
(gdb) target extended-remote localhost:4242
Remote debugging using localhost:4242
0x080007a8 in _startup ()
(gdb) kill
Kill the program being debugged? (y or n) y
(gdb) run
For convenience, you may install udev rules file, 49-stlinkv*.rules, located
in the root of repository. You will need to copy it to /etc/udev/rules.d,
and then either reboot or execute
For convenience, you may install udev rules file, 49-stlinkv*.rules, located
in the root of repository. You will need to copy it to /etc/udev/rules.d,
and then either reboot or execute
Udev will now create a /dev/stlinkv2_XX or /dev/stlinkv1_XX file, with the appropriate permissions.
This is currently all the device is for, (only one stlink of each version is supported at
any time presently)
Udev will now create a /dev/stlinkv2_XX or /dev/stlinkv1_XX file, with the appropriate permissions.
This is currently all the device is for, (only one stlink of each version is supported at
any time presently)
It will be loaded, and pc will be adjusted to point to start of the
code, if it is linked correctly (i.e. ELF has correct entry point).
It will be loaded, and pc will be adjusted to point to start of the
code, if it is linked correctly (i.e. ELF has correct entry point).
The GDB stub ships with a correct memory map, including the flash area.
If you would link your executable to 0x08000000 and then do
The GDB stub ships with a correct memory map, including the flash area.
If you would link your executable to 0x08000000 and then do
it will use a rather inefficient single-stepping way of doing that.
Set up a breakpoint manually in that case and do `continue'.
it will use a rather inefficient single-stepping way of doing that.
Set up a breakpoint manually in that case and do `continue'.
-Currently known working combinations of programmer and target
-=============================================================
+Q: Load command does not work in GDB.
+
+A: Some people report XML/EXPAT is not enabled by default when compiling
+GDB. Memory map parsing thus fail. Use --enable-expat.
+
+## Currently known working combinations of programmer and target
* STM32F0Discovery (STM32F0 Discovery board)
* STM32F100xx (Medium Density VL, as on the 32VL Discovery board)
* STM32L1xx (STM32L Discovery board)
* STM32F103VC, STM32F107RC, STM32L151RB, STM32F205RE and STM32F405RE on custom boards
(https://github.com/UweBonnes/wiki_fuer_alex/layout/usps...)
* STM32F0Discovery (STM32F0 Discovery board)
* STM32F100xx (Medium Density VL, as on the 32VL Discovery board)
* STM32L1xx (STM32L Discovery board)
* STM32F103VC, STM32F107RC, STM32L151RB, STM32F205RE and STM32F405RE on custom boards
(https://github.com/UweBonnes/wiki_fuer_alex/layout/usps...)
* STM32F303xx (STM32F3 Discovery board)
* STM32F407xx (STM32F4 Discovery board)
* STM32F429I-DISCO (STM32F4 Discovery board with LCD)
* STM32F439VIT6 (discovery board reseated CPU)
* STM32F303xx (STM32F3 Discovery board)
* STM32F407xx (STM32F4 Discovery board)
* STM32F429I-DISCO (STM32F4 Discovery board with LCD)
* STM32F439VIT6 (discovery board reseated CPU)
* STM32L151CB (custom board)
* STM32L152RB (STM32L-Discovery board, custom board)
* STM32L151CB (custom board)
* STM32L152RB (STM32L-Discovery board, custom board)
* STM32F401xx (STM32 Nucleo-F401RE board)
* STM32F030R8T6 (STM32 Nucleo-F030R8 board)
* STM32F072RBT6 (STM32 Nucleo-F072RB board)
* STM32F103RB (STM32 Nucleo-F103RB board)
* STM32F401xx (STM32 Nucleo-F401RE board)
* STM32F030R8T6 (STM32 Nucleo-F030R8 board)
* STM32F072RBT6 (STM32 Nucleo-F072RB board)
* STM32F103RB (STM32 Nucleo-F103RB board)
+* STM32F303RET6 (STM32 Nucleo-F303RE board)
+* STM32F334R8 (STM32 Nucleo-F334R8 board)
+* STM32F411RET6 (STM32 Nucleo-F411RE board)
+* STM32F756NGHx (STMF7 evaluation board)
+* STM32L053R8 (STM32 Nucleo-L053R8 board)