ZHCA999D October   2016  – March 2020 MSP430FR5969 , MSP430FR5969-SP , MSP430FR5994 , MSP430FR6989

 

  1.   MSP430FRBoot - 适用于 MSP430™ FRAM 大型存储器型号器件的主存储器引导加载程序和无线更新
    1.     商标
    2. 1 简介
      1. 1.1 术语表
      2. 1.2 约定
    3. 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 FRAM 器件中的中断矢量
      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 UART
          2. 2.4.1.2 SPI
          3. 2.4.1.3 CC110x
          4. 2.4.1.4 通信共享
        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 采用 UART 或 CC110x 的示例
    4. 3 定制 MSP430FRBoot
      1. 3.1 预定义的定制
    5. 4 构建 MSPBoot
      1. 4.1 LaunchPad™ 开发套件硬件
      2. 4.2 CC110x 硬件
      3. 4.3 软件
        1. 4.3.1 构建目标软件
        2. 4.3.2 转换应用程序输出映像
        3. 4.3.3 生成链接器文件
    6. 5 将 FRAM LaunchPad 开发套件用作主机的演示
      1. 5.1 硬件
      2. 5.2 构建主机项目
      3. 5.3 运行演示
    7. 6 将目标端示例项目移植到其他 MSP430FR 器件
    8. 7 参考文献
  2.   修订历史记录

基于 BSL 的协议

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

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

Table 4. 基于 BSL 的协议命令格式

帧头 长度 有效载荷 Checksum[L] Checksum[H]
0x80 1 到 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。

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

Table 5. 基于 BSL 的协议命令

命令 CMD 字节1 字节2 字节3 字节4 字节length–1
ERASE_SEGMENT 0x12 ADDR[L] ADDR[M] ADDR[H] X X X
ERASE_APP 0x15 X X X X X X
RX_DATA_BLOCK 0x10 ADDR[L] ADDR[M] ADDR[H] DATA0 X DATAn
TX_VERSION 0x19 X X X X X X
JUMP2APP 0x1C X X X X X X

ERASE_SEGMENT:擦除由 ADDR 寻址的存储器段(FRAM 中为 512B)。

ERASE_APP:擦除应用程序区域。

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

TX_VERSION:向目标请求 MSPBoot 版本。

JUMP2APP:指示目标跳转到应用程序映像(在验证之后)。

来自目标的每个响应始终是一个字节。Table 6 列出了有效值。

Table 6. 基于 BSL 的协议从设备响应

响应 说明
OK 0x00 上一条命令正确执行
HEADER_ERROR 0x51 帧头不正确
CHECKSUM_ERROR 0x52 帧校验和不正确
PACKETZERO_ERROR 0x53 数据包长度 = 0
PACKETSIZE_ERROR 0x54 数据包长度 > MAX_LEN
UNKNOWN_ERROR 0x55 协议错误
INVALID_PARAMS 0xC5 命令收到的参数不正确
INCORRECT_COMMAND 0xC6 收到的命令无效
MSPBOOT_VERSION 0 到 0xFF 发送为 TX_VERSION 命令的响应(默认为 0xA0)