【CC2640R2】CC2640R2F OAD 用户指导

参考链接:CC2640R2F DFU/OAD User Guide

一、OAD空中升级:

该部分是TI OAD升级系统的服务指南,内容主要包括:用户规范规格说明、应用程序架 构、驱动程序以及中间件。OAD是一种设备固件升级的方式,允许通过BLE低功耗蓝牙连接的时候更新运行在一个设备上的固件镜像,同时支持掉电保护功能。

该指南介绍了OAD过程的升级原理,SimpleLink CC2640R2 SDK中包含的开箱即用示例以及将OAD添加到现有项目的过程。

警告:

使用CC26xx嵌入 式ROM串行引导加载程序(SBL)通过串行(UART或SPI)连接从主机MCU更新设备固件,在应用笔记CC2538/CC26xx Bootloader Interface (SWRA466)中有介绍

二、指南范围:

在OAD引导部分将包括:

  • OAD操作和架构理论
  • 如何运行SimpleLink CC2640R2 SDK中包含的OAD示例
  • 如何将OAD添加到现有的示例应用程序

三、实验条件:

IAR版本: ARM 7.80.4
BLE协议栈版本:simplelink_cc2640r2_sdk_1_30_00_25
硬件:CC2640R2F 7mm × 7mm RGZ VQFN48 封装(31 个GPIO)

四、概念

OAD概念概述

本节旨在从更高角度解释OAD过程中涉及的主要概念。这些概念将在以下部分进一步扩展说明。一些概念,例如引导映像管理程序(BIM),可能会在实现细节上有所不同。在可能的范围内,这些概念将在本章中讨论,其实现细节将在以下章节中介绍。

OAD类型

实现空中下载更新有两种方法:片上和片外。两种方法的关键区别在于被升级OAD镜像的位置。在片内OAD中,下载的图像被写入内部Flash,允许使用单芯片OAD解决方案。片外OAD将下载的图像存储在外部闪存部分,需要双芯片OAD解决方案。下图显示了不同OAD方法的比较。每种类型的OAD都有相关的权衡和利益,这些权益将在各自的章节中进行讨论。尽管它们有差异,但是这两个OAD方法在本节中描述的空中配置文件和元数据向量相同。

OAD类型 优点 限制
片内 不需要外部的flash 应用程序的大小会限制更新
片外 能过存储多/备份镜像的全应用程序+引用程序更新以及最大应用程序的大小 需要低功耗的外部flash

OAD拓扑概述

实施OAD自定义GATT服务需要两个具有BLE功能的设备。OAD过程需要的设备如下:

  • OAD Target :OAD 目标文件

    The device whose firmware is being upgraded over the air. This is assumed to be a CC26xx device running the TI OAD service.
    OAD Target App also refers to the Image A project for on-chip OAD applications

  • OAD Downloader:OAD 下载器

    The device responsible for accepting an OAD enabled image from the compiler and transferring it over the air to the OAD target.

OAD Target 设备是 实现OAD服务的GATT服务器端。这通常是正在进行更新设备的外设。OAD Target 使用 Boot Image Manager (BIM) 来帮助新固件的应用程序更新固件。BIM在复位的时候会去判断哪一个image会运行。。如果没有更新的image,则BIM直接跳转到主应用程序image。BIM的行为取决于OAD的类别,接下来会进一步描述片内和片外。

该OAD Downloader设备是一个OAD服务GATT客户端。通常这是提供固件更新image的中心设备。 下图显示了OAD传输所需的设备的图形关系。OAD Downloader可以兼容任何荣设备满足最低要求的OAD 服务。

所有提供的TI示例应用程序(BTool,移动应用程序等)都被实现,使得OAD Target是外围设备,OAD下载器是一个中央设备。如果是其他配置将会超出本文档的范围。

OAD image 元数据

通过OAD升级的所有固件image均为二进制格式,并包含image元数据头。OAD服务使用元数据头中的信息来确定image是否可以被download,或由BIM确定哪个image应该被加载/运行在主系统flash中。为了防止此信息多次计算,所有TI OAD映像都使用标准的16字节元数据向量。该元数据向量嵌入到图像的开始处,占用前16个字节的应用程序代码固件内容。

本部分将介绍元数据向量中的各个字段及其含义。以下部分将介绍每个字段如何专门用于片上和片外OAD。

大多数元数据校验是在OADTarget_validateNewImage() 函数中完成的。

下面的表显示了元数据向量的描述。

Field Size (in bytes) Description
CRC 2 循环冗余校验
CRC Shadow 2 Place holder for CRC
Version 2 版本
Length 2 word长度
UID 4 用户识别
Start Address 2 Image按word*存储目标地址
Image Type 1 当前Image的类型
State 1 当前Image的状态

[*]这些字段以32位字测量。

例如,0x100的图像长度描述了大小为1024字节的image。该OAD字大小由EFL_OAD_ADDR_RESOLUTION片外OAD和 HAL_FLASH_WORD_SIZE片上OAD定义。

你可能感兴趣的:(cc2640)