ZHCUAO3 February   2023 MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L2227 , MSPM0L2227-Q1 , MSPM0L2228 , MSPM0L2228-Q1

 

  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修订历史记录

次级引导加载程序示例

次级引导加载程序示例作为 SDK 示例的一部分提供以供参考。本节对此进行更加详细的介绍。

描述

此次级引导加载程序示例支持对存储器中的数据进行编程/验证,其 BSL 协议格式与器件中的主 BSL (ROM BSL) 相同,并且可以采用与 ROM BSL 相同的方式调用。

它支持以下主要功能

  • 编程数据
  • 闪存存储器擦除
  • 回读数据
  • CRC 验证
  • 启动应用程序

它使用 UART 接口与主机通信。

此示例负责次级引导加载程序的实施及注册。因此,一旦将该映像加载到器件中,就无法使用器件中的主引导加载程序。只有次级引导加载程序将处于运行状态。要将器件恢复为使用主引导加载程序,必须使用 SWD_Factory_Reset 命令(通过调试子系统邮箱恢复出厂设置)。.

示例用法

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

软件文件详细信息

文件名详细信息

secondary_bsl.c

初始化 BSL 运行所需的外设。接收来自通信接口的命令数据包并将其传递到命令处理层。

还负责在 BSL 配置存储器中注册次级引导加载程序。

bsl_ci.c

解释命令数据包,处理命令并将响应发送回主机

bsl_ci.h

包含 BSL 命令和响应的定义。此外还有 bsl_ci.c 的函数声明

bsl_uart.c

处理主机和 BSL 内核之间的通信

bsl_uart.h

包含 BSL 确认的定义和 bsl_uart.c 的函数声明

ti_msp_dl_config.h

包含特定于器件的配置,例如 UART 引脚、所用外设的基址等

boot_config.h

包含 BCR 和 BSL 配置结构

factory_config.c

实现了用于获取出厂配置的器件特定数据(如 SRAM 存储器大小)的函数。

factory_config.h

包含 factory_config.c 的出厂配置结构和函数声明

startup_mspm0x_ticlang

包含矢量表、复位处理程序和其他处理程序的启动文件

mspm0x.cmd

指定内存区域(次级引导加载程序映像应驻留的存储器位置)和 SRAM 区域(次级引导加载程序应运行的位置)的链接器命令文件。

自定义

此示例提供了次级引导加载程序的参考设计。可根据需要对其自定义。BSL 内核层(secondary_bsl.c、bsl_ci.c)或接口层 (bsl_uart.c) 是进行自定义的主要位置。

要执行的步骤

  • 根据需要修改代码

  • 更改完成后,编译代码

  • 根据需要修改 BCR 配置中的闪存写入保护设置

  • 计算 BCR 配置的 CRC 并存储新的 CRC 值

  • 再次编译代码

  • 加载自定义 BSL 映像