40 lines
1.3 KiB
C
40 lines
1.3 KiB
C
|
#ifndef _FIRMWARE_PACK_H_
|
|||
|
#define _FIRMWARE_PACK_H_
|
|||
|
|
|||
|
/*
|
|||
|
* 功能:
|
|||
|
* 因为固件都在V831这边,所以由V831来做升级的总管,控制升级流程
|
|||
|
* 1 从MT7682接收固件包, 写到V831的flash上面
|
|||
|
* 2 接收完毕,CRC正确,设置升级标志位,各个芯片要支持单独升级/单独设置升级标志/版本号
|
|||
|
* 3 触发V831的升级,升级完成,版本号与升级版本一致,清除V831的升级标志
|
|||
|
* 4 触发MT7682升级,升级完获取版本号,版本号与升级版本一致,清除MT7682升级标志
|
|||
|
* 5 类似方式触发BYD/华大升级
|
|||
|
*/
|
|||
|
|
|||
|
/*
|
|||
|
* 每一个模块升级完都要单独更新升级标志
|
|||
|
*/
|
|||
|
|
|||
|
enum FIRMWARE_ID {
|
|||
|
MAIN=0,
|
|||
|
SOUND,
|
|||
|
WIFI, //必须放在最后面, 因为写到flash以后, 就触发重启升级机制
|
|||
|
MCU2,
|
|||
|
CHIP_MAX
|
|||
|
};
|
|||
|
|
|||
|
#define IMG_MAGIC 0x20A3BF9D
|
|||
|
struct chipFWInfo {
|
|||
|
unsigned int magic;
|
|||
|
unsigned short chipID; //FIRMWARE_ID
|
|||
|
unsigned short version; //待升级的版本号
|
|||
|
unsigned int offset; //在固件包当中的偏移地址
|
|||
|
unsigned int length; //固件大小
|
|||
|
unsigned int crc; //crc32
|
|||
|
};
|
|||
|
|
|||
|
struct FWPackHeader{
|
|||
|
struct chipFWInfo FWInfo[CHIP_MAX];
|
|||
|
unsigned char reserved[128 - sizeof(struct chipFWInfo) * CHIP_MAX];
|
|||
|
};
|
|||
|
#endif
|