ZHCU022AF July   2010  – September 2022

 

  1.   摘要 - MSP430™ 闪存器件引导加载程序 (BSL)
  2.   商标
  3. 1引言
    1. 1.1 补充在线信息
    2. 1.2 BSL 特性概览
    3. 1.3 调用 BSL
      1. 1.3.1 硬件 BSL 调用
        1. 1.3.1.1 具有共享JTAG 引脚的 MSP430 器件
          1. 1.3.1.1.1 阻止使用共享 JTAG 引脚调用BSL的因素
        2. 1.3.1.2 具有专用 JTAG 引脚的 MSP430 闪存器件
          1. 1.3.1.2.1 阻止使用专用 JTAG 引脚调用BSL的因素
        3. 1.3.1.3 带有 USB 的器件
      2. 1.3.2 软件 BSL 调用
    4. 1.4 UART 协议
    5. 1.5 USB 协议
  4. 2引导加载程序协议 - 1xx、2xx 和 4xx 系列
    1. 2.1 同步序列
    2. 2.2 命令
      1. 2.2.1 不受保护的命令
      2. 2.2.2 受密码保护的命令
    3. 2.3 编程流程
    4. 2.4 数据帧
      1. 2.4.1 数据流结构
      2. 2.4.2 校验和
      3. 2.4.3 示例序列
      4. 2.4.4 命令-详细说明
        1. 2.4.4.1  概述
        2. 2.4.4.2  RX 数据块
        3. 2.4.4.3  RX 密码
        4. 2.4.4.4  批量擦除
        5. 2.4.4.5  擦除段
        6. 2.4.4.6  擦除主存储器或者信息存储器
        7. 2.4.4.7  擦除检查
        8. 2.4.4.8  更改波特率
        9. 2.4.4.9  设置内存偏移
        10. 2.4.4.10 加载 PC
        11. 2.4.4.11 TX 数据块
        12. 2.4.4.12 TX BSL 版本
    5. 2.5 可史可法 BSL
    6. 2.6 退出 BSL
    7. 2.7 密码保护
    8. 2.8 代码保护保险丝
    9. 2.9 BSL 内部设置和资源
      1. 2.9.1 芯片识别和 BSL 版本
      2. 2.9.2 外部调用 BSL 的矢量
      3. 2.9.3 初始化状态
      4. 2.9.4 内存分配和资源
  5. 3引导加载程序协议 - F5xx 和 F6xx 系列
    1. 3.1 BSL 数据包
    2. 3.2 UART 外设接口 (PI)
      1. 3.2.1 包装器
      2. 3.2.2 缩写
      3. 3.2.3 消息
      4. 3.2.4 接口专用命令
        1. 3.2.4.1 更改波特率
    3. 3.3 I2C 外设接口
      1. 3.3.1 I2C 协议定义
      2. 3.3.2 具有字节级确认的基本协议
      3. 3.3.3 BSL 的 I2C 协议 - 从从服务器读取
      4. 3.3.4 确认 (ACK)
      5. 3.3.5 包装器
    4. 3.4 USB 外设接口
      1. 3.4.1 包装器
      2. 3.4.2 硬件要求
    5. 3.5 BSL 内核命令结构
      1. 3.5.1 缩写
      2. 3.5.2 命令说明
    6. 3.6 BSL 安全
      1. 3.6.1 受保护的命令
      2. 3.6.2 RAM 擦除
    7. 3.7 BSL 内核响应
      1. 3.7.1 缩写
      2. 3.7.2 BSL 内核消息
      3. 3.7.3 BSL 版本号
      4. 3.7.4 UART BSL 的示例序列
    8. 3.8 BSL 公共函数和 Z 区域
      1. 3.8.1 从外部应用中启动 BSL
      2. 3.8.2 返回到BSL函数描述
  6. 4引导加载程序硬件
    1. 4.1 硬件描述
      1. 4.1.1 电源
      2. 4.1.2 串行接口
        1. 4.1.2.1 电平移动
        2. 4.1.2.2 对 RST/NMI 和 TEST 或者 TCK 引脚的控制
      3. 4.1.3 目标连接器
      4. 4.1.4 部件列表
  7. 5器件和引导加载程序版本间的差异
    1. 5.1 1xx、2xx 和 4xx BSL 版本
    2. 5.2 ROM BSL 版本 1.10 的特殊考虑
    3. 5.3 1xx、2xx 和 4xx BSL 已知问题
    4. 5.4 有关MSP430F14x 器件系列 BSL的特殊说明
    5. 5.5 基于 F5xx 和 F6xx 闪存的 BSL 版本
  8. 6引导加载程序 PCB 布局建议
  9. 7修订历史记录

