@kezhen
2015-08-18T03:36:40.000000Z
字数 1352
阅读 2342
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
,设置有效的镜像标志并重启系统。一个双重镜像引导程序发现并执行有效的(最后一次验证有效的镜像文件)镜像文件。