@kezhen
2015-08-18T03:36:40.000000Z
字数 1352
阅读 2634
SUOTA
DA14580 SDK 提供DEMO(包括发送和接收)进行空中升级(SUOTA)。空中升级指的是通过蓝牙智能链接Bluetooth Smart Link(BSL)分发进行升级。SUOTA service可以实现此功能。这个服务基于我们在软件协议栈中实现的具有专利的SPOTA(Software Patch Over The Air service)。SPOTA被实例化作为一个GATT主服务。一个设备的这个主服务只有一个实例。这个主服务定义了两种角色,向外暴露了一个主控制点允许同类型设备去初始化SUOTA。 SPOTA发起者是传送新软件镜像文件的终端。它是SPOTA service的GATT Client(GAP Central Role)SPOTA 接收者是接收新软件镜像,存储到外部的非易失性存储器并执行软件镜像的终端。它是SPOTA service的GATT Server(GAP Peripheral Role)DA14580 SDK包括了一个接收器应用程序(和反馈接近),它使用SPOTA profile来: BSL发来的新软件镜像。1. 发起者(i.e. SmartSnippets)扫描设备的SPOTA service并建立连接。2. 发起者写特性值SPOTA_MEM_DEV来表明它希望开始一个SUOTA会话并设置镜像块的更新状态。3. 发起者写SPOTA_GPIO_MAP来配置接收者,根据外部存储器类型(FLASH OR EEPROM)来设置SPI抑或是I2C,分别地。4. 发起者写特性SPOTA_PATCH_LEN来指定块长度,以此来告诉接收者镜像的数据块长度。接收者必须提供SRAM的缓存空间来存储块数据,否则返回错误代码。5. 发起者使用SPOTA_PATCH_DATA特性开始发送镜像数据。在接收者方,接收到的包被存储到SRAM中。前面64个字节数据接收完毕后,接收者验证新镜像的正确性。如果是正确的,找到镜像块的起始地址并给予更新(1st,2nd或older依据发起者的偏好设置),否则返回错误代码给发起者。6. 在应用程序级上,发起者计数接收到的镜像数据长度。当接收到的数据长度等于发起者定义的块长度(在第4步中设置),镜像数据被存储到外部的非易失性存储(FLASH/EEPROM device)。7. 重复执行第5步和第6步直到整个镜像文件被发送。发起者发送经过全面循环冗余码校验的最后一个数据包。8. 接收者验证CRC,设置有效的镜像标志并重启系统。一个双重镜像引导程序发现并执行有效的(最后一次验证有效的镜像文件)镜像文件。