SWRU622A August 2024 – September 2024 AWRL1432 , AWRL6432 , IWRL1432 , IWRL6432 , IWRL6432AOP
Booting an application from SFLASH is usually done by the ROM Bootloader (RBL). The RBL looks through SFLASH, and upon reading a valid image header, load that image into RAM and start the application. However, a limitation of the RBL is that it is only able to boot one application, and provides no flexibility in changing that application as it is not configurable without modifying SOP settings on the board. Any changes that need to be made to the application require the device to be set to flashing mode to load a new application to SFLASH, and then back to functional mode to restart the boot process. The secondary bootloader, which is discussed in this section, provides the added flexibility that makes binary updates much simpler and provides the user more control and flexibility in what gets loaded and how it is loaded.
The secondary bootloader(SBL) is a tool that allows "over-the-air" binary updates to SFLASH via serial interface and subsequently execute the new application. This allows for modifications to the binaries in SFLASH without having to switch SOP modes. It also allows the user to flash multiple images: 1 main application image and 1 back-up image in case the main image fails to load. The main image is directly loaded into SFLASH via UART by the SBL application, and then boots the application. However, the SBL can be modified to use other interfaces like SPI, CAN, and LIN.
The SBL differs from the RBL in that it only focuses on booting the device with the application code rather than also initializing the device. It also can load images in multiple partitions of SFLASH, while the RBL loads the image in the first partition with a valid image. The SBL is also configurable since it is an application loaded by the RBL from FLASH as opposed to being ROM'ed on the device like the RBL. Some limitations of the SBL example in the SDK include no support for image authentication and adds complexity for systems with no host control. However, the SBL source code is available in the SDK and can be modified by the users to address these limitations and add features such as encryption to satisfy the use-case.