#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