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

写入闪存范围

若要将数据写入闪存存储器,可使用 SBL 函数 writeFlashRangewriteFlashRange 会将 CMD_DOWNLOAD 命令连同起始地址和下载大小(以字节为单位)发送到引导加载程序。之后,引导加载程序便可接收指定数量的数据并将数据从指定地址开始写入闪存。

要传输数据,请使用 CMD_SEND_DATA 命令。每个 CMD_SEND_DATA 命令最多可传输 252 字节的数据。如果要下载的数据大于 252 字节,则必须重复使用 CMD_SEND_DATA 命令。SBL writeFlashRange 函数负责将数据传输拆分为多个 CMD_SEND_DATA 命令。

CMD_DOWNLOAD 命令和每个 CMD_SEND_DATA 命令之后,使用 CMD_GET_STATUS 命令来读取引导加载程序的状态。这是为了确保起始地址和固件大小有效,并且数据已成功编程到闪存中。如果状态指示错误,引导加载程序的内部地址指针不会递增,从而允许重新传输数据。

对于 CC13x4 或 CC26x4 器件系列,CCFG 位于主闪存之外。这意味着需要 SBL writeFlashRange 函数的两次迭代;一次用于应用二进制,另一次用于 CCFG 二进制。

图 4-7 演示了使用 SBL 函数 writeFlashRange 的闪存写入序列。

 闪存写入的序列图表图 4-7 闪存写入的序列图表