xenial (1) stm32flash.1.gz

Provided by: stm32flash_0.5-1_amd64 bug

NAME

       stm32flash - flashing utility for STM32 through UART or I2C

SYNOPSIS

       stm32flash [-cfhjkouvCR] [-a bus_address] [-b baud_rate] [-m serial_mode] [-r filename] [-w filename] [-e
       num] [-n count] [-g  address]  [-s  start_page]  [-S  address[:length]]  [-F  RX_length[:TX_length]]  [-i
       GPIO_string] [tty_device | i2c_device]

DESCRIPTION

       stm32flash reads or writes the flash memory of STM32.

       It  requires  the  STM32  to  embed  a  bootloader  compliant  with ST application note AN3155 or AN4221.
       stm32flash uses the serial port tty_device or the i2c port i2c_device to interact with the bootloader  of
       STM32.

OPTIONS

       -a bus_address
              Specify address on bus for i2c_device.  This option is mandatory for I2C interface.

       -b baud_rate
              Specify  baud  rate  speed  of tty_device.  Please notice that the ST bootloader can automatically
              detect the baud rate, as explained in chapter 2 of AN3155.  This option could be required together
              with option -c or if following interaction with bootloader is expected.  Default is 57600.

       -m mode
              Specify  the  format  of  UART  data.  mode is a three characters long string where each character
              specifies, in this strict order, character size, parity and stop bits.  The only values  currently
              used  are  8e1  for  standard STM32 bootloader and 8n1 for standard STM32W bootloader.  Default is
              8e1.

       -r filename
              Specify to read the STM32 flash and write its content in filename in raw binary format (see  below
              FORMAT CONVERSION).

       -w filename
              Specify  to  write  the  STM32  flash with the content of filename.  File format can be either raw
              binary or intel hex (see below FORMAT CONVERSION).  The file format is automatically detected.  To
              by-pass  format  detection  and  force  binary  mode  (e.g. to write an intel hex content in STM32
              flash), use -f option.

       -u     Specify to disable write-protection from  STM32  flash.   The  STM32  will  be  reset  after  this
              operation.

       -j     Enable the flash read-protection.

       -k     Disable the flash read-protection.

       -o     Erase only.

       -e num Specify  to  erase  only  num pages before writing the flash. Default is to erase the whole flash.
              With -e 0 the flash would not be erased.

       -v     Specify to verify flash content after write operation.

       -n count
              Specify to retry failed writes up to count times. Default is 10 times.

       -g address
              Specify address to start execution from (0 = flash start).

       -s start_page
              Specify flash page offset (0 = flash start).

       -S address[:length]
              Specify start address and optionally length for read/write/erase/crc operations.

       -F RX_length[:TX_length]
              Specify the maximum frame size for the current interface.  Due to STM32 bootloader protocol,  host
              will  never  handle  frames  bigger  than  256 byte in RX or 258 byte in TX.  Due to current code,
              lowest limit in RX is 20 byte (to read a complete reply of command GET). Minimum limit in TX is  5
              byte, required by protocol.

       -f     Force binary parser while reading file with -w.

       -h     Show help.

       -c     Specify to resume the existing UART connection and don't send initial INIT sequence to detect baud
              rate. Baud rate must be kept the same as the existing connection. This  is  useful  if  the  reset
              fails.

       -i GPIO_string
              Specify  the GPIO sequences on the host to force STM32 to enter and exit bootloader mode. GPIO can
              either be real GPIO connected from host to STM32 beside  the  UART  connection,  or  UART's  modem
              signals  used  as  GPIO.  (See  below  BOOTLOADER  GPIO SEQUENCE for the format of GPIO_string and
              further explanation).

       -C     Specify to compute CRC on memory content.  By default the CRC  is  computed  on  the  whole  flash
              content.  Use -S to provide different memory address range.

       -R     Specify  to  reset  the device at exit.  This option is ignored if either -g, -j, -k or -u is also
              specified.

