Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
STM32FLASH(1)			  User command			   STM32FLASH(1)

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, charac-
	    ter  size, parity and stop bits.  The only values currently used are
	    8e1 for standard STM32 bootloader and 8n1 for standard STM32W  boot-
	    loader.  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 CON-
	    VERSION).  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 num pages before writing the flash. Default is to
	    erase the necessary pages based on the file content size and/or  pa-
	    rameters  provided	with  the  -S option, or the whole flash if this
	    cannot be determined. 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 ini-
	    tial 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 ei-
	    ther -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 exe-
     cute either the application program in user flash or  the	bootloader,  de-
     pending 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  re-
     set  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 = [[-]signal]&|,[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.

     The  ',' delimiter adds 100 ms of delay between signal toggles, whereas the
     '&' delimiter adds no delay.  An empty signal,  thus  repeated  ','  delim-
     iters,  can  be  used to insert larger delays in multiples of 100 ms.  E.g.
     "rts,,,,-dtr" will set RTS, then wait 400 ms, then reset  DTR.   "rts&-dtr"
     will  set RTS and reset DTR without delay. You can use ',' delimiters alone
     to simply add a delay between opening port and starting to flash.

     Note that since version 0.6, an exit sequence will always	be  executed  if
     specified,  regardless  of  the -R option, to ensure the signals are reset.
     If -R is specified, but no exit sequence, a software-triggered  reset  will
     be performed.

     As  an  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" fol-
     lowed 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 "-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  an  example,  suppose GPIO_3 is connected to PA5 and GPIO_2 to STM32W's
     reset.  The command:
	    stm32flash -i '-3&-2,2:3&-2,,,2' /dev/ttyS0
     provides:
     * entry sequence: GPIO_3=low, GPIO_2=low, 100 ms delay, GPIO_2=high
     * exit sequence: GPIO_3=high, GPIO_2=low, 300 ms delay, GPIO_2=high

     Another example, introducing a delay after port opening.  The command:
	    stm32flash -i ',,,,,:rts&-dtr,,,2' /dev/ttyS00,
     provides:
     * entry sequence: delay 500 ms
     * exit sequence: RTS=high, DTR=low, 300 ms delay, 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 -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 for-
     mat Motorola S-Record.  Conversion between raw binary, intel  hex	and  Mo-
     torola S-Record can be done through software package SRecord.

AUTHORS
     The  original  software package stm32flash is written by Geoffrey McRae and
     is since 2012 maintained by Tormod Volden.  See AUTHORS file in source code
     for more contributors.

     Man page and extension to STM32W and I2C are written by Antonio Borneo.

     Please report any bugs at the  project  homepage  http://stm32flash.source-
     forge.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/applica-
	    tion_note/CD00264321.pdf

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

     * AN4221: I2C protocol used in the STM32 bootloader
	    http://www.st.com/web/en/resource/technical/document/applica-
	    tion_note/DM00072315.pdf

     * AN4286: SPI protocol used in the STM32 bootloader
	    http://www.st.com/web/en/resource/technical/document/applica-
	    tion_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/applica-
     tion_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.

stm32flash			   March 2022			   STM32FLASH(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=stm32flash&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help