STMicroelectronics STM32L0 series, STM32L1 series, STM32F0 series, STM32F1 series, STM32F2 series, STM32F3 series, STM32F4 series microcontroller Application note
Below you will find brief information for microcontroller STM32L0 series, microcontroller STM32L1 series, microcontroller STM32F0 series, microcontroller STM32F1 series, microcontroller STM32F2 series. This document illustrates a protocol for the communication between the host system and the bootloader of STM32 microcontrollers via Universal Synchronous Asynchronous Receiver Transmitter (USART). Each supported command is detailed.
PDF
Download
Document
Advertisement
Advertisement
AN3155 Application note USART protocol used in the STM32 bootloader Introduction This application note describes the USART protocol used in the STM32 microcontroller bootloader. It details each supported command. For more information about the USART hardware resources and requirements for your device bootloader, please refer to the “STM32 system memory boot mode” application note (AN2606). Refer to Table 1 for the list of applicable microcontrollers. Related documents They are available from www.st.com: • Application note “STM32 system memory boot mode” (AN2606) Table 1. Applicable products Type Part number or product series STM32L0 series STM32L1 series STM32F0 series Microcontrollers STM32F1 series STM32F2 series STM32F3 series STM32F4 series June 2014 DocID17066 Rev 6 1/37 www.st.com Contents AN3155 Contents 1 USART bootloader code sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2 Choosing the USARTx baud rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3 2.1 Minimum baud rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2 Maximum baud rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Bootloader command set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.1 Get command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 Get Version & Read Protection Status command . . . . . . . . . . . . . . . . . . . 10 3.3 Get ID command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 3.4 Read Memory command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.5 Go command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.6 Write Memory command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.7 Erase Memory command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.8 Extended Erase Memory command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.9 Write Protect command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.10 Write Unprotect command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.11 Readout Protect command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.12 Readout Unprotect command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4 Bootloader protocol version evolution . . . . . . . . . . . . . . . . . . . . . . . . . 35 5 Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2/37 DocID17066 Rev 6 AN3155 List of tables List of tables Table 1. Table 2. Table 3. Table 4. Applicable products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 USART bootloader commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Bootloader protocol versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Document revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 DocID17066 Rev 6 3/37 List of figures AN3155 List of figures Figure 1. Figure 2. Figure 3. Figure 4. Figure 5. Figure 6. Figure 7. Figure 8. Figure 9. Figure 10. Figure 11. Figure 12. Figure 13. Figure 14. Figure 15. Figure 16. Figure 17. Figure 18. Figure 19. Figure 20. Figure 21. Figure 22. Figure 23. Figure 24. Figure 25. 4/37 Bootloader for STM32 with USART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Get command: host side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Get command: device side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Get Version & Read Protection Status command: host side . . . . . . . . . . . . . . . . . . . . . . . 10 Get Version & Read Protection Status command: device side. . . . . . . . . . . . . . . . . . . . . . 11 Get ID command: host side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Get ID command: device side. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Read Memory command: host side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Read Memory command: device side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Go command: host side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Go command: device side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Write Memory command: host side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Write Memory command: device side. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Erase Memory command: host side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Erase Memory command: device side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Extended Erase Memory command: host side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Extended Erase Memory command: device side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Write Protect command: host side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Write Protect command: device side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Write Unprotect command: host side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Write Unprotect command: device side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Readout Protect command: host side. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Readout Protect command: device side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Readout Unprotect command: host side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Readout Unprotect command: device side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 DocID17066 Rev 6 AN3155 1 USART bootloader code sequence USART bootloader code sequence Figure 1. Bootloader for STM32 with USART X&RECEIVEDON 53!24X2XPIN 53!24XSELECTED !UTOBAUDRATESEQUENCE SEND!#+BYTEDISABLE UNUSEDPERIPHERALS 7AITFORA COMMAND #OMMAND RECEIVED '%4CMD '%4CMD ROUTINE 2$CMD ROUTINE OPTIONAL 2OUTINESFOR LOADING INTO2!- '/CMD '/CMD ROUTINE *0TO?!DDRESS AI Once the system memory boot mode is entered and the STM32 microcontroller has been configured (for more details refer to application note AN2606 “STM32 system memory boot mode”) the bootloader code begins to scan the USARTx_RX line pin, waiting to receive the 0x7F data frame: one start bit, 0x7F data bits, even parity bit and one stop bit. The duration of this data frame is measured using the Systick timer. The count value of the timer is then used to calculate the corresponding baud rate factor with respect to the current system clock. Next, the code initializes the serial interface accordingly. Using this calculated baud rate, an acknowledge byte (0x79) is returned to the host, which signals that the STM32 is ready to receive commands. DocID17066 Rev 6 5/37 Choosing the USARTx baud rate 2 AN3155 Choosing the USARTx baud rate The calculation of the serial baud rate for USARTx, from the length of the first byte that is received, is used to operate the bootloader within a wide range of baud rates. However, the upper and lower limits have to be kept, in order to ensure proper data transfer. For a correct data transfer from the host to the microcontroller, the maximum deviation between the internal initialized baud rate for USARTx and the real baud rate of the host should be below 2.5%. The deviation (fB, in percent) between the host baud rate and the microcontroller baud rate can be calculated using the formula below: baud rate – Host baud rate f B = STM32 ------------------------------------------------------------------------------------------- × 100% STM32 baud rate , where fB ≤ 2.5%. This baud rate deviation is a nonlinear function depending on the CPU clock and the baud rate of the host. The maximum of the function (fB) increases with the host baud rate. This is due to the smaller baud rate prescale factors, and the implied higher quantization error. 2.1 Minimum baud rate The lowest tested baud rate (BLow) is 1200. Baud rates below BLow would cause the SysTick timer to overflow. In this event, USARTx would not be correctly initialized. 2.2 Maximum baud rate BHigh is the highest baud rate for which the deviation still does not exceed the limit. All baud rates between BLow and BHigh are below the deviation limit. The highest tested baud rate (BHigh) is 115 200. 6/37 DocID17066 Rev 6 AN3155 3 Bootloader command set Bootloader command set The supported commands are listed in Table 2 below. Each command is further described in this section. Table 2. USART bootloader commands Command(1) Command code Command description Get(2) 0x00 Gets the version and the allowed commands supported by the current version of the bootloader Get Version & Read Protection Status(2) 0x01 Gets the bootloader version and the Read Protection status of the Flash memory Get ID(2) 0x02 Gets the chip ID Read Memory(3) 0x11 Reads up to 256 bytes of memory starting from an address specified by the application Go(3) 0x21 Jumps to user application code located in the internal Flash memory or in SRAM Write Memory(3) 0x31 Writes up to 256 bytes to the RAM or Flash memory starting from an address specified by the application Erase(3)(4) 0x43 Erases from one to all the Flash memory pages Extended Erase(3)(4) 0x44 Erases from one to all the Flash memory pages using two byte addressing mode (available only for v3.0 usart bootloader versions and above). Write Protect 0x63 Enables the write protection for some sectors Write Unprotect 0x73 Disables the write protection for all Flash memory sectors Readout Protect 0x82 Enables the read protection 0x92 Disables the read protection Readout Unprotect(2) 1. If a denied command is received or an error occurs during the command execution, the bootloader sends NACK byte and goes back to command checking. 2. Read protection – When the RDP (read protection) option is active, only this limited subset of commands is available. All other commands are NACKed and have no effect on the device. Once the RDP has been removed, the other commands become active. 3. Refer to STM32 product datasheets and to the “STM32 microcontroller system memory boot mode” application note (AN2606) to know which memory areas are valid for these commands. 4. Erase (x043) and Extended Erase (0x44) are exclusive. A device may support either the Erase command or the Extended Erase command but not both. Communication safety All communications from the programming tool (PC) to the device are verified by: 1. checksum: received blocks of data bytes are XORed. A byte containing the computed XOR of all previous bytes is added to the end of each communication (checksum byte). By XORing all received bytes, data + checksum, the result at the end of the packet must be 0x00 2. for each command the host sends a byte and its complement (XOR = 0x00) 3. UART: parity check active (even parity) DocID17066 Rev 6 7/37 Bootloader command set AN3155 Each packet is either accepted (ACK answer) or discarded (NACK answer): 3.1 • ACK = 0x79 • NACK = 0x1F Get command The Get command allows you to get the version of the bootloader and the supported commands. When the bootloader receives the Get command, it transmits the bootloader version and the supported command codes to the host, as described in Figure 2. Figure 2. Get command: host side 6WDUW*HW 6HQG[[)) :DLWIRU$&. RU1$&. 1$&. $&. 5HFHLYHWKHQXPEHURIE\WHV YHUVLRQFRPPDQGV 5HFHLYHWKHERRWORDGHUYHUVLRQ 5HFHLYHWKHVXSSRUWHGFRPPDQGV :DLWIRU$&. RU1$&. 1$&. $&. (QGRI*HW DL 8/37 DocID17066 Rev 6 AN3155 Bootloader command set Figure 3. Get command: device side 6WDUW*HW 5HFHLYHG E\WH [[))" 1R 6HQG1$&.E\WH <HV 6HQG$&.E\WH 6HQGWKHQXPEHURIE\WHV YHUVLRQFRPPDQGV 6HQGWKHERRWORDGHUYHUVLRQ 6HQGWKHVXSSRUWHGFRPPDQGV 6HQG$&.E\WH (QGRI*HW DL The STM32 sends the bytes as follows: Byte 1: ACK Byte 2: N = 11 = the number of bytes to follow – 1 except current and ACKs. Byte 3: Bootloader version (0 < Version < 255), example: 0x10 = Version 1.0 Byte 4: 0x00 – Get command Byte 5: 0x01 – Get Version and Read Protection Status Byte 6: 0x02 – Get ID Byte 7: 0x11 – Read Memory command Byte 8: 0x21 – Go command Byte 9: 0x31 – Write Memory command Byte 10: 0x43 or 0x44 – Erase command or Extended Erase command (these commands are exlusive) Byte 11: 0x63 – Write Protect command Byte 12: 0x73 – Write Unprotect command DocID17066 Rev 6 9/37 Bootloader command set AN3155 Byte 13: 0x82 – Readout Protect command Byte 14: 0x92 – Readout Unprotect command Last byte (15): ACK 3.2 Get Version & Read Protection Status command The Get Version & Read Protection Status command is used to get the bootloader version and the read protection status. When the bootloader receives the command, it transmits the information described below (version, read protection: number of times it was enabled and disabled) to the host. Figure 4. Get Version & Read Protection Status command: host side 6WDUW*,' 6HQG[[)' :DLWIRU$&. RU1$&. 1$&. $&. 5HFHLYH1 QXPEHURIE\WHV± 5HFHLYH3,' :DLWIRU$&. RU1$&. 1$&. $&. (QGRI*,' DL 1. GV = Get Version & Read Protection Status. 10/37 DocID17066 Rev 6 AN3155 Bootloader command set Figure 5. Get Version & Read Protection Status command: device side 6WDUW*9 5HFHLYHG E\WH [[)(" 1R 6HQG1$&.E\WH <HV 6HQG$&.E\WH 6HQGWKHERRWORDGHUYHUVLRQ 2SWLRQE\WH 2SWLRQE\WH 6HQG$&.E\WH (QGRI*9 069 1. GV = Get Version & Read Protection Status. The STM32 sends the bytes as follows: 3.3 Byte 1: ACK Byte 2: Bootloader version (0 < Version ≤ 255), example: 0x10 = Version 1.0 Byte 3: Option byte 1: 0x00 to keep the compatibility with generic bootloader protocol Byte 4: Option byte 2: 0x00 to keep the compatibility with generic bootloader protocol Byte 5: ACK Get ID command The Get ID command is used to get the version of the chip ID (identification). When the bootloader receives the command, it transmits the product ID to the host. The STM32 device sends the bytes as follows: Byte 1: ACK DocID17066 Rev 6 11/37 Bootloader command set Byte 2: AN3155 N = the number of bytes – 1 (N = 1 for STM32), except for current byte and ACKs. Bytes 3-4: PID(1) byte 3 = 0x04, byte 4 = 0xXX Byte 5: ACK 1. PID stands for product ID. Byte 1 is the MSB and byte 2, the LSB of the ID. Figure 6. Get ID command: host side 6WDUW*,' 6HQG[[)' :DLWIRU$&. RU1$&. 1$&. $&. 5HFHLYH1 QXPEHURIE\WHV± 5HFHLYH3,' :DLWIRU$&. RU1$&. 1$&. $&. (QGRI*,' DL 1. GID = Get ID. 12/37 DocID17066 Rev 6 AN3155 Bootloader command set Figure 7. Get ID command: device side 3TART')$ 2ECEIVED BYTEXX&$ .O 3END.!#+BYTE 9ES 3END!#+BYTE 3END.NUMBEROFBYTESn 3ENDPRODUCT)$ 3END!#+BYTE %NDOF')$ AI 1. GID = Get ID. 3.4 Read Memory command The Read Memory command is used to read data from any valid memory address (see note) in RAM, Flash memory and the information block (System memory or option byte areas). Note: Refer to STM32 product datasheets and to the “STM32 microcontroller system memory boot mode” application note (AN2606) for more details about the valid memory addresses for the device you are using. When the bootloader receives the Read Memory command, it transmits the ACK byte to the application. After the transmission of the ACK byte, the bootloader waits for an address (4 bytes, byte 1 is the address MSB and byte 4 is the LSB) and a checksum byte, then it checks the received address. If the address is valid and the checksum is correct, the bootloader transmits an ACK byte, otherwise it transmits a NACK byte and aborts the command. When the address is valid and the checksum is correct, the bootloader waits for the number of bytes to be transmitted – 1 (N bytes) and for its complemented byte (checksum). If the checksum is correct it then transmits the needed data ((N + 1) bytes) to the application, starting from the received address. If the checksum is not correct, it sends a NACK before aborting the command. The host sends bytes to the STM32 as follows: Bytes 1-2: 0x11+0xEE Wait for ACK Bytes 3 to 6: start address DocID17066 Rev 6 13/37 Bootloader command set Byte 7: AN3155 • byte 3: MSB • byte 6: LSB Checksum: XOR (byte 3, byte 4, byte 5, byte 6) Wait for ACK Byte 8: The number of bytes to be read – 1 (0 < N ≤ 255); Byte 9: Checksum: XOR byte 8 (complement of byte 8) Figure 8. Read Memory command: host side 6WDUW50 6HQG[[(( :DLWIRU$&. RU1$&. 1$&. $&. 6HQGWKHVWDUWDGGUHVVE\WHVZLWK FKHFNVXP :DLWIRU$&. RU1$&. 1$&. $&. 6HQGWKHQXPEHURIE\WHVWREHUHDGE\WH DQGDFKHFNVXPE\WH :DLWIRU$&. RU1$&. 1$&. $&. 5HFHLYHGDWDIURPWKH%/ (QGRI50 DL 1. RM = Read Memory. Note: 14/37 Some products may return two NACKs instead of one single NACK when Read Protection (RDP) is active (or Read Potection level 1 is active). To know if a given product returns one DocID17066 Rev 6 AN3155 Bootloader command set single NACK or two NACKs in this situation, please refer to the known limitations section relative to that product in AN2606. Figure 9. Read Memory command: device side 3TART2- 2ECEIVEDBYTE XX%% .O 9ES 2$0ACTIVE 9ES .O 3END!#+BYTE 2ECEIVETHESTARTADDRESSBYTES WITHCHECKSUM !DDRESSVALID CHECKSUM/+ .O 9ES 3END!#+BYTE 2ECEIVETHENUMBEROFBYTESTOBEREADBYTE ANDACHECKSUMBYTE #HECKSUM/+ .O 9ES 3END!#+BYTE 3END.!#+BYTE 3ENDDATATOTHEHOST %NDOF2- AIB 1. RM = Read Memory. DocID17066 Rev 6 15/37 Bootloader command set 3.5 AN3155 Go command The Go command is used to execute the downloaded code or any other code by branching to an address specified by the application. When the bootloader receives the Go command, it transmits the ACK byte to the application. After the transmission of the ACK byte, the bootloader waits for an address (4 bytes, byte 1 is the address MSB and byte 4 is LSB) and a checksum byte, then it checks the received address. If the address is valid and the checksum is correct, the bootloader transmits an ACK byte, otherwise it transmits a NACK byte and aborts the command. When the address is valid and the checksum is correct, the bootloader firmware performs the following: • it initializes the registers of the peripherals used by the bootloader to their default reset values • it initializes the user application’s main stack pointer • it jumps to the memory location programmed in the received ‘address + 4’ (which corresponds to the address of the application’s reset handler). For example if the received address is 0x0800 0000, the bootloader will jump to the memory location programmed at address 0x0800 0004. In general, the host should send the base address where the application to jump to is programmed Figure 10. Go command: host side 6WDUW*R 6HQG[['( :DLWIRU$&. RU1$&. 1$&. $&. 6HQGWKH6WDUW$GGUHVV E\WHVFKHFNVXP :DLWIRU$&. RU1$&. 1$&. $&. (QGRI*R DLG Note: 16/37 Valid addresses for the Go command are in RAM or Flash memory (refer to STM32 product datasheets and to the “STM32 microcontroller system memory boot mode” application note - AN2606 for more details about the valid memory addresses for the device you are using). DocID17066 Rev 6 AN3155 Bootloader command set All other addresses are considered not valid and are NACKed by the device. When an application is loaded into RAM and then a jump is made to it, the program must be configured to run with an offset to avoid overlapping with the first RAM memory used by the bootloader firmware (refer to STM32 product datasheets and to the “STM32 microcontroller system memory boot mode” application note - AN2606 for more details about the RAM offset for the device you are using). The Jump to the application works only if the user application sets the vector table correctly to point to the application address. Some products may return two NACKs instead of one single NACK when Read Protection (RDP) is active (or Read Potection level 1 is active). To know if a given product returns one single NACK or two NACKs in this situation, please refer to the known limitations section relative to that product in AN2606. Figure 11. Go command: device side 6WDUW*R 1R 5HFHLYHGE\WHV [['(" <HV 5'3DFWLYH <HV 1R 6HQG$&.E\WH 5HFHLYHWKHVWDUWDGGUHVVE\WHV FKHFNVXP $GGUHVVYDOLG FKHFNVXP2." 1R 6HQG1$&.E\WH 6HQG$&.E\WH (QGRI*R -XPSWRXVHUDSSOLFDWLRQ DLG DocID17066 Rev 6 17/37 Bootloader command set AN3155 The host sends bytes as follow to the STM32: Byte 1: 0x21 Byte 2: 0xDE Wait for ACK Byte 3 to byte 6: start address byte 3: MSB byte 6: LSB Byte 7: 3.6 checksum: XOR (byte 3, byte 4, byte 5, byte 6) Write Memory command The Write Memory command is used to write data to any valid memory address (see note below) i.e. RAM, Flash memory, option byte area... When the bootloader receives the Write Memory command, it transmits the ACK byte to the application. After the transmission of the ACK byte, the bootloader waits for an address (4 bytes, byte 1 is the address MSB and byte 4 is the LSB) and a checksum byte, it then checks the received address. For the Option byte area, the start address must be the base address of the Option byte area (see note) to avoid writing inopportunely in this area. If the received address is valid and the checksum is correct, the bootloader transmits an ACK byte, otherwise it transmits a NACK byte and aborts the command. When the address is valid and the checksum is correct, the bootloader: • gets a byte, N, which contains the number of data bytes to be received • receives the user data ((N + 1) bytes) and the checksum (XOR of N and of all data bytes) • programs the user data to memory starting from the received address • at the end of the command, if the write operation was successful, the bootloader transmits the ACK byte; otherwise it transmits a NACK byte to the application and aborts the command The maximum length of the block to be written for the STM32 is 256 bytes. If the Write Memory command is issued to the Option byte area, all options are erased before writing the new values, and at the end of the command the bootloader generates a system Reset to take into account the new configuration of the option byte. Note: When writing to the RAM, you should take care not to overlap the first RAM memory used by the bootloader firmware. No error is returned when performing write operations on write-protected sectors.No error is returned when the start address is invalid. 18/37 DocID17066 Rev 6 AN3155 Bootloader command set Figure 12. Write Memory command: host side 3TART7- 3ENDXX#% 7AITFOR!#+ OR.!#+ .!#+ !#+ 3ENDTHESTARTADDRESSBYTES CHECKSUM 7AITFOR!#+ OR.!#+ .!#+ !#+ 3ENDTHENUMBEROFBYTESTOBEWRITTEN BYTETHEDATA.BYTES ANDCHECKSUM 7AITFOR!#+ OR.!#+ .!#+ !#+ %NDOF7- AIB 1. WM = Write Memory. 2. N+1 should always be a multiple of 4. Note: Some products may return two NACKs instead of one single NACK when Read Protection (RDP) is active (or Read Potection level 1 is active). To know if a given product returns one single NACK or two NACKs in this situation, please refer to the known limitations section relative to that product in AN2606. DocID17066 Rev 6 19/37 Bootloader command set AN3155 Figure 13. Write Memory command: device side ^ƚĂƌƚtD;ϭͿ EŽ ZĞĐĞŝǀĞĚďLJƚĞс ϬdžϯϭнϬdž͍ zĞƐ EŽ ZWŝŶĂĐƚŝǀĞ͍ zĞƐ ^ĞŶĚ<ďLJƚĞ ZĞĐĞŝǀĞƚŚĞƐƚĂƌƚĂĚĚƌĞƐƐ;ϰďLJƚĞƐͿΘ ĐŚĞĐŬƐƵŵ EŽ ŚĞĐŬƐƵŵK<͍ zĞƐ ^ĞŶĚ<ďLJƚĞ ZĞĐĞŝǀĞƚŚĞŶƵŵďĞƌŽĨďLJƚĞƐƚŽďĞǁƌŝƚƚĞŶ ;ϭďLJƚĞͿ͕ƚŚĞĚĂƚĂ;EнϭďLJƚĞƐͿ;ϮͿĂŶĚĐŚĞĐŬƐƵŵ EŽ ŚĞĐŬƐƵŵK<͍ zĞƐ ^ƵƉƉŽƌƚĞĚ ŵĞŵŽƌLJΘŶŽƚ KƉƚŝŽŶďLJƚĞƐ͍ zĞƐ tƌŝƚĞƚŽĚĞƐƚŝŶĂƚŝŽŶŵĞŵŽƌLJ EŽ zĞƐ KƉƚŝŽŶ ďLJƚĞĂĚĚƌĞƐƐ͍ tƌŝƚĞƚŚĞ<ĞLJƐĨŽƌKƉƚŝŽŶďLJƚĞĂƌĞĂ ĂĐĐĞƐƐ tƌŝƚĞƚŚĞƌĞĐĞŝǀĞĚĚĂƚĂƚŽ KƉƚŝŽŶďLJƚĞĂƌĞĂĨƌŽŵƐƚĂƌƚĂĚĚƌĞƐƐ EŽ ^ĞŶĚ<ďLJƚĞ ^ĞŶĚ < ďLJƚĞ ^ĞŶĚ E< ďLJƚĞ 'ĞŶĞƌĂƚĞƐLJƐƚĞŵƌĞƐĞƚ ŶĚŽĨtD;ϭͿ 1. WM = Write Memory. 2. N+1 should always be a multiple of 4. 20/37 DocID17066 Rev 6 ĂŝϭϰϲϰϮĞ AN3155 Bootloader command set The host sends the bytes to the STM32 as follows: Byte 1: 0x31 Byte 2: 0xCE Wait for ACK Byte 3 to byte 6: start address byte 3: MSB byte 6: LSB Byte 7: Checksum: XOR (Byte3, Byte4, Byte5, Byte6) Wait for ACK Byte 8: Number of bytes to be received (0 < N ≤ 255) N +1 data bytes:(Max 256 bytes) Checksum byte: XOR (N, N+1 data bytes) 3.7 Erase Memory command The Erase Memory command allows the host to erase Flash memory pages. When the bootloader receives the Erase Memory command, it transmits the ACK byte to the host. After the transmission of the ACK byte, the bootloader receives one byte (number of pages to be erased), the Flash memory page codes and a checksum byte; if the checksum is correct then bootloader erases the memory and sends an ACK byte to the host, otherwise it sends a NACK byte to the host and the command is aborted. Erase Memory command specifications: Note: 1. the bootloader receives one byte that contains N, the number of pages to be erased – 1. N = 255 is reserved for global erase requests. For 0 ≤ N ≤ 254, N + 1 pages are erased. 2. the bootloader receives (N + 1) bytes, each byte containing a page number No error is returned when performing erase operations on write protected sectors. DocID17066 Rev 6 21/37 Bootloader command set AN3155 Figure 14. Erase Memory command: host side 6WDUW(5 6HQG[[%& :DLWIRU$&. RU1$&. 1$&. $&. <HV *OREDO (UDVH" 6HQG[)) 1R 6HQGWKHQXPEHURISDJHV WREHHUDVHGE\WH 6HQG[ 6HQGWKHSDJHQXPEHUV 6HQGFKHFNVXP :DLWIRU$&. RU1$&. 1$&. $&. (QGRI(5 DLE 1. ER = Erase Memory. 22/37 DocID17066 Rev 6 AN3155 Bootloader command set Figure 15. Erase Memory command: device side 3TART%2 .O 2ECEIVEDBYTES XX"# 9ES 2$0ACTIVE 9ES .O 3END!#+BYTE 2ECEIVETHENUMBEROFPAGES TOBEERASEDBYTE 9ES X&&RECEIVED .O 2ECEIVETHEPAGECODES 9ES 3TART'LOBAL%RASE -ASS%RASE .O 2ECEIVETHECHECKSUM #HECKSUM /+ .O 9ES %RASETHECORRESPONDINGPAGES 3END!#+BYTE 3END.!#+BYTE %NDOF%2 AIC 1. ER = Erase Memory. Note: After sending the erase memory command and its checksum, if the host sends 0xFF followed by data different from 0x00, the mass erase is not performed but an ACK is send by the device. The host sends bytes to the STM32 as follows: Byte 1: 0x43 Byte 2: 0xBC Wait for ACK Byte 3: 0xFF or number of pages to be erased – 1 (0 ≤ N ≤ maximum number of pages) DocID17066 Rev 6 23/37 Bootloader command set AN3155 Byte 4: 0x00 (in case of global erase) or ((N + 1 bytes (page numbers) and then checksum XOR (N, N+1 bytes)) 3.8 Extended Erase Memory command The Extended Erase Memory command allows the host to erase Flash memory pages using two bytes addressing mode. When the bootloader receives the Extended Erase Memory command, it transmits the ACK byte to the host. After the transmission of the ACK byte, the bootloader receives two bytes (number of pages to be erased), the Flash memory page codes (each one coded on two bytes, MSB first) and a checksum byte (XOR of the sent bytes); if the checksum is correct, the bootloader erases the memory and sends an ACK byte to the host. Otherwise it sends a NACK byte to the host and the command is aborted. Extended Erase Memory command specifications: 1. The bootloader receives one half-word (two bytes) that contain N, the number of pages to be erased: a) For N = 0xFFFY (where Y is from 0 to F) special erase is performed: - 0xFFFF for global mass erase - 0xFFFE for bank 1 mass erase - 0xFFFD for bank 2 mass erase - Codes from 0xFFFC to 0xFFF0 are reserved b) 2. For other values where 0 ≤ N < maximum number of pages: N + 1 pages are erased. The bootloader receives: a) In the case of a special erase, one byte: checksum of the previous bytes: - 0x00 for 0xFFFF - 0x01 for 0xFFFE - 0x02 for 0xFFFD a) Note: In the case of N+1 page erase, the bootloader receives (2 x (N + 1)) bytes, each half-word containing a page number (coded on two bytes, MSB first). Then all previous byte checksums (in one byte). No error is returned when performing erase operations on write-protected sectors. The maximum number of pages is relative to the product and thus should be respected. 24/37 DocID17066 Rev 6 AN3155 Bootloader command set Figure 16. Extended Erase Memory command: host side 6WDUW((5 6HQG[[%% :DLWIRU$&.RU1$&. 1$&. $&. <(6 6SHFLDO(UDVH" 12 6HQGWKHQXPEHURISDJHV WREHHUDVHG1RQWZR E\WHV06%ILUVW 6HQG6SHFLDO(UDVHFPG [)))) 0DVVHUDVH [)))( %DQNHUDVH [)))' %DQNHUDVH 6HQGWKHSDJHQXPEHUV HDFKRQWZRE\WHV06% ILUVW [)))WR[)))&DUHUHVHUYHG 6HQGE\WHFKHFNVXPRIDOO VHQWE\WHV1E\WHV [1E\WHV 6HQGWKHFKHFNVXPRIWKHWZR E\WHV :DLWIRU$&.RU1$&. 1$&. $&. (QGRI((5 AI 1. EER = Extended Erase Memory DocID17066 Rev 6 25/37 Bootloader command set AN3155 Figure 17. Extended Erase Memory command: device side ^ƚĂƌƚZ ZĞĐĞŝǀĞĚďLJƚĞƐсϬdžϰϰнϬdž͍ EŽ zĞƐ ZWĐƚŝǀĞ͍ zĞƐ EŽ ^ĞŶĚ<LJƚĞ ZĞĐĞŝǀĞEƵŵďĞƌŽĨWĂŐĞƐƚŽďĞ ĞƌĂƐĞĚE;ϮďLJƚĞƐͿD^ĨŝƌƐƚ zĞƐ ^ƚĂƌƚ^ƉĞĐŝĂůƌĂƐĞ͗ Ϭdž&&&&сDĂƐƐĞƌĂƐĞ Ϭdž&&&сĂŶŬϭĞƌĂƐĞ Ϭdž&&&сĂŶŬϮĞƌĂƐĞ ;Ϭdž&&&ϬƚŽϬdž&&&ĂƌĞƌĞƐĞƌǀĞĚͿ ZĞĐĞŝǀĞŚĞĐŬƐƵŵŽĨƚŚĞϮďLJƚĞƐ ;ϬdžϬϬ͕ϬdžϬϭŽƌϬdžϬϮͿ EŽ ŚĞĐŬƐƵŵŽĨϮ ďLJƚĞƐK<ĂŶĚĐŽŵŵĂŶĚ ^ƵƉƉŽƌƚĞĚ͍ Ϭdž&&&zƌĞĐĞŝǀĞĚ͍ tŚĞƌĞzĐĂŶďĞ &͕Žƌ EŽ ZĞĐĞŝǀĞƚŚĞƉĂŐĞĐŽĚĞƐ;ŽŶϮ ďLJƚĞƐĞĂĐŚ͕D^ĨŝƌƐƚͿ ZĞĐĞŝǀĞƚŚĞĐŚĞĐŬƐƵŵŽĨĂůů ƌĞĐĞŝǀĞĚďLJƚĞƐ;E;ŽŶϮ Ϯ ďLJƚĞƐͿ͕dž;EнϭͿďLJƚĞƐͿ ŚĞĐŬƐƵŵŽĨĂůů ƌĞĐĞŝǀĞĚďLJƚĞƐK< ͍ EŽ zĞƐ zĞƐ WĞƌĨŽƌŵƚŚĞ ƌĞƋƵĞƐƚĞĚĞƌĂƐĞ ^ĞŶĚE<ďLJƚĞ ƌĂƐĞƚŚĞĐŽƌƌĞƐƉŽŶĚŝŶŐƉĂŐĞƐ ^ĞŶĚ<ďLJƚĞ ^ĞŶĚE<ďLJƚĞ ŶĚŽĨZ ĂŝϭϳϰϲϭĐ 1. EER = Extended Erase Memory. 26/37 DocID17066 Rev 6 AN3155 Bootloader command set The host sends the bytes to the STM32F1xxx as follows: Byte 1: 0x44 Byte 2: 0xBB Wait for ACK Bytes 3-4: - Special erase (0xFFFF, 0xFFFE or 0xFFFD) OR - Number of pages to be erased (N+1 where: 0 ≤ N < Maximum number of pages). Remaining bytes - Checksum of Bytes 3-4 in case of special erase (0x00 if 0xFFFFor 0x01 if 0xFFFE or 0x02 if 0xFFFD). OR - (2 x (N + 1)) bytes (page numbers coded on two bytes MSB first) and then the checksum for bytes 3-4 and all the following bytes) 3.9 Write Protect command The Write Protect command is used to enable the write protection for some or all Flash memory sectors. When the bootloader receives the Write Protect command, it transmits the ACK byte to the host. After the transmission of the ACK byte, the bootloader waits for the number of bytes to be received (sectors to be protected) and then receives the Flash memory sector codes from the application. At the end of the Write Protect command, the bootloader transmits the ACK byte and generates a system Reset to take into account the new configuration of the option byte. Note: Refer to STM32 product datasheets and to the “STM32 microcontroller system memory boot mode” application note (AN2606) for more details about the sector size for the device you are using. The Write Protect command sequence is as follows: Note: • the bootloader receives one byte that contains N, the number of sectors to be writeprotected – 1 (0 ≤ N ≤ 255) • the bootloader receives (N + 1) bytes, each byte contains a sector code The total number of sectors and the sector number to be protected are not checked, this means that no error is returned when a command is passed with a wrong number of sectors to be protected or a wrong sector number. If a second Write Protect command is executed, the Flash memory sectors that had been protected by the first command become unprotected and only the sectors passed within the second Write Protect command become protected. DocID17066 Rev 6 27/37 Bootloader command set AN3155 Figure 18. Write Protect command: host side 6WDUW:3 6HQG[[& 1$&. :DLWIRU$&. RU1$&. $&. 6HQGWKHQXPEHURIVHFWRUV WREHSURWHFWHGE\WH 6HQGWKHVHFWRUFRGHV 6HQGFKHFNVXP :DLWIRU$&. RU1$&. 1$&. $&. (QGRI:3 DLE 1. WP = Write Protect. 28/37 DocID17066 Rev 6 AN3155 Bootloader command set Figure 19. Write Protect command: device side 3TART70 .O 2ECEIVEDBYTES XX# 9ES 2$0ACTIVE 9ES .O 3END!#+BYTE 2ECEIVETHENUMBEROFSECTORS TOBEPROTECTEDBYTE 2ECEIVETHESECTORCODES 2ECEIVETHECHECKSUM #HECKSUM /+ .O 9ES 7RITEPROTECTTHEREQUESTEDSECTORS 3END!#+BYTE 3END.!#+BYTE 'ENERATESYSTEMRESET %NDOF70 AIC 1. WP = Write Protect. DocID17066 Rev 6 29/37 Bootloader command set 3.10 AN3155 Write Unprotect command The Write Unprotect command is used to disable the write protection of all the Flash memory sectors. When the bootloader receives the Write Unprotect command, it transmits the ACK byte to the host. After the transmission of the ACK byte, the bootloader disables the write protection of all the Flash memory sectors. After the unprotection operation the bootloader transmits the ACK byte. At the end of the Write Unprotect command, the bootloader transmits the ACK byte and generates a system Reset to take into account the new configuration of the option byte. Figure 20. Write Unprotect command: host side 6WDUW:381 6HQG[[& :DLWIRU$&. RU1$&. 1$&. $&. :DLWIRU$&. RU1$&. 1$&. $&. (QGRI:381 DL 1. WPUN = Write Unprotect. 30/37 DocID17066 Rev 6 AN3155 Bootloader command set Figure 21. Write Unprotect command: device side 3TART705. .O 2ECEIVEDBYTES XX# 9ES 2$0ACTIVE 9ES .O 3END!#+BYTE 2EMOVETHEPROTECTIONFORTHE ENTIRE&LASHMEMORY 3END!#+BYTE 3END.!#+BYTE 'ENERATESYSTEMRESET %NDOF705. AIC 1. WPUN = Write Unprotect. 3.11 Readout Protect command The Readout Protect command is used to enable the Flash memory read protection. When the bootloader receives the Readout Protect command, it transmits the ACK byte to the host. After the transmission of the ACK byte, the bootloader enables the read protection for the Flash memory. At the end of the Readout Protect command, the bootloader transmits the ACK byte and generates a system Reset to take into account the new configuration of the option byte. DocID17066 Rev 6 31/37 Bootloader command set AN3155 Figure 22. Readout Protect command: host side 6WDUW5'3B350 6HQG[[' :DLWIRU$&. RU1$&. 1$&. $&. :DLWIRU$&. RU1$&. 1$&. $&. (QGRI5'3B350 DL 1. RDP_PRM = Readout Protect. Figure 23. Readout Protect command: device side 3TART2$0?02- .O 2ECEIVEDBYTES XX$ 9ES 2$0ACTIVE 9ES .O 3END!#+BYTE !CTIVATE2EADPROTECTIONFOR&LASH MEMORY 3END!#+BYTE 3END.!#+BYTE 'ENERATESYSTEMRESET %NDOF2$0?02- AIC 1. RDP_PRM = Readout Protect. 32/37 DocID17066 Rev 6 AN3155 3.12 Bootloader command set Readout Unprotect command The Readout Unprotect command is used to disable the Flash memory read protection. When the bootloader receives the Readout Unprotect command, it transmits the ACK byte to the host. After the transmission of the ACK byte, the bootloader erases all the Flash memory sectors and it disables the read protection for the entire Flash memory. If the erase operation is successful, the bootloader deactivates the RDP. If the erase operation is unsuccessful, the bootloader transmits a NACK and the read protection remains active. At the end of the Readout Unprotect command, the bootloader transmits an ACK and generates a system Reset to take into account the new configuration of the option byte. Note: For most STM32 products, the readout unprotect operation induce a mass erase of the flash memory, so the Host has to wait sufficient time after the second ACK and before restarting connection. To know how much time this operation takes, please refer to the mass erase time in the product datasheet (when relevant). Figure 24. Readout Unprotect command: host side 6WDUW5'8B350 6HQG[[' :DLWIRU$&. RU1$&. 1$&. $&. :DLWIRU$&. RU1$&. 1$&. $&. (QGRI5'8B350 AI 1. RDU_PRM = Readout Unprotect. DocID17066 Rev 6 33/37 Bootloader command set AN3155 Figure 25. Readout Unprotect command: device side 3TART2$5?02- 2ECEIVEDBYTES XX$ .O 9ES 3END!#+BYTE $ISABLE2$0 3END!#+BYTE #LEARALL2!-MEMORY 'ENERATESYSTEMRESET %NDOF2$5?02- 2. RDU_PRM = Readout Unprotect. 34/37 DocID17066 Rev 6 3END.!#+BYTE AIB AN3155 4 Bootloader protocol version evolution Bootloader protocol version evolution Table 3 lists the bootloader versions. Table 3. Bootloader protocol versions Version Description V2.0 Initial bootloader version. V2.1 – Update Go command to initialize the main stack pointer – Update Go command to return NACK when jump address is in the Option byte area or System memory area – Update Get ID command to return the device ID on two bytes – Update the bootloader version to V2.1 V2.2 – Update Read Memory, Write Memory and Go commands to deny access, with a NACK response, to the first bytes of RAM memory used by the bootloader – Update Readout Unprotect command to initialize the whole RAM content to 0x0 before RDP disable operation V3.0 – Extended Erase command added to support number of pages larger than 256 and separate bank mass erase. – Erase command has not been modified in this version but, due to addition of the Extended Erase command it is no longer supported (Erase and Extended Erase commands are exclusive). V3.1 – Limitation fix of: “When a Read Memory command or Write Memory command is issued with an unsupported memory address and a correct address checksum (ie. address 0x6000 0000), the command is aborted by the bootloader device, but the NACK (0x1F) is not sent to the host. As a result, the next 2 bytes (which are the number of bytes to be read/written and its checksum) are considered as a new command and its checksum.” (1) No changes in specification, the product implementation has been corrected. 1. If the “number of data - 1” (N-1) to be read/written is not equal to a valid command code (0x00, 0x01, 0x02, 0x11, 0x21, 0x31, 0x43, 0x44, 0x63, 0x73, 0x82 or 0x92), then the limitation is not perceived from the host since the command is NACKed anyway (as an unsupported new command). DocID17066 Rev 6 35/37 Revision history 5 AN3155 Revision history Table 4. Document revision history Date Revision 09-Mar-2010 1 Initial release. 2 Table 2: USART bootloader commands: added Extended Erase command; removed footnote 2 concerning read protection from the Readout Protect command. Communication safety: amended Note 1. Section 3.1: Get command: updated byte 10. Updated Figure 10: Go command: host side for missing ACK state. Section 3.7: Write Memory command: added Note 1 and Note 2. Figure 12, and Figure 13: added notes regarding N+1. Added Section 3.8: Extended Erase Memory command. Table 3: Bootloader protocol versions: added v3.0. 3 Added Note:, Note and Note:. Changed all occurences of “ROP” by “RDP” including in figures: Figure 9., Figure 11., Figure 13., Figure 15., Figure 17., Figure 19., Figure 21., Figure 23., Figure 25.. Added Table 1: Applicable products. 26-Mar-2013 4 Added Version 3.1 in Table 3: Bootloader protocol versions. Updated “byte 4” value in Section 3.3: Get ID command. Replaced “address” by “ID” in this Note 1. Replaced “End of EER” by “End of Go” in Figure 10: Go command: host side. Updated first sentence in Section 3.7: Write Memory command. Removed “& address=0x1FFF F800” and replaced the two tests “Flash memory address?” and “RAM address?” by a single test in Figure 13: Write Memory command: device side. Precised missing “Y” values in the third test of Figure 17: Extended Erase Memory command: device side. Added this Note: above Figure 24: Readout Unprotect command: host side. 22-May-2013 5 Replaced “STM32L151xx, STM32L152xx and STM32L162xx” by “STM32L1 Series” in Table 1: Applicable products. 6 Updated Table 1: Applicable products. Removed note 4 and added Note 3.in Table 2: USART bootloader commands. Removed section 3.1 Device-dependent bootloader parameters. Updated Figure 10: Go command: host side and Figure 11: Go command: device side. Updated Section 3.6: Write Memory command. 20-Apr-2010 12-Feb-2013 20-Jun-2014- 36/37 Changes DocID17066 Rev 6 AN3155 Please Read Carefully: Information in this document is provided solely in connection with ST products. STMicroelectronics NV and its subsidiaries (“ST”) reserve the right to make changes, corrections, modifications or improvements, to this document, and the products and services described herein at any time, without notice. All ST products are sold pursuant to ST’s terms and conditions of sale. Purchasers are solely responsible for the choice, selection and use of the ST products and services described herein, and ST assumes no liability whatsoever relating to the choice, selection or use of the ST products and services described herein. No license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted under this document. If any part of this document refers to any third party products or services it shall not be deemed a license grant by ST for the use of such third party products or services, or any intellectual property contained therein or considered as a warranty covering the use in any manner whatsoever of such third party products or services or any intellectual property contained therein. UNLESS OTHERWISE SET FORTH IN ST’S TERMS AND CONDITIONS OF SALE ST DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY WITH RESPECT TO THE USE AND/OR SALE OF ST PRODUCTS INCLUDING WITHOUT LIMITATION IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE (AND THEIR EQUIVALENTS UNDER THE LAWS OF ANY JURISDICTION), OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. ST PRODUCTS ARE NOT DESIGNED OR AUTHORIZED FOR USE IN: (A) SAFETY CRITICAL APPLICATIONS SUCH AS LIFE SUPPORTING, ACTIVE IMPLANTED DEVICES OR SYSTEMS WITH PRODUCT FUNCTIONAL SAFETY REQUIREMENTS; (B) AERONAUTIC APPLICATIONS; (C) AUTOMOTIVE APPLICATIONS OR ENVIRONMENTS, AND/OR (D) AEROSPACE APPLICATIONS OR ENVIRONMENTS. WHERE ST PRODUCTS ARE NOT DESIGNED FOR SUCH USE, THE PURCHASER SHALL USE PRODUCTS AT PURCHASER’S SOLE RISK, EVEN IF ST HAS BEEN INFORMED IN WRITING OF SUCH USAGE, UNLESS A PRODUCT IS EXPRESSLY DESIGNATED BY ST AS BEING INTENDED FOR “AUTOMOTIVE, AUTOMOTIVE SAFETY OR MEDICAL” INDUSTRY DOMAINS ACCORDING TO ST PRODUCT DESIGN SPECIFICATIONS. PRODUCTS FORMALLY ESCC, QML OR JAN QUALIFIED ARE DEEMED SUITABLE FOR USE IN AEROSPACE BY THE CORRESPONDING GOVERNMENTAL AGENCY. Resale of ST products with provisions different from the statements and/or technical features set forth in this document shall immediately void any warranty granted by ST for the ST product or service described herein and shall not create or extend in any manner whatsoever, any liability of ST. ST and the ST logo are trademarks or registered trademarks of ST in various countries. Information in this document supersedes and replaces all information previously supplied. The ST logo is a registered trademark of STMicroelectronics. All other names are the property of their respective owners. © 2014 STMicroelectronics - All rights reserved STMicroelectronics group of companies Australia - Belgium - Brazil - Canada - China - Czech Republic - Finland - France - Germany - Hong Kong - India - Israel - Italy - Japan Malaysia - Malta - Morocco - Philippines - Singapore - Spain - Sweden - Switzerland - United Kingdom - United States of America www.st.com DocID17066 Rev 6 37/37 ">
Advertisement
Key features
- USART protocol
- bootloader commands detail
- supported microcontrollers list
- bootloader version evolution
- communication safety
- memory operations
- write protection
- read protection
Frequently asked questions
The STM32 bootloader is a small program that resides in the internal Flash memory of the microcontroller. It allows for the programming and configuration of the microcontroller via a serial communication interface, such as USART.
The STM32 bootloader supports a wide range of commands, including Get, Get Version & Read Protection Status, Get ID, Read Memory, Go, Write Memory, Erase Memory, Extended Erase Memory, Write Protect, Write Unprotect, Readout Protect and Readout Unprotect. These commands facilitate various operations, such as reading and writing memory, erasing Flash memory, configuring protection settings, and executing application code.
You can program the STM32 microcontroller using a host system connected via a serial communication interface (e.g., USART). Send the appropriate commands to the bootloader to perform the desired operations, such as writing data to the Flash memory or executing the application code.