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

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
  5. 2ROM 引导加载程序
    1. 2.1 配置引导加载程序
      1. 2.1.1 CC2538
      2. 2.1.2 CC13x0、CC26x0
      3. 2.1.3 CC13x1x3、CC26x1x3
      4. 2.1.4 CC13x2、CC26x2
      5. 2.1.5 CC13x4、CC26x4
    2. 2.2 通信协议
      1. 2.2.1 ACK 或 NACK
    3. 2.3 接口配置
      1. 2.3.1 硬件引脚
      2. 2.3.2 UART 配置
      3. 2.3.3 建立通信
      4. 2.3.4 状态命令
  6. 3Serial Bootloader Library (SBL)
    1. 3.1 SBL 返回值
    2. 3.2 SBL API
  7. 4示例项目
    1. 4.1 硬件设置
      1. 4.1.1 LaunchPad™ 开发套件虚拟 COM 端口
      2. 4.1.2 SmartRF06EB 虚拟 COM 端口
        1. 4.1.2.1 外部串行接口
      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 Connect
      4. 4.3.4 擦除闪存范围
      5. 4.3.5 写入闪存范围
      6. 4.3.6 计算 CRC32
      7. 4.3.7 复位
  8. 5参考资料
  9. 6修订历史记录

计算 CRC32

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

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

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

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

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

 CRC32 命令的序列图表图 4-8 CRC32 命令的序列图表