ZHCAAO2D February   2015  – August 2021 CC1310 , CC1352R , CC2538 , CC2620 , CC2630 , CC2640 , CC2640R2F , CC2640R2F-Q1 , CC2642R , CC2642R-Q1 , CC2650 , CC2650MODA , CC2652R , CC2652R7 , CC2652RB , CC2652RSIP

 

  1.   商标
  2. 1引言
  3. 2ROM 引导加载程序
    1. 2.1 配置引导加载程序
      1. 2.1.1 CC2538
      2. 2.1.2 CC26x0
    2. 2.2 CC26x2
    3. 2.3 通信协议
      1. 2.3.1 ACK/NACK
    4. 2.4 接口配置
      1. 2.4.1 硬件引脚
      2. 2.4.2 UART 配置
      3. 2.4.3 建立通信
      4. 2.4.4 状态命令
  4. 3Serial Bootloader Library (SBL)
    1. 3.1 SBL 返回值
    2. 3.2 SBL API
      1. 3.2.1 器件特定函数
  5. 4示例项目
    1. 4.1 硬件设置
      1. 4.1.1 SmartRF06EB 虚拟 COM 端口
        1. 4.1.1.1 外部串行接口
      2. 4.1.2 LaunchPad 虚拟 COM 端口
      3. 4.1.3 引导加载程序后门
    2. 4.2 软件设置
      1. 4.2.1 器件类型
      2. 4.2.2 波特率
    3. 4.3 程序流程
      1. 4.3.1 枚举 COM 端口
      2. 4.3.2 创建器件
      3. 4.3.3 连接
      4. 4.3.4 擦除闪存范围
      5. 4.3.5 写入闪存范围
      6. 4.3.6 计算 CRC32
      7. 4.3.7 复位
  6. 5参考文献
  7. 6修订历史记录

计算 CRC32

为了验证固件是否已成功编程到闪存存储器中,可以使用 SBL 函数 calculateCrc32 从引导加载程序中获取闪存存储器指定部分的 CRC32 校验和。calculateCrc32 函数使用命令 CMD_CRC32 以及会包含在 CRC32 校验和中的起始地址和字节数。

对于 CC26x0 和 CC26x2,引导加载程序还需要读取重复计数。将此设置为 0x00000000 可确保数据位置仅被读取一次。

CC2538、CC26x0 和 CC26x2 引导加载程序使用 CRC-32-IEEE 802.3 通过以下多项式来计算 CRC 校验和。

CRC32poly = x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1

在 SBL 示例工程中包含了有关如何使用 CRC32poly 来计算校验和的示例。calculateCrc32 函数的序列图表如图 4-7 所示。

GUID-31495E5D-6366-43FF-8C42-6D9685509E2D-low.gif图 4-7 CRC32 命令的序列图表