远程升级

青莲云提供安全的设备远程升级服务,可支持整机器固件升级和系统补丁升级操作。其中,固件升级完成后,需设备端执行重启操作,并以高版本固件重新连接云平台;补丁升级完成后,需告知云平台补丁升级状态。


固件升级

具体流程,请参考ota升级文档《青莲云OTA升级操作流程》及本小节内容进行实现。

设置ota属性


iot_s32  iot_ota_option_set ( iot_u32  expect_time ,  iot_u32  chunk_size );
参数             说明
expect_time 期望升级倒计时,单位秒,范围120-3600
chunk_size 云端会将固件按chunk_size分块,分块后一次下发一块。
2的n次幂,范围256-1048576,默认1024
返回值 0:设置属性成功,可在log中查看实际升级时间
-1:失败,参数错误


ota固件信息


void iot_ota_info_cb ( char name[16],iot_u32 total_len,char version[6],iot_u16 file_crc)
参数             说明
name 待升级固件名称
version 待升级固件版本,"xx.xx",0≤x≤9
total_len 待升级固件文件总大小,单位字节
file_crc 待升级固件文件crc


接收固件数据块


参考5.3节,chunk_stat为OTA数据块的情况。


接收升级指令


收到此命令,重启,运行新版本固件。回调函数中不可执行太多耗时代码。

    void iot_ota_upgrade_cb( void );



补丁升级

补丁信息


设备定时查询云端是否有新补丁发布,自动调用此函数。

void iot_patchs_list_cb( iot_s32 count,  patchs_list_t patchs[ ] );
参数             说明
count 云端已发布,本设备未升级的补丁数量,范围0-n
patchs 补丁信息结构体,如已发布多个补丁,将以列表形式展示
typedef struct patchs_list{

    char    * name;         //补丁名称

    char    * version;      //补丁版本

    iot_u32   total_len;    //补丁文件总大小

}patchs_list_t;


获取补丁


收到补丁列表后,请调用此函数,请求需要升级的补丁文件。

iot_s32 iot_patch_req( char name[16], char version[16] );
参数             说明
name 欲升级的补丁名称
version 补丁版本,格式自定义
返回值 0:成功,可在5.3节中收到补丁数据块
-1:失败,参数错误


接收补丁数据块


参考5.3节,chunk_stat为补丁数据块的情况。


补丁状态上报


补丁升级结束后,调用此函数告知云端完成状态。

iot_s32 iot_patch_end ( const char name[16],  const char version[16],  DEV_STATUS_T patch_state );
参数             说明
name 升级补丁的名称
version 升级补丁的版本
patch_state 升级补丁的结束状态
DEV_STA_PATCH_FAILED(13) :失败
DEV_STA_PATCH_SUCCESS(14):成功


接收数据块接口


sdk自动调用该函数,接受云端发来的数据块,收到后需更新本地固件或补丁。回调函数中不可执行太多耗时代码。

iot_s32 iot_chunk_cb( iot_u8  chunk_stat,  iot_u32        chunk_offset,
                      iot_u32 chunk_size,  const iot_s8*  chunk );
参数             说明
chunk_stat 高四位代表chunk的类型:0:OTA数据块;1:补丁数据块低四位代表chunk是否是最后一个分块:0:不是最后一个分块;1:是最后一个分块,固件传输结束
chunk_offset 本数据块相对于完整固件的偏移量即,第一个数据块,此参数值是0
chunk_size 本数据块的长度
chunk 固件数据块
返回值 0:写入固件块成功
-1:写入固件块失败
Copyright & copy qinglianyun all right reserved,powered by Gitbook该文件修订时间: 2021-04-22 18:53:48

results matching ""

    No results matching ""