WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
upg_common.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2021-2021. All rights reserved.
3 * Description: UPG common functions header file
4 */
5
6#ifndef UPG_COMMON_H
7#define UPG_COMMON_H
8
9#include <stdint.h>
10#include <stdbool.h>
11#include "errcode.h"
12#include "common_def.h"
13#include "partition.h"
14#include "upg.h"
15#include "upg_definitions.h"
16
17#ifdef __cplusplus
18#if __cplusplus
19extern "C" {
20#endif
21#endif
22
23static inline uint32_t upg_aligned(uint32_t len, uint32_t align)
24{
25 return ((uint32_t)(len) + ((align) - 1)) & ~((align) - 1);
26}
27
28/**** upg_commom ****/
30
31/*
32 * 获取在当前Flash上指定固件镜像的地址信息。该地址为flash上的相对地址,是相对flash基地址的偏移
33 * image_id 固件的镜像ID
34 * start_address 返回该镜像的起始地址
35 * size 返回该镜像区域的大小
36 */
37errcode_t upg_get_partition_info(uint32_t image_id, uint32_t *start_address, uint32_t *size);
38
39/*
40 * 获取指定固件镜像的地址信息。
41 * image_id 固件的镜像ID
42 * image_info 返回该镜像的信息
43 */
44errcode_t upg_get_image_info(uint32_t image_id, partition_information_t *image_info);
45
46/*
47 * 读取升级包中的数据到buffer中
48 * read_offset 相对升级包起始的偏移
49 * buffer 读取数据buffer指针
50 * read_len 输入buffer的长度,输出实际读到的数据长度
51 */
52errcode_t upg_read_fota_pkg_data(uint32_t read_offset, uint8_t *buffer, uint32_t *read_len);
53
54/* 获取升级标记结构到RAM中 */
56
57/*
58 * 获取升级包包头结构指针
59 * pkg_header 返回升级包头结构指针,指针指向的空间在函数内分配,需要使用者使用完后调用upg_free释放。
60 * (如果采用直接访问flash的方式,返回升级包头所在的flash地址)
61 */
63
64/*
65 * 获取镜像哈希表结构指针
66 * pkg_header 升级包头结构指针
67 * img_hash_table 返回对应的升级镜像HASH表头指针,指针指向的空间在函数内分配,需要使用者使用完后调用upg_free释放。
68 * (如果采用直接访问flash的方式,返回升级镜像哈希表所在的flash地址)
69 */
71 upg_image_hash_node_t **img_hash_table);
72
73/*
74 * 获取升级镜像的头结构指针
75 * img_hash_table 升级镜像HASH表节点指针
76 * img_header 返回对应的升级镜像头指针,指针指向的空间在函数内分配,需要使用者使用完后调用upg_free释放。
77 * (如果采用直接访问flash的方式,返回镜像头所在的flash地址)
78 */
80
81/*
82 * 获取升级镜像的数据指针
83 * img_header 升级镜像头结构指针
84 * data_offset 相对升级镜像数据开头的偏移
85 * data_len 输出要获取数据的长度,输出实际获取到的数据长度
86 * img_data 返回升级镜像数据的指针,指针指向的空间在函数内分配,需要使用者使用完后调用upg_free释放。
87 * (如果采用直接访问flash的方式,返回数据所在的flash地址)
88 */
90 uint32_t data_offset, uint32_t *data_len, uint8_t **img_data);
91
92/*
93 * 拷贝升级镜像指定范围的数据至buffer中
94 * img_header 升级镜像头结构指针
95 * data_offset 相对升级镜像数据开头的偏移
96 * data_len 输入要拷贝的数据的长度,输出实际拷贝的数据长度
97 * img_data 保存数据的buffer指针,buffer的空间需要使用者分配
98 */
100 uint32_t data_offset, uint32_t *data_len, uint8_t *img_data);
101
102/*
103 * 将buffer中的数据写入指定image_id的镜像所在的地址上
104 * write_offset 相对镜像起始地址的偏移
105 * buffer 写入数据的buffer指针
106 * write_len 输入buffer的长度,输出实际写入的数据长度
107 * image_id 镜像的ID
108 * do_erase 是否执行写前擦
109 */
110errcode_t upg_write_new_image_data(uint32_t write_offset, uint8_t *buffer, uint32_t *write_len, uint32_t image_id,
111 bool do_erase);
112
113/*
114 * 从指定image_id的镜像所在的地址上读取数据到buffer中
115 * write_offset 相对镜像起始地址的偏移
116 * buffer 存储数据的buffer指针
117 * write_len buffer的长度
118 * image_id 镜像的ID
119 */
120errcode_t upg_read_old_image_data(uint32_t read_offset, uint8_t *buffer, uint32_t *read_len, uint32_t image_id);
121
122/*
123 * 获取升级包中的升级镜像的升级标记状态(NOT_STARTED/STARTED/RETRY/FINISHED)
124 * firmware_index为升级包中的固件(除NV之外的镜像)的序号
125 * 如升级包中包含 固件0、固件1、固件2、NV、固件3,其中固件3的序号为3而不是4
126 * 如为NV镜像,firmware_index参数可忽略
127 */
129 uint32_t firmware_index, uint32_t image_id);
130
131/*
132 * 设置指定固件(不包含NV)的升级标记(STARTED/RETRY/FINISHED)
133 * firmware_index为升级包中的固件(除NV之外的镜像)的序号
134 * 如升级包中包含 固件0、固件1、固件2、NV、固件3,其中固件3的序号为3而不是4
135 */
137 uint32_t firmware_index, upg_image_status_switch_t switch_status);
139
140/* 擦除metadata数据区 */
142
143/* 设置升级结果(临时保存) */
145
146/* 获取临时保存的升级结果 */
148
149/* 检查是否所有镜像都已完成升级(包括升级失败但是已尝试最大次数) */
150bool upg_check_image_update_complete(const fota_upgrade_flag_area_t *upg_flag, uint32_t image_num);
151
152/* 将升级结果保存至Flash升级标记区 */
154
155/* 设置升级完成标记 */
156void upg_set_complete_flag(uint32_t image_num, errcode_t result, bool direct_finish);
157
158/* 获取注册函数列表 */
160
161/* update模块是否已经初始化 */
162bool upg_is_inited(void);
163
164/* 镜像是否在当前程序支持升级 */
165bool upg_img_in_set(uint32_t img_id);
166
167/**** upg_process ****/
168/* 计算升级进度并通知上层 */
169void upg_calculate_and_notify_process(uint32_t current_size);
170
171
172/**** upg_upgrade ****/
173/* FOTA压缩升级 */
175
176/* FOTA差分升级 */
178
179/* FOTA全镜像升级 */
181
182/* 防回滚号校验 */
184 const upg_package_header_t *pkg_header, const upg_image_header_t *img_header);
185
186/* 更新防回滚版本号 */
188
189/* 判断升级包是否为第一次启动后验签 */
190#if (UPG_CFG_VERIFICATION_SUPPORT == YES)
191bool upg_check_first_entry(const fota_upgrade_flag_area_t *upg_flag_info);
192#endif
193
194/**** upg_resource ****/
195/* 处理资源文件 */
198
199#ifdef __cplusplus
200#if __cplusplus
201}
202#endif
203#endif
204#endif /* UPG_COMMON_H */
uint32_t errcode_t
Definition of error code.
Definition errcode.h:30
enum upg_result upg_result_t
分区枚举类型。
Definition upg_definitions.h:65
分区信息结构
Definition partition.h:50
可选函数结构。
Definition upg.h:350
升级镜像哈希节点类型。
Definition upg.h:218
升级包镜像头类型
Definition upg.h:250
升级包头类型
Definition upg.h:236
Definition upg_definitions.h:104
bool upg_check_first_entry(const fota_upgrade_flag_area_t *upg_flag_info)
Definition upg_process.c:304
errcode_t upg_get_package_header(upg_package_header_t **pkg_header)
Definition upg_common.c:278
upg_result_t upg_get_temporary_result(void)
Definition upg_common.c:719
bool upg_is_inited(void)
Definition upg_common.c:869
void upg_set_temporary_result(upg_result_t result)
Definition upg_common.c:713
errcode_t uapi_upg_compress_image_update(const upg_image_header_t *image)
Definition upg_upgrade.c:57
errcode_t upg_copy_pkg_image_data(const upg_image_header_t *img_header, uint32_t data_offset, uint32_t *data_len, uint8_t *img_data)
Definition upg_common.c:460
errcode_t upg_read_fota_pkg_data(uint32_t read_offset, uint8_t *buffer, uint32_t *read_len)
Definition upg_common.c:144
errcode_t upg_get_pkg_image_hash_table(const upg_package_header_t *pkg_header, upg_image_hash_node_t **img_hash_table)
Definition upg_common.c:316
errcode_t uapi_upg_resource_data_process(const upg_image_header_t *image)
Definition upg_resource.c:170
errcode_t upg_write_new_image_data(uint32_t write_offset, uint8_t *buffer, uint32_t *write_len, uint32_t image_id, bool do_erase)
Definition upg_process.c:468
bool upg_img_in_set(uint32_t img_id)
Definition upg_common_porting.c:93
errcode_t upg_set_firmware_update_status(fota_upgrade_flag_area_t *upg_flag, uint32_t firmware_index, upg_image_status_switch_t switch_status)
Definition upg_common.c:601
errcode_t uapi_upg_full_image_update(const upg_image_header_t *image)
Definition upg_upgrade.c:116
errcode_t uapi_upg_resource_index_process(const upg_image_header_t *image)
Definition upg_resource.c:149
errcode_t upg_set_nv_update_flag(fota_upgrade_flag_area_t *upg_flag, upg_image_status_t status)
errcode_t upg_alloc_and_get_upgrade_flag(fota_upgrade_flag_area_t **upg_flag)
Definition upg_common.c:45
errcode_t upg_read_old_image_data(uint32_t read_offset, uint8_t *buffer, uint32_t *read_len, uint32_t image_id)
Definition upg_common.c:543
errcode_t upg_anti_rollback_version_update(const upg_image_header_t *img_header)
Definition upg_common.c:972
upg_image_status_t upg_get_image_update_status(fota_upgrade_flag_area_t *upg_flag, uint32_t firmware_index, uint32_t image_id)
Definition upg_common.c:668
errcode_t upg_flash_erase_metadata_pages(void)
Definition upg_common.c:707
errcode_t upg_get_partition_info(uint32_t image_id, uint32_t *start_address, uint32_t *size)
Definition upg_common.c:79
void upg_set_update_result(upg_result_t result)
Definition upg_common.c:725
errcode_t upg_get_image_info(uint32_t image_id, partition_information_t *image_info)
Definition upg_common.c:127
bool upg_check_image_update_complete(const fota_upgrade_flag_area_t *upg_flag, uint32_t image_num)
Definition upg_common.c:743
errcode_t upg_get_pkg_image_data(const upg_image_header_t *img_header, uint32_t data_offset, uint32_t *data_len, uint8_t **img_data)
Definition upg_common.c:411
upg_func_t * upg_get_func_list(void)
Definition upg_common.c:864
errcode_t upg_get_pkg_image_header(const upg_image_hash_node_t *img_hash_table, upg_image_header_t **img_header)
Definition upg_common.c:367
errcode_t uapi_upg_diff_image_update(const upg_image_header_t *image)
Definition upg_upgrade.c:102
errcode_t upg_anti_rollback_version_verify(const upg_package_header_t *pkg_header, const upg_image_header_t *img_header)
Definition upg_common.c:939
void upg_set_complete_flag(uint32_t image_num, errcode_t result, bool direct_finish)
Definition upg_common.c:781
upg_storage_ctx_t * upg_get_ctx(void)
Definition upg_common.c:39
void upg_calculate_and_notify_process(uint32_t current_size)
Definition upg_process.c:392
enum upg_image_status_switch upg_image_status_switch_t
enum upg_image_status upg_image_status_t