基于 F5xx 和 F6xx 闪存的 BSL 版本

表 5-9
器件 MSP430F5438、MSP430F5437、MSP430F5435、MSP430F5436、MSP430F5435、MSP430F5419、MSP430F5418
BSL 版本 00.01.01.01
RAM已擦除
内核命令的缓冲器大小 260 字节
显著信息
  1. 在器件数据表中注明了 UART TX 和 RX BSL 引脚
  2. 由于已知的勘误表 SYS4 和 FLASH32,BSL 不可重复编程。
  3. 然而,JTAGLOCK KEY(位于 BSL 区域)仍然可以通过 BSL 本身进行编程。请注意,这需要能够一次锁定和解锁 JTAG。锁定 JTAG 是通过向 JTAGLOCK KEY 写入 0x5555 来执行的,而解锁 JTAG 是通过写入 0x0000 来执行的。一旦完成后,,就没有机会背锁 JTAG,因为它需要整个 BSL 编程。
  4. 唯一支持的波特率为 9600 和 57600。
  5. BSL 在 TA0.0 上传输,在 TA0.1 上接收。
  6. BSL 不期望校验位。
已知漏洞
  1. BSL 密码是地址 0xFFF0 和 0xFFFF 之间的字节。这意味着该BSL 版本只期待 RX 密码命令中一个密码的 16 个字节。发送 32 个字节会返回错误。
  2. 如果地址 0x20396 或者 0x20397 包含在 CRC 命令的地址范围内,则返回的数据错误。
  3. 批量擦除命令也会擦除 Info_A。
  4. 如果密码错误,器件将擦除所有 RAM,包括其堆栈。因此,不能保证正确返回错误代码。
  5. CRC 函数的字节总数被 0x7FFF屏蔽,因此限制为 32767。
表 5-10
器件 MSP430F5438A、MSP430F5437A、MSP430F5435A、MSP430F5436A、MSP430F5435A、MSP430F5419A、MSP430F5418A
BSL 版本 00.05.04.03(修订版 A 至修订版 E)
00.07.05.04(修订版 F 和后续版本)
RAM已擦除 0x1C00 至 0x5BFF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. 在器件数据表中注明了 UART TX 和 RX BSL 引脚
已知漏洞
  1. 无法保所有时钟、电压和温度变化都达到115k的波特率。
表 5-11
器件 CC430F6147、CC430F6145、CC430F6143、CC430F6137、CC430F6135、CC430F6127、CC430F6126、CC430F6125、CC430F5147、CC430F5145、CC430F5143、CC430F5137、CC430F5135、CC430F5133、CC430F5125、CC430F5123
BSL 版本 00.05.04.52(修订版 A 至修订版 C)
00.07.05.53(修订版 D 和后续版本)
RAM已擦除 0x1C00 至 0x23FF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. UART TX 和 RX BSL 引脚在引脚 P1.6 (TXD) 和 P1.5 (RXD) 上实现
已知漏洞
  1. 无法保所有时钟、电压和温度变化都达到115k的波特率。
