ZHCUAO3 February   2023

 

  1.   摘要
  2.   商标
  3. 1BSL 特性概览
  4. 2术语
  5. 3BSL 架构
    1. 3.1 设计
      1. 3.1.1 超时特性
        1. 3.1.1.1 接口自动检测
        2. 3.1.1.2 命令接收
    2. 3.2 调用 BSL
      1. 3.2.1 空白器件
      2. 3.2.2 应用程序请求
      3. 3.2.3 基于 GPIO 的调用
      4. 3.2.4 调试邮箱命令
      5. 3.2.5 其他
        1. 3.2.5.1 启动前应用程序验证
    3. 3.3 存储器
      1. 3.3.1 SRAM 存储器使用情况
    4. 3.4 BSL 配置
    5. 3.5 BSL 状态
  6. 4引导加载程序协议
    1. 4.1 数据包格式
    2. 4.2 UART 和 I2C BSL 协议
      1. 4.2.1 BSL 确认
      2. 4.2.2 外设配置
        1. 4.2.2.1 UART
        2. 4.2.2.2 I2C
        3. 4.2.2.3 CRC
    3. 4.3 引导加载程序内核命令
      1. 4.3.1  连接
      2. 4.3.2  获取器件信息
      3. 4.3.3  解锁引导加载程序
      4. 4.3.4  编程数据
      5. 4.3.5  快速编程数据
      6. 4.3.6  回读数据
      7. 4.3.7  闪存范围擦除
      8. 4.3.8  批量擦除
      9. 4.3.9  恢复出厂设置
      10. 4.3.10 独立验证
      11. 4.3.11 启动应用程序
      12. 4.3.12 更改波特率
    4. 4.4 BSL 内核响应
      1. 4.4.1 BSL 内核消息
      2. 4.4.2 详细错误
      3. 4.4.3 存储器回读
      4. 4.4.4 器件信息
      5. 4.4.5 独立验证
    5. 4.5 引导加载程序安全性
      1. 4.5.1 受密码保护的命令
        1. 4.5.1.1 安全警报
      2. 4.5.2 进入 BSL
  7. 5使用引导加载程序的示例程序流程
  8. 6次级引导加载程序
    1. 6.1 次级引导加载程序示例
  9. 7接口插件
    1. 7.1 实现
      1. 7.1.1 Init
      2. 7.1.2 接收
      3. 7.1.3 发送
      4. 7.1.4 Deinit
      5. 7.1.5 重要注意事项
    2. 7.2 闪存插件类型
    3. 7.3 覆盖现有接口
      1. 7.3.1 UART 接口闪存插件示例
  10. 8参考文献
  11. 9修订历史记录

UART 接口闪存插件示例

使用 UART 通信的闪存插件示例作为 SDK 示例 SDK 的一部分提供以供参考。本节对此进行更加详细的介绍。

描述

UART 接口闪存插件通过以下 4 个 API 挂钩来处理 BSL 主机和 ROM BSL 之间的数据事务。

  • BSL_PI_UART_init
  • BSL_PI_UART_receive
  • BSL_PI_UART_send
  • BSL_PI_UART_deinit

UART 闪存插件主要用于在需要时通过自定义实现覆盖 ROM BSL UART 接口。

示例用法

  • 将 UART_RX 和 UART_TX 与 BSL 主机(任何带有 UART 接口的微控制器)连接。
  • 编译并加载示例。
  • 使用 BSL 调用引脚或任何其他调用方法创建 BSL 调用条件。
  • 从主机发送 Connection 命令。成功时会收到 BSL 确认。
  • 从主机发送 GetDeviceInfo 命令。
  • BSL 使用 UART 接口闪存插件版本信息进行响应。
  • 类似地,发送擦除、编程、验证命令来对存储器中的数据进行编程。

软件文件详细信息

文件名详细信息
bsl_uart.c处理主机和 BSL 内核之间的通信。定义四个接口 API Init、Receive、Send 和 Deinit。
bsl_uart.h包含 BSL 确认的定义和 bsl_uart.c 的函数声明
ti_msp_dl_config.h包含特定于器件的配置,如 UART 引脚、时钟配置等。
boot_config.h包含 BCR 和 BSL 配置结构
startup_mspm0x_ticlang仅包含默认处理程序函数定义的启动文件。与典型的启动文件(没有中断矢量表或复位处理程序)不同,因为这些功能从未在闪存插件中使用,并且会被移除以降低存储器消耗。
mspm0x.cmd指定存储器区域(闪存插件映像的驻留位置)和 SRAM 区域(闪存插件的运行位置)的链接器命令文件。

自定义

此示例提供了闪存插件的参考设计。可根据需要对其自定义。接口闪存插件 API 是主要的更改位置。

要执行的步骤:

  • 根据需要修改闪存插件 API
  • 更改完成后,编译代码
  • 如果 API 指针已更新,则计算 BSL 配置的 CRC
  • 根据需要修改 BCR 配置中的闪存写入保护设置
  • 计算 BCR 配置的 CRC
  • 将新 CRC 存储在 BCR 和 BSL 配置中。
  • 再次编译代码。
  • 加载闪存插件映像