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, 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
   <[email protected]>  and  is  since  2012  maintained  by Tormod Volden
   <[email protected]>.

   Man page and extension to STM32W and I2C are written by Antonio  Borneo
   <[email protected]>.

   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.



Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.


Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.


Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.