AN778 - UART Bootloader
AN778 - UART Bootloader
PC
Target MCU
Active Data Source Software
Target Bootloader
Firmware
Comm. Interface Device Driver / API
Target Application
UART (RS-232) UART (RS-232)
Firmware
2.1. Preparation
Unzip the AN778SW software package to a location on memory. Each example contains:
DataSource_Software — contains the PC application that communicates with the Target Bootloader and
downloads the application image.
Sample_User_Application — contains a simple example application project.
TargetBootloader — contains the UART bootloader source using the Modular Framework.
2.2. Procedure
1. Go to the TargetBootloader directory and open the UART bootloader project (F33x_UART_TargetBL or
another device project file).
2. Compile and download the bootloader code to a target board.
3. After downloading, power down the target board.
4. Run the SerialBootloaderDataSource.exe executable in the
DataSource_Software\SerialBootloaderDataSource\SerialBootloaderDataSource\bin\Release
directory.
2 Rev. 0.2
AN778
5. Choose a COM port in the application, select the application HEX file in the Sample_User_Application
directory, and click the Open COM Port button.
Rev. 0.2 3
AN778
6. Power up the target board. The bootloader will print text in red in the application display window when it’s
ready to update the application code.
4 Rev. 0.2
AN778
7. Click the Update Application Firmware button to download the selected application firmware to the target
board.
Rev. 0.2 5
AN778
3. Target Bootloader Profile
The UART target bootloader firmware allows application firmware updates in the field over UART. The UART
bootloader code builds under the Keil toolchain. The bootloader firmware is stored in address 0x0000-0x0400 and
last flash page. This means that the application firmware starts at address 0x0400 and ends one page short of the
last flash page. Figure 6 shows the UART bootloader memory map. Figure 7 shows an example code space
utilization of the bootloader grouped by functional blocks based on version 1.1 of the 'F330 bootloader firmware.
For detailed information on the latest source code size, see the Excel file in the software package accompanying
this document.
Bootloader InfoBlock
Reserved Area
(on most MCUs) Lock Byte
Bootloader FW Project Part of Bootloader Firmware
(last flash page)
Application FW Project
Bootloader Firmware
0x0400
8% Reset Vector and Interrupt Redirection
8% 23% Device‐Specific Functions
Flash Erase/Write Functions
Main program loop
5%
22% Bootloader Command Interpreter
4%
Comm Functions (UART)
Comm Functions (CRC)
6% 24%
Other(Infor block / library)
6 Rev. 0.2
AN778
3.1. Configurable Options
The target bootloader has the following parameters that can be configured. These parameters are located in two
header files as grouped in Table 1 and Table 2.
Table 1. Fxxx_Target_Config.h
Parameter Options
1
TGT_MCU_CODE Any 8-bit value
2
TGT_BL_TYPE 8-bit value: 0x01
TGT_FLASH_PAGE_SIZE3 Number of bytes per flash page: 512
TGT_FLASH_PAGE_SIZE_CODE4 8-bit value: 1
5
APP_FW_START_ADDR 16-bit value: 0x0400
APP_FW_END_ADDR6 16-bit value: 0x1BFF
Notes:
1. This can be used to identify a product line among many different products.
2. This denotes that the BL uses Silicon Labs-defined UART bootloader protocol (see Fxxx_BL129_UART_Interface.h).
3. Should be changed based on the MCU data sheet.
4. 1 means 512 bytes/page; 2 means 1024 bytes/page.
5. Starting address of App FW.
6. Ending address of App FW (includes App InfoBlock and Signature bytes). It should be changed based on the size of
Flash.
Table 2. Fxxx_TargetBL_Config.h
Parameter Options
1
TGT_BL_FW_INFOBLOCK_LENGTH 8-bit value: 19
TGT_BL_FW_VERSION_LOW and 8-bit values: 1 and 1
TGT_BL_FW_VERSION_HIGH2
TGT_BL_BUF_SIZE_CODE3 8-bit value: 0
Notes:
1. See Table 1 in application note, “AN533: Modular Bootloader Framework for Silicon Labs C8051Fxxx Microcontrollers”.
2. BL v1.1. Low = 1 and High = 1.
3. This valve determines the max packet size when the PC sends a page of data to the bootloader..
The buffer size = page_size/(1<<buffer_size_code).
Rev. 0.2 7
AN778
4. Target Application Profile
The target application firmware needs to fit within the allocated application area in flash memory. The application
firmware memory map is shown in Figure 8.
Reserved Area
(on most MCUs)
Bootloader FW Project
Application InfoBlock
Application FW Project
Application Firmware
0x0400
Application Reset Vector Set to 0x0400
Bootloader FW Project 0x0400
Redirected Interrupt Vectors
(spacing = 3 bytes)
8 Rev. 0.2
AN778
4.2. Configurable Options
The application firmware should always keep its version number updated in the Application InfoBlock whenever a
new version is built so that the application hex file includes this information. The active data source software can
interpret this information from the hex.
Table 3. F33x_InfoBlock.c
Parameter Options
TGT_APP_FW_VERSION_LOW and 8-bit values: 2 and 1
TGT_APP_FW_VERSION_HIGH1
TGT_APP_FW_INFOBLOCK_LENGTH2 8-bit value: 7
Notes:
1. App v1.2Low = 2 and High = 1.
2. See Table 5 in application note, “AN533: Modular Bootloader Framework for Silicon Labs C8051Fxxx Microcontrollers”.
INTVECTOR(0x0400) INTERVAL(3)
CODE(0x0400-0x1BFF, ?CO?F33X_INFOBLOCK(0x1BF5))
Rev. 0.2 9
Simplicity Studio
One-click access to MCU and
wireless tools, documentation,
software, source code libraries &
more. Available for Windows,
Mac and Linux!
Disclaimer
Silicon Labs intends to provide customers with the latest, accurate, and in-depth documentation of all peripherals and modules available for system and software implementers using or
intending to use the Silicon Labs products. Characterization data, available modules and peripherals, memory sizes and memory addresses refer to each specific device, and "Typical"
parameters provided can and do vary in different applications. Application examples described herein are for illustrative purposes only. Silicon Labs reserves the right to make changes
without further notice and limitation to product information, specifications, and descriptions herein, and does not give warranties as to the accuracy or completeness of the included
information. Silicon Labs shall have no liability for the consequences of use of the information supplied herein. This document does not imply or express copyright licenses granted
hereunder to design or fabricate any integrated circuits. The products are not designed or authorized to be used within any Life Support System without the specific written consent of
Silicon Labs. A "Life Support System" is any product or system intended to support or sustain life and/or health, which, if it fails, can be reasonably expected to result in significant personal
injury or death. Silicon Labs products are not designed or authorized for military applications. Silicon Labs products shall under no circumstances be used in weapons of mass
destruction including (but not limited to) nuclear, biological or chemical weapons, or missiles capable of delivering such weapons.
Trademark Information
Silicon Laboratories Inc.® , Silicon Laboratories®, Silicon Labs®, SiLabs® and the Silicon Labs logo®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®,
EFR, Ember®, Energy Micro, Energy Micro logo and combinations thereof, "the world’s most energy friendly microcontrollers", Ember®, EZLink®, EZRadio®, EZRadioPRO®,
Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY®, Telegesis, the Telegesis Logo®, USBXpress® and others are trademarks or registered trademarks of Silicon
Labs. ARM, CORTEX, Cortex-M3 and THUMB are trademarks or registered trademarks of ARM Holdings. Keil is a registered trademark of ARM Limited. All other products or brand
names mentioned herein are trademarks of their respective holders.
http://www.silabs.com