ZHCU778AB January   2014  – September 2022 MSP430FR2032 , MSP430FR2033 , MSP430FR2110 , MSP430FR2111 , MSP430FR2153 , MSP430FR2155 , MSP430FR2310 , MSP430FR2311 , MSP430FR2353 , MSP430FR2355 , MSP430FR2433 , MSP430FR2532 , MSP430FR2533 , MSP430FR2632 , MSP430FR2633 , MSP430FR4131 , MSP430FR4132 , MSP430FR4133 , MSP430FR5041 , MSP430FR5043 , MSP430FR50431 , MSP430FR5847 , MSP430FR58471 , MSP430FR5848 , MSP430FR5849 , MSP430FR5857 , MSP430FR5858 , MSP430FR5859 , MSP430FR5867 , MSP430FR58671 , MSP430FR5868 , MSP430FR5869 , MSP430FR5887 , MSP430FR5888 , MSP430FR5889 , MSP430FR58891 , MSP430FR5947 , MSP430FR59471 , MSP430FR5948 , MSP430FR5949 , MSP430FR5957 , MSP430FR5958 , MSP430FR5959 , MSP430FR5967 , MSP430FR5968 , MSP430FR5969 , MSP430FR5969-SP , MSP430FR59691 , MSP430FR5986 , MSP430FR5987 , MSP430FR5988 , MSP430FR5989 , MSP430FR5989-EP , MSP430FR59891 , MSP430FR6041 , MSP430FR6043 , MSP430FR60431 , MSP430FR6877 , MSP430FR6879 , MSP430FR68791 , MSP430FR6887 , MSP430FR6888 , MSP430FR6889 , MSP430FR68891 , MSP430FR6927 , MSP430FR69271 , MSP430FR6928 , MSP430FR6972 , MSP430FR6977 , MSP430FR6979 , MSP430FR69791 , MSP430FR6987 , MSP430FR6988 , MSP430FR6989 , MSP430FR69891

 

  1.   摘要
  2.   商标
  3. 1引言
    1. 1.1 BSL 限制
    2. 1.2 其他实用文档
  4. 2BSL 特性概览
  5. 3BSL 架构
    1. 3.1 通信接口
      1. 3.1.1 UART BSL
      2. 3.1.2 I2C BSL
    2. 3.2 BSL 存储器
      1. 3.2.1 BSL 存储器布局
      2. 3.2.2 BSL Z 区
      3. 3.2.3 BSL 存储器注意事项
    3. 3.3 调用 BSL
      1. 3.3.1 软件 BSL 调用
        1. 3.3.1.1 从外部软件应用程序启动 BSL
        2. 3.3.1.2 BSL 操作
          1. 3.3.1.2.1 BSL 操作函数 2
      2. 3.3.2 硬件 BSL 调用
        1. 3.3.2.1 阻止硬件调用 BSL 的因素
      3. 3.3.3 空白器件检测
    4. 3.4 BSL 超时特性
    5. 3.5 BSL 版本号
    6. 3.6 BSL(用户)配置
      1. 3.6.1 配置 BSL
        1. 3.6.1.1 BSL 用户配置示例
        2. 3.6.1.2 在应用程序代码中实现 BSL 配置
  6. 4BSL 协议
    1. 4.1 BSL 数据包
      1. 4.1.1 UART 外设接口包装器
      2. 4.1.2 I2C 外设接口包装器
      3. 4.1.3 BSL 确认
      4. 4.1.4 BSL 内核响应和 BSL 内核消息
      5. 4.1.5 BSL 内核命令
        1. 4.1.5.1 RX 数据块
        2. 4.1.5.2 RX 密码
        3. 4.1.5.3 批量擦除
        4. 4.1.5.4 CRC 校验
        5. 4.1.5.5 加载 PC
        6. 4.1.5.6 TX 数据块
        7. 4.1.5.7 TX BSL 版本
        8. 4.1.5.8 RX 数据块快速模式
        9. 4.1.5.9 更改波特率
    2. 4.2 BSL 安全
      1. 4.2.1 受保护命令
      2. 4.2.2 RAM 擦除
      3. 4.2.3 进入 BSL
  7. 5常见的 BSL 用例
    1. 5.1 概述和流程图
    2. 5.2 建立连接
    3. 5.3 擦除器件
    4. 5.4 下载应用程序
    5. 5.5 验证应用程序
    6. 5.6 运行应用程序
  8. 6定制 BSL
  9. 7引导加载程序版本
    1. 7.1 FR2xx BSL 版本
    2. 7.2 FR4xx BSL 版本
    3. 7.3 FR57xx BSL 版本
    4. 7.4 FR58xx 和 FR59xx BSL 版本
    5. 7.5 FR6xx BSL 版本
  10. 8修订历史记录

在应用程序代码中实现 BSL 配置

FR235x 和 FR215x MCU 的链接器命令文件包含以下部分:

  • .bslconfigsignature
  • .bslconfig
  • .bsli2caddress

在应用程序代码中,定义以下配置值:

#define BSL_CONFIG_SIGNATURE                   (0x695A) // BSL Configuration Signature
#define BSL_CONFIG_PASSWORD                    (0x5A00) // BSL User's Configuration Signature
#define BSL_CONFIG_TINY_RAM_ERASED_BY_INIT     (0x0008) // Tiny RAM is erased during BSL invocation
#define BSL_CONFIG_TINY_RAM_NOT_ERASED_BY_INIT (0x0000) // (Default) Tiny RAM is not erased during BSL invocation
#define BSL_CONFIG_RAM_ERASED_BY_INIT          (0x0000) // RAM is erased during BSL invocation
#define BSL_CONFIG_RAM_NOT_ERASED_BY_INIT      (0x0004) // (Default) RAM is not erased during BSL invocation
#define BSL_CONFIG_INTERFACE_UART_I2C          (0x0000) // Enable UART and I2C
#define BSL_CONFIG_INTERFACE_UART_ONLY         (0x0001) // Enable UART
#define BSL_CONFIG_INTERFACE_I2C_ONLY          (0x0002) // Enable I2C
#define BSL_CONFIG_INTERFACE_DEFAULT           (0x0003) // (Default / Reserved) Enable UART and I2C
#define BSL_I2C_ADDRESS_7BIT                   (0x60)   // Customized I2C Address

将预期的配置值应用到 BSL 配置部分:

#pragma RETAIN(bslConfigurationSignature)
#pragma DATA_SECTION(bslConfigurationSignature, ".bslconfigsignature")
const uint16_t bslConfigurationSignature = BSL_CONFIG_SIGNATURE;
#pragma RETAIN(bslConfig)
#pragma DATA_SECTION(bslConfig, ".bslconfig")
const uint16_t bslConfig = (BSL_CONFIG_PASSWORD | BSL_CONFIG_INTERFACE_UART_ONLY) ;
#pragma RETAIN(bslI2Caddr)
#pragma DATA_SECTION(bslI2Caddr, ".bsli2caddress")
const uint16_t bslI2Caddr = (0xFF00 | BSL_I2C_ADDRESS_7BIT) ;