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

1xx、2xx 和 4xx BSL 版本

本节中的表格显示了 MSP430 器件到与其硬件和软件资源相关的 BSL 版本分配的关键信息。

表 5-1 F13x、F14x(1)(不包括修订版本 AA)、F11x 和 F11x1 上的 BSL 版本1.10
器件 F13x
F14x(1) 最高至修订版 N
F11x(不再使用)
F11x1(不再使用)
BSL 版本 1.10
BSL 矢量地址 冷启动 0C00h
暖启动
芯片 ID 地址 0FF0h
芯片 ID 数据 F149h F112h
BSL 版本地址 0FFAh
BSL 版本数据 0110h
批量擦除时间,额定值 (ms) 17.2(1)
以0000h 对 FFFFh 进行的读写访问 字节
写入时验证(在线)
堆栈指针初始化 关键 SP 021Ah
非关键 SP 未更改
BSL 所使用的资源
发送引脚 (TX),接收引脚 (RX) P 1.1,P2.2
所使用的 RAM 堆栈 0200h 至 0219h
工作寄存器 R5 至 R9
系统时钟,受影响的控件 BCSCTL1,DCOCTL
Timer_A,受影响的控件 TACTL,TAR,CCTL0,CCR0
为软件调用所做的准备
mov    #00h, &CCTL0
bic.b  #02h, &P1SEL
bic.b  #04h, &P2SEL
bic.b  #32h, &IE1
mov.b  #00h, &BCSCTL2
mov    #00h, SR
br     &0C00h
注释 1
应变方法命令
载入 PATCH.TXT 来消除 ROM 错误(请参阅Topic Link Label5.2Topic Link Label2.5
注释 2
仅可选F148和F149:使用可加载 BSL
(要求大于1KB的RAM)
载入 BL_150S_14x.txt 以获得 V1.60 的所有特性和有效擦除段命令(请参阅Topic Link Label2.5)。
注释 3
可选 F1x4 至 F1x9:使用小的可加载 BSL
(要求小于512B的RAM )
载入 BS_150S.14x.txt 来获得 V1.60 的一些特性(请参阅Topic Link Label2.5)。
为了达到数据表中规定的所需批量擦除时间,必须多次执行批量擦除命令。
表 5-2 F41x、F11x 和 F11x1 上的 BSL 版本 1.30
器件 F41x F11x(不再使用)
F11x1A
BSL 版本 1.30
BSL 矢量地址 冷启动 0C00h
暖启动 0C02h
芯片 ID 地址 0FF0h
芯片 ID 数据 F143h F112h
BSL 版本地址 0FFAh
BSL 版本数据 0130h
批量擦除时间,额定值 (ms) 206.4
读取和写入访问地址 0000h 至 00FFh 字节
0100h 至 FFFEh
写入时验证(在线)
堆栈指针初始化 冷启动 0220h
暖启动 未更改
BSL 所使用的资源
发送引脚 (TX) P1.0 P1.1
接收引脚 (RX) P2.1 P2.2
所使用的 RAM 堆栈 0200h 至 021Fh
工作寄存器 R5 至 R9
系统时钟,受影响的控件 SCFI0,SCFI1,SCFQCTL BCSCTL1,DCOCTL
Timer_A,受影响的控件 TACTL,TAR,CCTL0,CCR0
为软件调用所做的准备
mov    #00h, &CCTL0
mov.b  #00h, &FLLCTL1
br     &0C00h
mov    #00h, &CCTL0
mov.b  #00h, &BCSCTL2
mov    #00h, SR
br     &0C00h
表 5-3 F12x 上的 BSL 版本 1.40
器件 F122,F123x
BSL 版本 1.40
BSL 矢量地址 冷启动 0C00h
暖启动 0C02h
芯片 ID 地址 0FF0h
芯片 ID 数据 F123h
BSL 版本地址 0FFAh
BSL 版本数据 0140h
批量擦除时间,额定值 (ms) 206.4
读取和写入访问地址 0000h 至 00FFh 字节
0100h 至 FFFEh
写入时验证(在线) 地址0200h 至 FFFEh
堆栈指针初始化 冷启动 0220h
暖启动 未更改
BSL 所使用的资源
发送引脚 (TX) P1.1
接收引脚 (RX) P2.2
所使用的 RAM 堆栈 0200h 至 021Fh
工作寄存器 R5 至 R10
系统时钟,受影响的控件 BCSCTL1,DCOCTL
Timer_A,受影响的控件 TACTL,TAR,CCTL0,CCR0
为软件调用所做的准备
mov.b  #00h, &BCSCTL2
mov    #00h, SR
br     &0C00h
表 5-4 F11x2、F12x2、F43x、F44x、FE42x、FW42x、F43x、FG43x、F415、F417 上的 BSL 版本 1.60
器件 F1122、
F1132
F1222、
F1232
F43x、
F44x
FE42x、
FW42x、
F415、
F417
F43x、
FG43x
BSL 版本 1.60
BSL 矢量地址 冷启动 0C00h
暖启动 0C02h
芯片 ID 地址 0FF0h
芯片 ID 数据 1132h 1232h F449h F427h F439h
BSL 版本地址 0FFAh
BSL 版本数据 0160h
批量擦除时间,额定值 (ms) 206.4
读取和写入访问地址 0000h 至 00FFh 字节
0100h 至 FFFEh
写入时的验证(在线) 地址0200h 至 FFFEh
擦除校验命令 是(错误地址 0200h)
擦除段命令 带有擦除验证(错误地址 0200h)
TX 识别命令 支持
更改波特率命令 支持
堆栈指针初始化 冷启动 0220h
暖启动 未更改
BSL 所使用的资源
发送引脚 (TX) P1.1 P1.0
接收引脚 (RX) P2.2 P1.1
所使用的 RAM 堆栈 0200h 至 021Fh
工作寄存器 R5 至 R12
系统时钟,受影响的控件 BCSCTL1,DCOCTL SCFI0,SCFI1,SCFQCTL
Timer_A,受影响的控件 TACTL,TAR,CCTL0,CCR0
为软件调用所做的准备
mov.b #00h, &BCSCTL2
mov #00h, SR
br &0C00h
mov.b #00h, &FLLCTL1
br    &0C00h
注释 擦除段命令 连续验证地址 1000h 至 11FFh (三个段)。也使用擦除校验命令。
表 5-5 F16x、F161x、F42x0、F13x 修订版 AA、F14x(1) 修订版 AA、F47x、FG47x 上的 BSL 版本 1.61
器件 F16x F161x F149 修订版本 AA F42x0 F41x2 F47197 FG47x
BSL 版本 1.61
BSL 矢量地址 冷启动 0C00h
暖启动 0C02h
芯片 ID 地址 0FF0h
芯片 ID 数据 0F169h 0F16Ch F149h F427h 4152h F47Fh 0F479h
BSL 版本地址 0FFAh
BSL 版本数据 0161h
批量擦除时间,额定值 (ms) 206.4
读取和写入访问地址 0000h 至 00FFh 字节
0100h 至 FFFEh
写入时验证(在线) 地址0200h 至 FFFEh
擦除校验命令 是(错误地址 0200h)
擦除段命令 带有擦除验证(错误地址 0200h)
TX 识别命令 支持
更改波特率命令 支持
堆栈指针初始化 冷启动 0220h
暖启动 未更改
BSL 所使用的资源
发送引脚 (TX) P1.1 P1.0
接收引脚 (RX) P2.2 P1.1
所使用的 RAM 堆栈 0200h 至 021Fh
工作寄存器 R5 至 R14
系统时钟,受影响的控件 BCSCTL1,DCOCTL SCFI0,SCFI1,SCFQCTL
Timer_A,受影响的控件 TACTL,TAR,CCTL0,CCR0
为软件调用所做的准备
mov.b #00h, &BCSCTL2
mov #00h, SR
br &0C00h
mov.b #00h, &FLLCTL1
br    &0C00h
注释 擦除段命令 连续验证地址 1000h 至 11FFh(三个段)。也使用擦除校验命令。
表 5-6 F21xx、F22xx、F23xx、F24xx、F261x 上的 BSL 版本 2.02 和 2.13
器件 F21xx F22xx F23xx F24x F261x
BSL 版本 2.02 2.13
BSL 矢量地址 冷启动 0C00h
暖启动 0C02h(1)
芯片 ID 地址 0FF0h
芯片 ID 数据 F213h F227h F237h F249h F26Fh
BSL 版本地址 0FFAh
BSL 版本数据 0202h 0213h
读取和写入访问地址 0000h 至 00FFh 字节
0100h 至 FFFEh
写入时验证(在线) 地址0200h 至 FFFEh
擦除校验命令 是(错误地址 0200h)
擦除段命令 带有擦除验证(错误地址 0200h)
TX 识别命令 支持
更改波特率命令 支持
堆栈指针初始化 冷启动 0220h 0224h
暖启动 未更改
BSL 所使用的资源
发送引脚 (TX) P1.1
接收引脚 (RX) P2.2
所使用的 RAM 堆栈 0200h 至 021Fh 0200h 至 0223h
工作寄存器 R5 至 R14 R4 至 R15
系统时钟,受影响的控件 BCSCTL1,DCOCTL SCFI0,SCFI1,SCFQCTL
Timer_A,受影响的控件 TACTL,TAR,CCTL0,CCR0
为软件调用所做的准备
mov.b #00h, &BCSCTL2
mov #00h, SR
br &0C00h
注释 擦除段命令 连续验证地址 1000h 至 11FFh (五个段)。也使用擦除校验命令。
在进入BSL之前,用户应用必须清除LOCK 和 LOCKA 位:
mov.w #FWKEY+LOCKA,&FCTL3
表 5-7 G2xx3、G2xx4、G2xx5、TCH5E 上的 BSL 版本 2.02 和 2.03(1)
器件 G2xx4 G2xx5 G2xx3 TCH5E
BSL 版本 2.02 2.03
BSL 矢量地址 冷启动 0C00h
暖启动 0C02h(2)
芯片 ID 地址 0FF0h
芯片 ID 数据 F227h 2955h 2553h 255Ch
BSL 版本地址 0FFAh
BSL 版本数据 0202h 0203h
读取和写入访问地址 0000h 至 00FFh 字节
0100h 至 FFFEh
写入时验证(在线) 地址0200h 至 FFFEh
擦除校验命令 是(错误地址 0200h)
擦除段命令 带有擦除验证(错误地址 0200h)
TX 识别命令 支持
更改波特率命令 支持
堆栈指针初始化 冷启动 0220h
暖启动 未更改
BSL 所使用的资源
发送引脚 (TX) P1.1 P1.1
接收引脚 (RX) P2.2 P1.5
所使用的 RAM 堆栈 0200h 至 021Fh
工作寄存器 R5 至 R14
系统时钟,受影响的控件 BCSCTL1,DCOCTL
Timer_A,受影响的控件 TACTL,TAR,CCTL0,CCR0
为软件调用所做的准备
mov.b #00h, &BCSCTL2
mov #00h, SR
br &0C00h
注释 擦除段命令 连续验证地址 1000h 至 11FFh(五个段)。也使用擦除校验命令。
并非所有Value Line器件都包含 BSL;请参阅器件特定数据表。
在进入BSL之前,用户应用必须清除LOCK 和 LOCKA 位:
mov.w #FWKEY+LOCKA,&FCTL3
表 5-8 FG46xx、F471xx 上的 BSL 版本 2.12 和 2.13
器件 FG46xx F471xx
BSL 版本 2.12 2.13
BSL 矢量地址 冷启动 0C00h
暖启动 0C02h(1)
芯片 ID 地址 0FF0h
芯片 ID 数据 F46Fh
BSL 版本地址 0FFAh
BSL 版本数据 0212h 0213h
批量擦除时间,额定值 (ms) 206.4
读取和写入访问地址 0000h 至 00FFh 字节
0100h 至 FFFEh
写入时验证(在线) 地址0200h 至 FFFEh
擦除校验命令 是(错误地址 0200h)
擦除段命令 带有擦除验证的擦除段命令(错误地址 0200h)
TX 识别命令 支持
更改波特率命令 支持
堆栈指针初始化 冷启动 0224h
暖启动 未更改
BSL 所使用的资源
发送引脚 (TX) P1.0
接收引脚 (RX) P1.1
所使用的 RAM 堆栈 0200h 至 0223h
工作寄存器 R4 至 R15
系统时钟,受影响的控件 SCFI0,SCFI1,SCFQCTL
Timer_A,受影响的控件 TACTL,TAR,CCTL0,CCR0
为软件调用所做的准备
mov.b  #00h, &FLLCTL1
br     &0C00h
注释 擦除段命令 连续验证地址 1000h 至 11FFh (五个段)。也使用擦除校验命令。
在进入BSL之前,用户应用必须清除LOCK 和 LOCKA 位:
mov.w #FWKEY+LOCKA,&FCTL3