ZHCAA00E June   2013  – January 2024

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
    1. 1.1 术语表
    2. 1.2 约定
  5. 2执行
    1. 2.1 主例程
    2. 2.2 应用程序管理器
      1. 2.2.1 引导和应用程序检测
        1. 2.2.1.1 强制使用引导加载程序模式
        2. 2.2.1.2 应用程序验证
        3. 2.2.1.3 跳转到应用程序
      2. 2.2.2 矢量重定向
      3. 2.2.3 闪存器件中的中断矢量
      4. 2.2.4 双映像支持
        1. 2.2.4.1 在双映像模式下跳转到应用程序
    3. 2.3 存储器接口 (MI)
      1. 2.3.1 双映像支持
    4. 2.4 通信接口 (CI)
      1. 2.4.1 Physical-DataLink (PHY-DL)
        1. 2.4.1.1 I2C
          1. 2.4.1.1.1 超时检测
        2. 2.4.1.2 UART
        3. 2.4.1.3 SPI
        4. 2.4.1.4 CC110x
        5. 2.4.1.5 通信共享
      2. 2.4.2 NWK-APP
        1. 2.4.2.1 基于 BSL 的协议
          1. 2.4.2.1.1 安全性
          2. 2.4.2.1.2 使用 CC110x 的基于 BSL 的协议
          3. 2.4.2.1.3 采用 I2C 的示例
          4. 2.4.2.1.4 采用 UART 或 CC110x 的示例
  6. 3定制 MSPBoot
    1. 3.1 预定义的定制
  7. 4构建 MSPBoot
    1. 4.1 启动新工程
      1. 4.1.1 创建新的 MSPBoot 工程
        1. 4.1.1.1 MSPBootProjectCreator.pl
        2. 4.1.1.2 在 CCS 中导入工程规范文件
        3. 4.1.1.3 修改生成的源代码
          1. 4.1.1.3.1 修改 MSPBoot Main.c
          2. 4.1.1.3.2 修改 TI_MSPBoot_Config.h
          3. 4.1.1.3.3 修改 TI_MSPBoot_CI_PHYDL_xxxx_xxx.c
          4. 4.1.1.3.4 修改 TI_MSPBoot_AppMgr.c
          5. 4.1.1.3.5 修改 Application Main.c
          6. 4.1.1.3.6 修改 TI_MSPBoot_Mgr_Vectors_xxxx.c
      2. 4.1.2 使用 MSPBoot 加载应用程序代码
        1. 4.1.2.1 转换应用程序输出映像
    2. 4.2 示例
      1. 4.2.1 LaunchPad 开发套件硬件
      2. 4.2.2 CC110x 硬件
      3. 4.2.3 构建目标工程
      4. 4.2.4 构建主机工程
      5. 4.2.5 运行示例
  8. 5参考文献
  9. 6修订历史记录

基于 BSL 的协议

MSP430 BSL 是 MSP430 MCU 中包含的标准引导加载程序。MSP430™ 闪存器件引导加载程序 (BSL) 用户指南 对此进行了详细说明。

在 MSPBoot 中实现的基于 BSL 的协议可以保持稳健性,但是并不能实现所有命令,并且与 BSL 协议完全采用相同的格式来减少其占用空间。此协议基于数据包,具有表 2-4 中的格式。

表 2-4 基于 BSL 的协议命令格式
标头长度有效载荷校验码 [L]校验码 [H]
0x801 到 PAYLOAD_MAX_SIZE(1)1 到 PAYLOAD_MAX_SIZE 字节1 字节1 字节
PAYLOAD_MAX_SIZE 默认设置为 20(1 个命令字节 + 3 个地址字节 + 16 个数据字节)

标头:固定为 0x80

长度:1 字节加有效载荷长度。有效值为 1 到 PAYLOAD_MAX_SIZE。

有效载荷:1 到 PAYLOAD_MAX_SIZE 字节,包含命令、可选地址和数据(可选,根据命令类型而定)。

校验和:有效载荷的 16 位 CRC CCITT

表 2-5 中的命令会作为有效载荷来实现。

表 2-5 基于 BSL 的协议命令
命令CMD字节1字节2字节3字节4字节length-1
ERASE_SEGMENT0x12ADDR[L]ADDR[M]ADDR[H]XXX
ERASE_APP0x15XXXXXX
RX_DATA_BLOCK0x10ADDR[L]ADDR[M]ADDR[H]DATA0XDATAn
TX_VERSION0x19XXXXXX
JUMP2APP0x1CXXXXXX

ERASE_SEGMENT

擦除由 ADDR 寻址的存储器段(闪存中为 512 字节)。

ERASE_APP

擦除应用程序区域。

RX_DATA_BLOCK

编程从地址 ADDR 开始的 n 字节数据。

TX_VERSION

向目标请求 MSPBoot 版本。

JUMP2APP

指示目标跳转到应用程序映像(在验证之后)。来自目标的响应始终为一个字节(表 2-6 列出了有效值)。

表 2-6 基于 BSL 的协议从设备响应
响应说明
OK0x00上一条命令正确执行
HEADER_ERROR0x51帧头不正确
CHECKSUM_ERROR0x52帧校验和不正确
PACKETZERO_ERROR0x53数据包长度 = 0
PACKETSIZE_ERROR0x54数据包长度 > MAX_LEN
UNKNOWN_ERROR0x55协议错误
INVALID_PARAMS0xC5命令收到的参数不正确
INCORRECT_COMMAND0xC6收到的命令无效
MSPBOOT_VERSION0 到 0xFF发送为 TX_VERSION 命令的响应(默认为 0xA0)