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

擦除闪存范围

eraseFlashRange 函数对 CC2538 使用引导加载程序命令 CMD_ERASE,对 CC26x0 和 CC26x2 使用 CMD_SECTOR_ERASE。

CC26x0 和 CC26x2 CMD_SECTOR_ERASE 采用地址参数并擦除该地址所在的闪存扇区(CC26x0 器件为 4KB,CC26x2 器件为 8KB)。

CC2538 CMD_ERASE 命令需要另一个用于指定擦除大小的参数。CC2538 引导加载程序会擦除 [地址, 地址 + 大小] 范围覆盖的闪存扇区 (2KB)。

在每个引导加载程序擦除命令之后,eraseFlashRange 使用 CMD_GET_STATUS 命令来检查引导加载程序状态。

图 4-5 所示为使用串行引导加载程序协议进行闪存擦除的序列图表。命令中的最后四个字节 (datasize) 特定于 CC2538。对于 CC26x0 和 CC26x2,必须为要擦除的每个闪存扇区重复使用 CMD_SECTOR_ERASE 命令(以及随后的 CMD_GET_STATUS)。

GUID-02076DBE-6F5F-41F6-8DA4-F5C30C696567-low.gif图 4-5 闪存扇区擦除的序列图表

如果要擦除 CC26x0 和 CC26x2 上的整个闪存存储器,则应使用 CMD_BANK_ERASE 命令。这将在一次操作中擦除整个闪存存储器,比单独删除各个扇区要快。