51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6752|回复: 0
打印 上一主题 下一主题

CYPRESS BLE OTA详细介绍

[复制链接]
  • TA的每日心情
    无聊
    2024-7-12 13:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2019-3-11 16:26:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1     原理介绍

    CYPRESS BLE OTA原理,相当于在一个内存空间里运行了两套软件代码,Bootloader代码和Bootloadable代码。

    两者之间的关系,Bootloader是一套可以用来给Bootloadable进行升级的软件。

    Bootloader通常是固定不变的,只负责升级功能;而Bootloadable相当于一个添加了Bootloadable功能应用程序,而可以通过OTA方式烧写到设备中。

    CYPRESS BLE OTA可以支持三种方式的升级,分别为:使用外部存储设备OTA升级,固定协议栈OTA升级,可升级协议栈OTA升级,三种方式分别有不同的优缺点。






    2     操作流程

    根据项目的实际情况,我们选择固定栈区OTA升级试。

    下面的操作流程,实现了将一个独立的应用程序工程改造为一个可以通过OTA升级的Bootloadable工程。(以下操作是运行在CY8CKIT-042-BLE 开发板上)

    1)      在PSOC Creater中打开官方例程BLE_Shared_Memory_Bootloader,同时建立一新的workspace:BLE_Shared_Memory_Bootloader01

    2)      在当前workspace中添加官方例程BLE_Shared_Memory_Bootloadable

    3)      将用户自己的工程如:BL1001-base复制并添加到workspace文件夹中

    4)      将BLE_Shared_Memory_Bootloadable01工程文件夹中的LinkerScripts文件夹复制到BL1001-base工程根目录

    5)      将BLE_Shared_Memory_Bootloadable01工程文件夹中SharedBleHeader.h、SharedProjectAPI.h、BtldrSramInit.c头复制到BL1001-base工程根目录

    6)      在BL1001-base工程中添加文件SharedBleHeader.h、SharedProjectAPI.h、BtldrSramInit.c,在main()函数最开始添加代码:

    #if !defined(__ARMCC_VERSION)

       InitializeBootloaderSRAM();

    #endif

    7)      导出BL1001-base工程BLE组件的配置信息,保存为一个后缀名为xml(如:CYBLE_Configuration.ble.xml)配置文件,然后删掉BLE组件

    8)      在BLE_Shared_Memory_Bootloader工程中的BLE组件导入上一步中保存的配置文件

    9)      在BLE_Shared_Memory_Bootloader工程中的BLE组件中添加bootloader服务,修改bootloader->command->data值为137

    10)   在BL1001-base工程中添加LinkerScirpts文件夹,同时添加文件夹内的文件cm0gcc.ld、Cm0Iar.icf、Cm0Mdk.scat

    11)   修改BL1001-base工程Build Settings->Toolchain为ARM GCC4.8.4

    12)   添加BL1001-base->ARM GCC 4.8.4->Linker->General->AdditionalLibrary Directorties 属性路径“.\LinkerScripts”

    13)   添加BL1001-base->ARM GCC 4.8.4->Linker->General->CustomLinker Script 属性“.\LinkerScripts\cm0gcc.ld”

    14)   修改BL1001-base->ARM GCC 4.8.4->Linker->Optimization属性为FALSE

    15)   修改BLE_Shared_Memory_Bootloader工程中的mk.bat文件,修改项如下:

    16) set LOADER_PRJ_NAME=BLE_Shared_Memory_Bootloader01:此处应为Bootloader工程名称

    17) set LOADABLE_PRJ_NAME=BL1001-base:此处应为Bootloadable(即用户工程)名称

    18) set UTILS_NM=c:\ProgramFiles (x86)\Cypress\PSoC Creator\3.2\PSoCCreator\import\gnu\arm\4.8.4\bin\arm-none-eabi-nm.exe:此处应为PSOC Creater实际安装目录相对应

    19)   运行BLE_Shared_Memory_Bootloader工程中mk.bat批处理文件,确认以下生成信息

    Parsing ELFfile...

    Filteringexported symbols ...

    Filtering bysection list ...

    Sorting byaddress ...

    Generatingoutput file(s) ...

    请按任意键继续. . .

    如果出现错误信息,按信息提示修改为正确的配置

    20)   编译整个工作空间,如果出现编译错误,修改相应的错误项

    21)   在BL1001-base工程TopDesign.cysch文件中添加组件Bootloadable,双击组件,打开属性界面,在Dependencies选项卡中,第一栏Browse框选中..\BLE_Shared_Memory_Bootloader01.cydsn\CortexM0\ARM_GCC_484\Debug\BLE_Shared_Memory_Bootloader01.hex,第二栏Browse选中..\BLE_Shared_Memory_Bootloader01.cydsn\CortexM0\ARM_GCC_484\Debug\BLE_Shared_Memory_Bootloader01.elf

    22)   编译整个工作空间,如果出现编译错误,修改相应的错误项

    23)   在BL1001-base工程中的BL1001-base.cydsn\CortexM0\ARM_GCC_484\Debug\BL1001-base.cyacd文件,即为可以发布的升级文件

    3     应用开发要注意的事项

    1)      用户应用程序中必需有进入Bootloader的入口,即在指定的条件下调用Bootloadable_Load()函数进入Bootloader,如:例程中的进入方式是按下SW2按键。

    2)      用户应用开发时可以按正常的开发流程,但修改为Bootloadable工程时,需要将工程里的ble组件删掉,同时在头文件里声明用到的BLE接口API和BLE数据类型及定义

    3)      对Bootloader工程进行修改后,必需重新运行一次mk.bat文件,否则可能会导致升级后的Bootloadable工程无法运行

    4     手机APP

    参照官方CySmart APP源代码,调用手机BLEOTA功能将升级文件发送到蓝牙设备


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-21 18:55 , Processed in 0.062966 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表