The Boot interface integrates support for the bootloader into the framework.
- Author
- STMicroelectronics - ST-Korea - MCD Team
- Version
- 3.0.0
- Date
- Nov 21, 2017
This interface is implemented by applications that need to jump to another application during the startup sequence. The typical example is a bootloader. The IBoot interface is used by the system during the startup before the scheduler is running (this means that there is not INIT task yet). The algorithm is displayed in Fig. 16.
Fig.16 - Boot IF
The system reset all peripherals and it initializes the minimum set of resources (like the clock three). At this point if the SysInit() has been called with the parameter TRUE
the system uses the SysGetBootIF() in order to obtain a pointer to an application object that implement the IBoot interface. Then the system initialize the Boot IF by calling the IBootInit() function. The the system check if the DFU trigger condition - IBootCheckDFUTrigger(). If it it is FALSE
then the system prepare the jump to the application. First it retrieves the jump address by calling the IBootGetAppAdderss() function. Then it uses the IBootOnJampToApp() in order to perform some other tasks before the jump. Finally the system check if the application address is valid and make the jump.
In order to optimize the memory footprint of the framework the IBoot interface can be disabled by the linker with the following definition:
#define INIT_TASK_CFG_ENABLE_BOOT_IF 0
It can be added in the sysconfig.h file.
- Attention
Copyright (c) 2017 STMicroelectronics. All rights reserved.
This software is licensed under terms that can be found in the LICENSE file in the root directory of this software component. If no LICENSE file comes with this software, it is provided AS-IS.