BOOTLOADER GPIO SEQUENCE

       This feature is currently available on Linux host only.

       As explained in ST application note AN2606, after reset the STM32 will  execute  either  the  application
       program  in user flash or the bootloader, depending on the level applied at specific pins of STM32 during
       reset.

       STM32 bootloader is automatically activated by configuring the pins BOOT0="high" and BOOT1="low" and then
       by  applying  a reset.  Application program in user flash is activated by configuring the pin BOOT0="low"
       (the level on BOOT1 is ignored) and then by applying a reset.

       When GPIO from host computer are connected to either configuration and reset pins  of  STM32,  stm32flash
       can control the host GPIO to reset STM32 and to force execution of bootloader or execution of application
       program.

       The sequence of GPIO values to entry to and exit from bootloader  mode  is  provided  with  command  line
       option -i GPIO_string.

       The format of GPIO_string is:
              GPIO_string = [entry sequence][:[exit sequence]]
              sequence = [-]n[,sequence]

       In  the  above  sequences,  negative  numbers  correspond  to  GPIO  at "low" level; numbers without sign
       correspond to GPIO at "high" level.  The value "n" can either be the GPIO number on the  host  system  or
       the  string "rts", "dtr" or "brk". The strings "rts" and "dtr" drive the corresponding UART's modem lines
       RTS and DTR as GPIO.  The string "brk" forces the UART to send a BREAK sequence on TX line;  after  BREAK
       the UART is returned in normal "non-break" mode.  Note: the string "-brk" has no effect and is ignored.

       Note  that  the  exit  sequence  is  only  executed  if  -R is specified. If -R is specified, but no exit
       sequence, a software-triggered reset will be performed.

       As example, let's suppose the following connection between host and STM32:
       • host GPIO_3 connected to reset pin of STM32;
       • host GPIO_4 connected to STM32 pin BOOT0;
       • host GPIO_5 connected to STM32 pin BOOT1.

       In this case, the sequence to enter in bootloader mode is: first put GPIO_4="high" and GPIO_5="low"; then
       send  reset pulse by GPIO_3="low" followed by GPIO_3="high".  The corresponding string for GPIO_string is
       "4,-5,-3,3".

       To exit from bootloader and run the application program, the sequence is:  put  GPIO_4="low";  then  send
       reset pulse.  The corresponding string for GPIO_string is "-4,-3,3".

       The complete command line flag is "-R -i 4,-5,-3,3:-4,-3,3".

       STM32W  uses  pad  PA5  to  select  boot  mode;  if  during  reset PA5 is "low" then STM32W will enter in
       bootloader mode; if PA5 is "high" it will execute the program in flash.

       As example, supposing GPIO_3 connected to PA5 and GPIO_2 to STM32W's reset.  The command:
              stm32flash -R -i -3,-2,2:3,-2,2 /dev/ttyS0
       provides:
       • entry sequence: GPIO_3=low, GPIO_2=low, GPIO_2=high
       • exit sequence: GPIO_3=high, GPIO_2=low, GPIO_2=high

EXAMPLES

       Get device information:
              stm32flash /dev/ttyS0

       Write with verify and then start execution:
              stm32flash -w filename -v -g 0x0 /dev/ttyS0

       Read flash to file:
              stm32flash -r filename /dev/ttyS0

       Start execution:
              stm32flash -g 0x0 /dev/ttyS0

       Specify:
       • entry sequence: RTS=low, DTR=low, DTR=high
       • exit sequence: RTS=high, DTR=low, DTR=high
              stm32flash -R -i -rts,-dtr,dtr:rts,-dtr,dtr /dev/ttyS0

FORMAT CONVERSION

       Flash images provided by ST or created with  ST  tools  are  often  in  file  format  Motorola  S-Record.
       Conversion  between  raw  binary,  intel  hex  and Motorola S-Record can be done through software package
       SRecord.

AUTHORS

       The original software package stm32flash is written by Geoffrey McRae <geoff@spacevs.com>  and  is  since
       2012 maintained by Tormod Volden <debian.tormod@gmail.com>.

       Man page and extension to STM32W and I2C are written by Antonio Borneo <borneo.antonio@gmail.com>.

       Please report any bugs at the project homepage http://stm32flash.sourceforge.net .

SEE ALSO

       srec_cat(1), srec_intel(5), srec_motorola(5).

       The  communication  protocol  used  by  ST  bootloader  is  documented in following ST application notes,
       depending on communication port.  The current version of stm32flash only supports UART and I2C ports.
       • AN3154: CAN protocol used in the STM32 bootloader
              http://www.st.com/web/en/resource/technical/document/application_note/CD00264321.pdf

       • AN3155: USART protocol used in the STM32(TM) bootloader
              http://www.st.com/web/en/resource/technical/document/application_note/CD00264342.pdf

       • AN4221: I2C protocol used in the STM32 bootloader
              http://www.st.com/web/en/resource/technical/document/application_note/DM00072315.pdf

       • AN4286: SPI protocol used in the STM32 bootloader
              http://www.st.com/web/en/resource/technical/document/application_note/DM00081379.pdf

       Boot mode selection for STM32 is documented in ST application note AN2606, available from the ST website:
       http://www.st.com/web/en/resource/technical/document/application_note/CD00167594.pdf

LICENSE

       stm32flash is distributed under GNU GENERAL PUBLIC LICENSE Version 2.  Copy of the license  is  available
       within the source code in the file gpl-2.0.txt.