|
WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
|

枚举 | |
| enum | upg_region_index { UPG_REGION_A , UPG_REGION_B , UPG_REGION_COUNT } |
函数 | |
| upg_region_index | upg_get_run_region (void) |
| 获取当前运行的镜像分区。 | |
| upg_region_index | upg_get_upg_region (void) |
| 获取待升级的镜像分区。 | |
| uint32_t | upg_get_region_addr (upg_region_index upg_region) |
| uint32_t | upg_get_region_size (upg_region_index upg_region) |
| 获取镜像分区的大小。 | |
| uint32_t | upg_ab_image_read (upg_region_index upg_region, uint32_t offset, uint8_t *buf, size_t len) |
| 读取镜像数据。 | |
| uint32_t | upg_ab_image_write (upg_region_index upg_region, uint32_t offset, uint8_t *buf, size_t len) |
| 写入镜像数据。 | |
| errcode_t | upg_set_run_region (upg_region_index upg_region) |
| 镜像版本切换 | |
| errcode_t | upg_region_erase (upg_region_index region) |
| 擦除待升级的镜像区 | |
| errcode_t | upg_region_verify (upg_region_index region) |
| 校验待升级的镜像区 当从B分区启动时,DMMU配置如下: 访问A的地址时,实际访问的是B; 访问B的地址时,实际访问的是A; 而从A分区启动时,没有配置DMMU。 所以,calc_hash函数传入的地址总是B分区的地址。 ┌─────────────┐ src start│ │dst start │ │ ┌───── │ Image A │ ◄─────┐ │ │ │ │ │ src end │ │ │ │ ├─────────────┤ │ │ dst start│ │src start │ │ │ │ │ └─────► │ Image B │ ─────┘ │ │ │ │src end └─────────────┘ | |
| errcode_t | upg_ab_start (upg_region_index upg_region) |
| 镜像升级开始,准备写入镜像 | |
| enum upg_region_index |
| uint32_t upg_ab_image_read | ( | upg_region_index | upg_region, |
| uint32_t | offset, | ||
| uint8_t * | buf, | ||
| size_t | len | ||
| ) |
读取镜像数据。
| upg_region,镜像区域,UPG_REGION_XXX。 | |
| offset | 偏移量。 |
| buf | 内存指针。 |
| len | 读取的长度。 |
| uint32_t upg_ab_image_write | ( | upg_region_index | upg_region, |
| uint32_t | offset, | ||
| uint8_t * | buf, | ||
| size_t | len | ||
| ) |
写入镜像数据。
| upg_region,镜像区域,UPG_REGION_XXX。 | |
| offset | 偏移量。 |
| buf | 待写入数据的内存指针。 |
| len | 写入的长度。 |
| errcode_t upg_ab_start | ( | upg_region_index | upg_region | ) |
镜像升级开始,准备写入镜像
| upg_region | 镜像区域,UPG_REGION_A/UPG_REGION_B |
| uint32_t upg_get_region_addr | ( | upg_region_index | upg_region | ) |
| uint32_t upg_get_region_size | ( | upg_region_index | upg_region | ) |
获取镜像分区的大小。
| upg_region | 需要获取的镜像分区 |
| upg_region_index upg_get_run_region | ( | void | ) |
获取当前运行的镜像分区。
| upg_region_index upg_get_upg_region | ( | void | ) |
获取待升级的镜像分区。
| errcode_t upg_region_erase | ( | upg_region_index | region | ) |
擦除待升级的镜像区
| region | 待擦除的镜像区域,UPG_REGION_A/UPG_REGION_B。 |
| errcode_t upg_region_verify | ( | upg_region_index | region | ) |
校验待升级的镜像区 当从B分区启动时,DMMU配置如下: 访问A的地址时,实际访问的是B; 访问B的地址时,实际访问的是A; 而从A分区启动时,没有配置DMMU。 所以,calc_hash函数传入的地址总是B分区的地址。 ┌─────────────┐ src start│ │dst start │ │ ┌───── │ Image A │ ◄─────┐ │ │ │ │ │ src end │ │ │ │ ├─────────────┤ │ │ dst start│ │src start │ │ │ │ │ └─────► │ Image B │ ─────┘ │ │ │ │src end └─────────────┘
| region | 待校验的镜像区域,UPG_REGION_A/UPG_REGION_B。 |
| errcode_t upg_set_run_region | ( | upg_region_index | upg_region | ) |
镜像版本切换
| upg_region | 镜像区域,UPG_REGION_A/UPG_REGION_B。下一次启动的版本区域是upg_region。 |