SLUUDI8 March   2026 AM13E23019

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
    1. 1.1 Overview of BSL Features
    2. 1.2 Terminology
    3. 1.3 Additional Resources
  5. 2BSL Architecture
    1. 2.1 Design
      1. 2.1.1 Timeout Feature
        1. 2.1.1.1 Interface Autodetection
        2. 2.1.1.2 Command Reception
    2. 2.2 BSL Invocation
      1. 2.2.1 Application Request
      2. 2.2.2 GPIO Based Invocation
      3. 2.2.3 Debug Mailbox Command
      4. 2.2.4 Other BSL Invocation Methods
        1. 2.2.4.1 Pre-Boot Application Verification
        2. 2.2.4.2 Blank Device Handling
    3. 2.3 Memory
      1. 2.3.1 SRAM Memory Usage
    4. 2.4 BSL NONMAIN Configuration
      1. 2.4.1  BSL Configuration ID
      2. 2.4.2  BSL Interface Pins (BLINTERFACE_PINS)
      3. 2.4.3  BSL Invoke Pin Configuration (BSLPIN_INVOKE)
      4. 2.4.4  Memory Readout Configuration
      5. 2.4.5  BSL Password
      6. 2.4.6  Application Revision Pointer
      7. 2.4.7  Security Alert Level
      8. 2.4.8  UART Baud Rate
      9. 2.4.9  I2C Target Address
      10. 2.4.10 Configuration CRC
    5. 2.5 Changing BSL Configuration
      1. 2.5.1 Using BSL Commands
      2. 2.5.2 Using Debug Interface
  6. 3Bootloader Protocol
    1. 3.1 Packet Format
    2. 3.2 BSL Protocol
      1. 3.2.1 BSL Acknowledgment
      2. 3.2.2 Peripheral Configuration
        1. 3.2.2.1 UART
        2. 3.2.2.2 I2C
        3. 3.2.2.3 MCAN
        4. 3.2.2.4 CRC
    3. 3.3 Bootloader Core Commands
      1. 3.3.1  Connection
      2. 3.3.2  Get Device Info
      3. 3.3.3  Unlock Bootloader
      4. 3.3.4  Program Data
      5. 3.3.5  Program Data Fast
      6. 3.3.6  Readback Data
      7. 3.3.7  Flash Range Erase
      8. 3.3.8  Mass Erase
      9. 3.3.9  Factory Reset
      10. 3.3.10 Standalone Verification
      11. 3.3.11 Start Application
      12. 3.3.12 Change Baud Rate
    4. 3.4 Bootloader Core Response
      1. 3.4.1 BSL Core Message
      2. 3.4.2 Detailed Error
      3. 3.4.3 Memory Readback
      4. 3.4.4 Device Info
      5. 3.4.5 Standalone Verification
    5. 3.5 Bootloader Security
      1. 3.5.1 Password Protected Commands
        1. 3.5.1.1 Security Alert
      2. 3.5.2 BSL Entry
  7. 4Sample Program Flow with Bootloader
  8. 5Revision History

Using BSL Commands

Prerequisites:

Factory Reset must be enabled in BCR configuration (either "Enabled" or "Enabled with Password")

Procedure:

  1. Invoke the bootloader using one of the supported invocation methods (GPIO, Application request, or DSSM)
  2. Establish connection using the Connection command (CMD_CONNECTION, 0x12)
  3. Unlock the BSL using the Unlock Bootloader command (CMD_UNLOCK_BSL, 0x21) with the current password
  4. Execute Factory Reset command (CMD_FACTORY_RESET, 0x30) to erase the NONMAIN flash configuration
    1. This erases both MAIN flash (application memory) and NONMAIN flash (configuration memory)
    2. Provide the factory with a reset password if BCR configuration requires it (default: all 0xFF)
    3. After factory reset, the BSL password reverts to default (hash of all 0xFF)
  5. Prepare the new BSL configuration structure and calculate CRC32 for the BSL configuration:
    1. Calculate CRC32-ISO3309 over the entire configuration structure (excluding the CRC field itself)
    2. Use bit-reversed configuration with initial seed 0xFFFFFFFF
    3. Configuration structure size: 76 bytes (from 0x60100C00 to 0x60100C4B)
    4. Store the calculated CRC32 value in the CRC field (0x60100C4C)
  6. Program the new BSL configuration to NONMAIN flash using the Program Data command (CMD_PROGRAM_DATA, 0x20):
    1. Start Address: 0x60100C00
    2. Data: Complete BSL configuration structure (80 bytes total, including CRC)
    3. Confirm the data is 16-byte aligned as required by the Program Data command
  7. Reset the device to apply the new configuration

Note:
  • The CRC field must be recalculated whenever any configuration field is modified
  • An incorrect CRC results in catastrophic error and permanent device lockout
  • If Factory Reset is not enabled in BCR configuration, NONMAIN flash programming fails
  • Confirm the entire configuration structure is programmed, not just individual fields