1 Star 0 Fork 1

test/update_engine

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
rkboot_control.h 2.81 KB
一键复制 编辑 原始数据 按行查看 历史
jkand.huang 提交于 2019-02-27 21:27 . add retry time and last_boot.
/*************************************************************************
> File Name: rkboot_control.h
> Author: jkand.huang
> Mail: jkand.huang@rock-chips.com
> Created Time: Wed 09 Jan 2019 02:57:43 PM CST
************************************************************************/
#ifndef _RKBOOT_CONTROL_H
#define _RKBOOT_CONTROL_H
#define AB_SLOT_NUM 2
/* Magic for the A/B struct when serialized. */
#define AVB_AB_MAGIC "\0AB0"
#define AVB_AB_MAGIC_LEN 4
/* Versioning for the on-disk A/B metadata - keep in sync with avbtool. */
#define AVB_AB_MAJOR_VERSION 1
#define AVB_AB_MINOR_VERSION 0
/* Size of AvbABData struct. */
#define AVB_AB_DATA_SIZE 32
/* Maximum values for slot data */
#define AVB_AB_MAX_PRIORITY 15
#define AVB_AB_MAX_TRIES_REMAINING 7
#define MISC_OFFSET 2048
#define MISC_OFFSET_CMDLINE 4096
#define MISC_PARTITION_NMAE "/dev/block/by-name/misc"
#define CMDLINE_LENGTH 2048
#define CMD_WIPE_USERDATA "cmd_wipe_userdata"
/*
struct rk_ab {
unsigned char magic[AB_MAGIC_LEN];
unsigned int version;
int last_boot;
int use_a;
int use_b;
int current_boot;
unsigned char reserved[12];
unsigned int crc32;
};
*/
typedef struct AvbABSlotData {
/* Slot priority. Valid values range from 0 to AVB_AB_MAX_PRIORITY,
* both inclusive with 1 being the lowest and AVB_AB_MAX_PRIORITY
* being the highest. The special value 0 is used to indicate the
* slot is unbootable.
*/
unsigned char priority;//0,14,15
/* Number of times left attempting to boot this slot ranging from 0
* to AVB_AB_MAX_TRIES_REMAINING.
*/
unsigned char tries_remaining;//7--,成功启动,设为0
/* Non-zero if this slot has booted successfully, 0 otherwise. */
unsigned char successful_boot;//0,1
/* Reserved for future use. */
unsigned char reserved[1];
}AvbABSlotData;
/* Struct used for recording A/B metadata.
*
* When serialized, data is stored in network byte-order.
*/
typedef struct AvbABData {
/* Magic number used for identification - see AVB_AB_MAGIC. */
unsigned char magic[AVB_AB_MAGIC_LEN];
/* Version of on-disk struct - see AVB_AB_{MAJOR,MINOR}_VERSION. */
unsigned char version_major; //AVB_AB_MAJOR_VERSION
unsigned char version_minor; //AVB_AB_MINOR_VERSION
/* Padding to ensure |slots| field start eight bytes in. */
unsigned char reserved1[2];
/* Per-slot metadata. */
AvbABSlotData slots[2];
/* Reserved for future use. */
unsigned char last_boot;//默认a,上一次成功启动slot的标志位,0-->a,1-->b
unsigned char reserved2[11];
/* CRC32 of all 28 bytes preceding this field. */
unsigned int crc32;
}AvbABData;
int setSlotActivity();
int setSlotSucceed();
int readMisc(struct AvbABData *info);
void display(struct AvbABData info);
bool wipe_userdata(bool auto_reboot);
#endif
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/rockchip/update_engine.git
git@gitee.com:rockchip/update_engine.git
rockchip
update_engine
update_engine
master

搜索帮助