SWRU622A August   2024  – September 2024 AWRL1432 , AWRL6432 , IWRL1432 , IWRL6432 , IWRL6432AOP

 

  1.   1
  2.   Trademarks
  3. 1Introduction
  4. 2Basic Bootloader Flow
    1. 2.1 Programming Serial Data Flash Over UART (Bootloader Service)
    2. 2.2 Binary File Format
    3. 2.3 Flash Programming Sequence
    4. 2.4 Supported UART Commands/Response and Format
    5. 2.5 Flashing Sequence
    6. 2.6 ROM-Assisted Image Download Sequence
    7. 2.7 Booting Application Image
      1. 2.7.1 Booting From Serial Flash
      2. 2.7.2 Bootmode – SPI
      3. 2.7.3 Bootmode - UART
  5. 3Secondary Bootloader
    1. 3.1 SBL Execution Flow
      1. 3.1.1 Flash Memory Partitioning for SBL Execution
      2. 3.1.2 SBL Feature Modifications
      3. 3.1.3 SBL Development Considerations
  6. 4Warm Reset
    1. 4.1 Integrity Verification
    2. 4.2 LSTC/PBIST
    3. 4.3 Watchdog Timer
    4. 4.4 Reset-Triggered Flash Reload of Application
      1. 4.4.1 Hardware Solutions
        1. 4.4.1.1 PMIC I2C Messaging
        2. 4.4.1.2 External Watchdog Timer
        3. 4.4.1.3 External Voltage Monitoring or Voltage Supervisors
      2. 4.4.2 Software Solutions
        1. 4.4.2.1 Setting Boot Vector to 0x0
  7. 5Relevant Registers
    1. 5.1 Reset Registers
    2. 5.2 PC Registers
      1. 5.2.1 Addresses
  8. 6Revision History

Secondary Bootloader

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.