表 5-12
器件 MSP430F5510、MSP430F5500、MSP430F5501、MSP430F5502、MSP430F5503、MSP430F5504、MSP430F5505、MSP430F5506、MSP430F5507、MSP430F5508、MSP430F5509
BSL 版本 00.03.83.33(修订版 A 至修订版 E)
00.07.88.38(修订版 F 直到 2015 年 5 月)
00.08.88.39(修订版 F 及后续版本)
RAM已擦除 0x2400 至 0x33FF
用于内核命令的缓冲器大小 62 字节
显著信息
  1. 器件使用工厂 USB BSL 进行编程。
  2. 工厂 USB BSL 仅支持 RAM 写入。完整的 BSL 必须首先加载到器件 RAM 中并开始执行闪存写入。仅支持 RX PASSWORD、RX DATA BLOCK FAST 和 SET PC 命令。
  3. 当从应用程序启动此 BSL 时,应用程序应首先取消枚举自身,然后在启动 BSL 之前延迟(大约 500ms)。这允许对主机进行正确的重新枚举。
  4. XT2 需要外部晶振以确保 USB 运行。
已知漏洞 USB 模块未被 BSL 正确锁定。由于遗留原因,保留此行为。
表 5-13
器件 MSP430F5529、MSP430F5513、MSP430F5514、MSP430F5515、MSP430F5517、MSP430F5519、MSP430F5521、MSP430F5522、MSP430F5524、MSP430F5525、MSP430F5526、MSP430F5527、MSP430F5528
BSL 版本 00.03.83.33(修订版 A 至修订版 H)
00.07.85.36(修订版 I)
00.07.87.37(修订版 J)
00.07.88.38(修订版 K 直到 2015 年 5 月)
00.08.88.39(修订版 K 及后续版本)
RAM已擦除 0x2400 至 0x33FF
用于内核命令的缓冲器大小 62 字节
显著信息
  1. 器件使用工厂 USB BSL 进行编程。
  2. 工厂 USB BSL 仅支持 RAM 写入。完整的 BSL 必须首先加载到器件 RAM 中并开始执行闪存写入。仅支持 RX PASSWORD、RX DATA BLOCK FAST 和 SET PC 命令。
  3. 当从应用程序启动此 BSL 时,应用程序应首先取消枚举自身,然后在启动 BSL 之前延迟(大约 500ms)。这允许对主机进行正确的重新枚举。
  4. XT2 需要外部晶振以确保 USB 运行。
已知漏洞 USB 模块未被 BSL 正确锁定。由于遗留原因,保留此行为。
表 5-14
器件 MSP430F5172、MSP430F5152、MSP430F5132、MSP430F5171、MSP430F5151、MSP430F5131
BSL 版本 00.07.05.04
RAM已擦除 0x1C00 到 0x1FFF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. 在器件数据表中注明了 UART TX 和 RX BSL 引脚
已知漏洞
  1. 无法保所有时钟、电压和温度变化都达到115k的波特率。
表 5-15
器件 MSP430F5229、MSP430F5227、MSP430F5219、MSP430F5217、MSP430F5224、MSP430F5222、MSP430F5213、MSP430F5212
BSL 版本 00.07.05.04
RAM已擦除 0x2400 至 0x43FF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. 在器件数据表中注明了 UART TX 和 RX BSL 引脚
已知漏洞
  1. 无法保所有时钟、电压和温度变化都达到115k的波特率。
表 5-16
器件 MSP430F5249、MSP430F5247、MSP430F5244、MSP430F5242、MSP430F5239、MSP430F5237、MSP430F5234、MSP430F5232
BSL 版本 00.08.08.04
RAM已擦除 0x2400 至 0x43FF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. 在器件数据表中注明了 UART TX 和 RX BSL 引脚
已知漏洞
  1. 无法保所有时钟、电压和温度变化都达到115k的波特率。
表 5-17
器件 MSP430F5255、MSP430F5254、MSP430F5253、MSP430F5252
BSL 版本 00.08.08.04
RAM已擦除 0x2400 至 0x43FF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. 在器件数据表中注明了 UART TX 和 RX BSL 引脚
  2. 在自定义BSL包中可以下载使用 DVIO 电源域中的引脚的 BSL 固件映像。
