BLE-CC2640R2F-(01)off-oad片外空中升级

1    简介

以OAD-offchip为例,介绍如何将OAD升级移植到自己的产品中。

基础例程:simplelink_cc2640r2_sdk_1_30_00_25官方例程OAD-OFFCHIP

路径C:\TI\simplelink_cc2640r2_sdk_1_30_00_25\examples\rtos\CC2640R2_LAUNCHXL\blestack\simple_peripheral_oad_offchip

2    实验平台

2.1  协议栈版本:simplelink_cc2640r2_sdk_1_30_00_25.exe

2.2  编译软件:CCS7.1.0.16

2.3  硬件平台:TI官方cc2640 LaunchPad

2.4  仿真器:XDS110

2.5  手机:iphone6

2.6  APP:lightBlue、TI SimpleLinkStarter

3    实验前提

4    基础知识

4.1  什么是OAD?

答、即空中升级,通过蓝牙给MCU升级软件

4.2  什么是片外OAD?

答、片外flash空中升级,通过蓝牙将升级包下载到片外flash,重启mcu将下载到片外flash的升级包拷贝的片内flash中。

4.3  片外OAD的原理

4.3.1 工程介绍

片外OAD的例程中有三个工程,分别是:

bim_oad_offchip_cc2640r2lp_app                                       简称为BIM工程

simple_peripheral_cc2640r2lp_app_oad_offchip            简称为APP工程

simple_peripheral_cc2640r2lp_stack_oad_offchip         简称为STACK工程

 

BIM工程,是上电执行的第一个工程,在此工程中检查外部flash是否有等待加载入内部flash的image。如果有,则从外部flash加载image;如果没有,则直接跳到APP工程。

APP工程,我们的主要工作是在APP工程完成,我们在APP工程中创建任务,实现所有与功能相关的内容。APP工程在需要使用到STACK实现的相关功能时,就会调用STACK工程的相关内容。所以要想APP工程正常运行mcu必须先加载STACK工程。

STACK工程,实现蓝牙协议栈和ICALL底层相关内容,例如snv_flash(内部flash)就是在这个工程中实现,单独加载STACK工程run不会有什么作用,stack工程的作用是被APP工程调用。

调试的顺序应为,先下载BIM工程,在下载STACK工程,最后APP工程。

注意:有时调试APP工程会造成STACK工程损坏,可以使用flashprogrammer2工具readback回来比对一下,这时候需要重新烧录STACK工程mcu才可以正常工作。

4.3.2 升级过程

过程1:下载升级包

CC2640R2F运行在APP模式,手机APP通过蓝牙将升级包发送给CC2640R2F,CC2640R2F将升级包存储在外部flash中。

过程2:拷贝升级包

CC2640R2F在APP模式下载完升级包完成后,手机APP发送重启命令给CC2640R2F,CC2640R2F重启进入BIM模式,在BIM模式下检查外部flash的升级包是否完整,若完整,则将升级包拷贝到CC2640R2F的APP部分并将旧版本APP覆盖。

过程3:跳转进入APP,升级完成

CC2640R2F将升级包拷贝APP覆盖掉旧版本APP后,跳转进入APP模式,升级完成,可以连接CC2640R2F验证升级是否成功。

5    试验步骤

5.1  修改BIM工程

5.1.1 屏蔽掉startup_ccs.c中的SetupTrimDevice()。

在调试模式这一步无法正常运行,会卡在其中的一个芯片检测步骤,官方的原版例程应该有bug,只要将这一句屏蔽即可。

5.1.2 修改外部flash引脚定义,bsp.h文件中

将:

#defineBSP_IOID_FLASH_CS       IOID_20

#defineBSP_SPI_MOSI            IOID_9

#defineBSP_SPI_MISO            IOID_8

#defineBSP_SPI_CLK_FLASH       IOID_10

修改为:

#defineBSP_IOID_FLASH_CS       IOID_7 //IOID_20

#defineBSP_SPI_MOSI            IOID_4//IOID_9

#defineBSP_SPI_MISO            IOID_6//IOID_8

#defineBSP_SPI_CLK_FLASH       IOID_5//IOID_10

注意:修改后的引脚不要与其他引脚重复定义。

BLE-CC2640R2F-(01)off-oad片外空中升级_第1张图片

5.1.3 增加flash芯片型号定义

在ext_flash.c中的

        {

            .manfId = 0x0,

            .devId = 0x0,

            .deviceSize = 0x0

        }

前面增加

    {

        .manfId = 0x01,         // add our flash

        .devId = 0x14,

        .deviceSize = 0x200000  // 2 MByte (16Mbit)

        },

其中manfId、devId、deviceSize的值要根据你产品中使用的外部flash型号而修改。具体的值参照外部flash芯片手册。

BLE-CC2640R2F-(01)off-oad片外空中升级_第2张图片

5.2  修改APP工程

5.2.1 修改外部flash引脚定义

BLE-CC2640R2F-(01)off-oad片外空中升级_第3张图片

5.2.2 增加flash芯片型号定义

BLE-CC2640R2F-(01)off-oad片外空中升级_第4张图片

1.1  进行升级试验

1、将BIM、APP、STACK工程烧录到cc2640r2f中,使用lightBlue可以看到名称为SimplePerihperal的蓝牙。

2、修改APP中的蓝牙名称,如下图:

将名称修改为HamplePerihperal,编译。在工作目录下找到simple_peripheral_cc2640r2lp_app_oad_offchip.bin,这是用于空中升级的文件。将bin文件传到iPhone手机中,并用TI simplelink starter打开bin文件,连接后进行升级,升级完成需要重启手机蓝牙,使用lightBlue查看可以查看到HamplePerihperal名称的蓝牙(需要连接该蓝牙,并在ADVERTISEMENT DATA中点Show查看蓝牙名字)。

 BLE-CC2640R2F-(01)off-oad片外空中升级_第5张图片

 

参考文档:

file:///C:/ti/simplelink_cc2640r2_sdk_1_30_00_25/docs/blestack/ble_sw_dev_guide/html/oad/oad.html#off-chip-oad


你可能感兴趣的:(BLE-cc2640r2)