乐哈哈yoyo 发表于 2019-3-11 16:26:27

CYPRESS BLE OTA详细介绍

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功能将升级文件发送到蓝牙设备


页: [1]
查看完整版本: CYPRESS BLE OTA详细介绍