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

写入闪存范围

若要将数据写入闪存存储器,可使用 SBL 函数 writeFlashRange;此函数会将 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 命令来读取引导加载程序的状态。这是为了确保起始地址和固件大小有效,并且数据已成功编程到闪存中。如果状态指示错误,引导加载程序的内部地址指针不会递增,从而允许重新传输数据。

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

GUID-1598A1FE-9F0C-48D5-9057-EDD0EF18110C-low.gif图 4-6 闪存写入的序列图表