Updating firmware in STM32L1xx microcontrollers through
in-application programming using the USART
Introduction
An important requirement for most Flash-memory-based systems is the ability to update the
firmware when installed in the end product. This ability is referred to as in-application
programming (IAP). The purpose of this application note is to provide general guidelines for
creating an IAP application.
The STM32L1xx microcontroller can run user-specific firmware to perform IAP of the
microcontroller-embedded Flash memory. This feature allows the use of any type of
communication protocol for the reprogramming process. The USART is the example used in
this application note.
Ultra low power medium-density devices are STM32L151xx and STM32L152xx
microcontrollers where the Flash memory density ranges between 64 and 128 Kbytes. Ultra
low power medium-density devices are implemented in the STMicroelectronics
STM32L152-EVAL evaluation board.
Ultra low power medium-density plus devices are STM32L151xx, STM32L152xx and
STM32L162xx microcontrollers where the Flash memory density is 256 Kbytes.
Ultra low power high-density devices are STM32L151xx, STM32L152xx and STM32L162xx
microcontrollers where the Flash memory density is 384 Kbytes. Ultra low power highdensity devices are implemented in the STMicroelectronics STM32L152D-EVAL evaluation
board.
1.1 Principle
You should program the IAP driver to the Flash memory base address via the JTAG/SWD
interface using the development toolchain of your choice or the factory-embedded boot
loader in the System memory area.
The IAP driver uses the USART to:
●Download a binary file from the HyperTerminal to the STM32L1xx's internal Flash
memory.
●Upload the STM32L1xx's internal Flash memory content (starting from the defined user
application address) into a binary file.
●Execute the user program.
1.2 IAP driver description
The IAP driver contains the following set of source files:
●main.c: where the USART initialization and RCC configuration are set. A main menu is
then executed from the menu.c file.
●menu.c: contains the main menu routine. The main menu gives the options of
downloading a new binary file, uploading internal Flash memory, executing the binary
file already loaded and disabling the write protection of the pages where the user loads
his/her binary file (if they are write-protected).
●flash_if.c: contains write, erase and disable write protection of the internal Flash
memory.
●common.c: contains functions related to read/write from/to the USART peripheral.
●ymodem.c: is used to receive/send the data from/to the HyperTerminal application
using the YMODEM protocol
“Failed to receive the file” error message is displayed. If the data is received
(a)
. In the event of a failure when receiving the data, the
a. The Ymodem protocol sends data in 1024-byte blocks. An error check is performed in data blocks transmitted
to the STM32L1xx’s internal RAM to compare the transmitted and received data. Blocks unsuccessfully
received are acknowledged with an NAK (Negative Acknowledgement). For more details about the Ymodem
protocol, refer to existing documentation.
Doc ID 18201 Rev 23/19
IAP overviewAN3310
successfully, it is programmed into the internal Flash memory from the appropriate
address. A comparison between internal RAM contents and internal Flash memory
contents is performed to check the data integrity. If there is any data discrepancy, the
“Verification failed” error message is displayed. Other error messages are also
displayed when the image file size is greater than the allowed memory space and when
the user aborts the task.
●STM32L1xx Standard Peripherals Library.
The user can choose to either go to the user application or execute the IAP for
reprogramming purposes by pressing a push-button connected to a pin.
●Not pressing the push-button at reset switches to the user application
●Pressing the push-button at reset displays the IAP main menu
Refer to Table 1. STM32L1xx IAP implementation for more details about the STM32L15xx-
EVAL board push-button used to enter the IAP mode.
The IAP flowchart is shown in Figure 1: Flowchart of the IAP driver.
4/19Doc ID 18201 Rev 2
AN3310IAP overview
No
Yes
Download
Receive a binary file
Success
Yes
Program the Flash
Launch option
byte loading
All data programmed
successfully?
No
Display the name
and size of
Yes
Display the error message
"Verification failed"
Display the error
message "Failed to
receive the file"
Initialize USART
Push-button
is pressed?
Start
Display the IAP main menu
MS19702V1
No
Switch to
user
Switch to
user program
User
application
software
Disable the
write protection
Flash
protection
Upload
Transmit image
of the device internal Flash
Success
Display the error message
"Error occured..."
received file
No
Yes
program
Download, upload,
switch or disable
write-protection
Figure 1.Flowchart of the IAP driver
Doc ID 18201 Rev 25/19
Running the IAP driverAN3310
2 Running the IAP driver
For ultra low power medium-density and medium-density plus devices, the IAP driver is
programmed in the Flash memory from Page 0 to Page 47 and the user application
occupies the remaining memory space.
For ultra low power high-density devices, the Flash memory implements the dual bank
feature (Refer to Chapter 9: Dual bank feature for high-density devices).
The IAP driver can be programmed in Bank1 (from Page 0 to Page 47) and the user
application occupies the rest of Flash memory or Bank2.
The IAP driver can be programmed in Bank2 (from Page 768 to Page 814) and the user
application occupies the rest of Bank2 or Bank1.
2.1 HyperTerminal configuration
To use the IAP, the user must have a PC running HyperTerminal or other Terminal program
that supports ymodem protocol. In this document, the HyperTerminal is used. The
following figure shows the HyperTerminal configuration.
Figure 2.COM port properties
Note:The baud rate value of 115,200 bps is used as an example.
Care must be taken when selecting the system clock frequency. To guarantee successful
communication via the USART, the system clock frequency in the end application must be
such that a baud rate equal to 115,200 bps can be generated.
6/19Doc ID 18201 Rev 2
Loading...
+ 13 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.