已知漏洞
  1. 无法保所有时钟、电压和温度变化都达到115k的波特率。
表 5-18
器件 MSP430F5259、MSP430F5258、MSP430F5257、MSP430F5256
BSL 版本 00.07.06.94
RAM已擦除 0x1C00 至 0x23FF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. 在器件数据表中注明了 I2C 引脚
已知漏洞
  1. 长度大于 260 的 I2C 读取命令不会返回正确的数据。
表 5-19
器件 MSP430F5310、MSP430F5309、MSP430F5308、MSP430F5304、MSP430F5340、MSP430F5341、MSP430F5342、MSP430F5329、MSP430F5324、MSP430F5325、MSP430F5326、MSP430F5327、MSP430F5328
BSL 版本 00.06.04.04
RAM已擦除 0x1C00 至 0x33FF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. 在器件数据表中注明了 UART TX 和 RX BSL 引脚
已知漏洞
  1. 无法保所有时钟、电压和温度变化都达到115k的波特率。
表 5-20
器件 MSP430F6638、MSP430F6637、MSP430F6636、MSP430F6635、MSP430F6634、MSP430F6633、MSP430F6632、MSP430F6631、MSP430F6630、MSP430F5638、MSP430F5637、MSP430F5636、MSP430F5635MSP430F5634、MSP430F5633、MSP430F5632、MSP430F5631、MSP430F5630
BSL 版本 00.04.84.34(修订版 A 至修订版 D)
00.08.88.38(修订版 E 直到 2015 年 5 月)
00.08.88.39(修订版 E 及后续版本)
RAM已擦除 0x2400 至 0x33FF
用于内核命令的缓冲器大小 62 字节
显著信息
  1. 器件使用工厂 USB BSL 进行编程。
  2. 工厂 USB BSL 仅支持 RAM 写入。完整的BSL 必须首先加载到器件 RAM 中并开始执行闪存写入。仅支持 RX PASSWORD、RX DATA BLOCK FAST 和 SET PC 命令
  3. 当从应用程序启动此 BSL 时,应用程序应首先取消枚举自身,然后在启动 BSL 之前延迟(大约 500ms)。这允许对主机进行正确的重新枚举。
已知漏洞 USB 模块未被 BSL 正确锁定。由于遗留原因,保留此行为。
表 5-21
器件 MSP430F6659、MSP430F6658、MSP430F5659、MSP430F5658
BSL 版本 00.07.86.36(修订版 A)
00.08.88.38(修订版 B 直到 2015 年 5 月)
00.08.88.39(修订版 B 及后续版本)
RAM已擦除 0x2400 至 0x33FF
用于内核命令的缓冲器大小 62 字节
显著信息
  1. 器件使用工厂 USB BSL 进行编程。
  2. 工厂 USB BSL 仅支持 RAM 写入。完整的BSL 必须首先加载到器件 RAM 中并开始执行闪存写入。仅支持 RX PASSWORD、RX DATA BLOCK FAST 和 SET PC 命令
  3. 当从应用程序启动此 BSL 时,应用程序应首先取消枚举自身,然后在启动 BSL 之前延迟(大约 500ms)。这允许对主机进行正确的重新枚举。
已知漏洞
表 5-22
器件 MSP430F6438、MSP430F6436、MSP430F6435、MSP430F6433、MSP430F5338、MSP430F5336、MSP430F5335、MSP430F5333、MSP430F6459、MSP430F6458、MSP430F5359、MSP430F5358
BSL 版本 00.07.05.04
RAM已擦除 0x1C00 至 0x43FF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. 在器件数据表中注明了 UART TX 和 RX BSL 引脚
已知漏洞
  1. 无法保所有时钟、电压和温度变化都达到115k的波特率。
