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]