表 5-23
器件 MSP430F6736、MSP430F6720、MSP430F6721、MSP430F6723、MSP430F6724、MSP430F6725、MSP430F6726、MSP430F6730、MSP430F6731、MSP430F6733、MSP430F6734、MSP430F6735、MSP430F6736A、MSP430F6735A、MSP430F6734A、MSP430F6733A、MSP430F6731A、MSP430F6730A、MSP430F6726A、MSP430F6725A、MSP430F6724A、MSP430F6723A、MSP430F6721A、MSP430F6720A
BSL 版本 00.07.05.04
RAM已擦除 0x1C00 到 0x1FFF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. 在器件数据表中注明了 UART TX 和 RX BSL 引脚
已知漏洞
  1. 无法保所有时钟、电压和温度变化都达到115k的波特率。
表 5-24
器件 MSP430F6779、MSP430F6745、MSP430F6746、MSP430F6747、MSP430F6748、MSP430F6749、MSP430F6765、MSP430F6776、MSP430F6767、MSP430F6768、MSP430F6769、MSP430F6775、MSP430F6776、MSP430F6777、MSP430F6778、MSP430F67791、MSP430F67451、MSP430F67461、MSP430F67471、MSP430F67481、MSP430F67491、MSP430F67651、MSP430F67761、MSP430F67671、MSP430F67681、MSP430F67691、MSP430F67751、MSP430F67761、MSP430F67771、MSP430F67781
BSL 版本 00.07.05.04
RAM已擦除 0x1C00 至 0x5BFF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. 在器件数据表中注明了 UART TX 和 RX BSL 引脚
已知漏洞
  1. 无法保所有时钟、电压和温度变化都达到115k的波特率。
表 5-25
器件 MSP430F6779A、MSP430F6778A、MSP430F6777A、MSP430F6776A、MSP430F6775A、MSP430F6769A、MSP430F6768A、MSP430F6767A、MSP430F6766A、MSP430F6765A MSP430F6749A、MSP430F6748A、MSP430F6747A MSP430F6746A MSP430F6745A、MSP430F67791A、MSP430F67781A、MSP430F67771A、MSP430F67761A、MSP430F67751A、MSP430F67691A、MSP430F67681A、MSP430F67671A、MSP430F67661A、MSP430F67651A、MSP430F67491A、MSP430F67481A、MSP430F67471A、MSP430F67461A、MSP430F67451A
BSL 版本 00.07.05.04
RAM已擦除 0x1C00 至 0x5BFF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. 在器件数据表中注明了 UART TX 和 RX BSL 引脚
已知漏洞
  1. 无法保所有时钟、电压和温度变化都达到115k的波特率。
表 5-26
器件 MSP430F67641、MSP430F67621
BSL 版本 00.07.05.04
RAM已擦除 0x1C00 到 0x1FFF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. 在器件数据表中注明了 UART TX 和 RX BSL 引脚
已知漏洞
  1. 无法保所有时钟、电压和温度变化都达到115k的波特率。
表 5-27
器件 MSP430FG6426、MSP430FG6425
BSL 版本 00.08.08.04
RAM已擦除 0x1C00 至 0x43FF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. 在器件数据表中注明了 UART TX 和 RX BSL 引脚
已知漏洞
  1. 无法保所有时钟、电压和温度变化都达到115k的波特率。
表 5-28
器件 MSP430FG6626、MSP430FG6625
BSL 版本 00.08.88.38
RAM已擦除 0x1C00 至 0x43FF
用于内核命令的缓冲器大小 260 字节
显著信息
  1. 器件使用工厂 USB BSL 进行编程。
  2. 工厂 USB BSL 仅支持 RAM 写入。完整的BSL 必须首先加载到器件 RAM 中并开始执行闪存写入。仅支持 RX PASSWORD、RX DATA BLOCK FAST 和 SET PC 命令
  3. 当从应用程序启动此 BSL 时,应用程序应首先取消枚举自身,然后在启动 BSL 之前延迟(大约 500ms)。这允许对主机进行正确的重新枚举。
  4. XT2 需要外部晶振以确保 USB 运行。
已知漏洞