1. 米家OTA方案描述
一个OTA 主分区,大小为220K. 一个OTA temp分区204K.在OTA的时候会先将压缩固件存放到OTA TEMP 分区。然后触发固件重启,重启后会将OTA temp分区的内容拷贝到OTA主分区。实现了固件OTA成功。
2. OTA分区表
使用MPTool工具进行固件烧录和MPPackTool来进行MP固件生成时都需要用到flash_map.ini文件。这个文件里面将flash的固件分区进行了描述。 此列子使用的时Flash 512K为例子。
4K对应的十六进制大小为0x1000
[HighLevel]
OEM_CFG_ADDR=0x00801000
OEM_CFG_SIZE=0x00001000 //4K大小, config 信息(蓝牙地址+分区表)
OTA_BANK0_ADDR=0x00802000
OTA_BANK0_SIZE=0x00046000 // OTA-BANK0分区,280K 主分区 Patch 40k,APP 220k
OTA_BANK1_ADDR=0x00848000
OTA_BANK1_SIZE=0x00000000 //BANK1分区不存在
FTL_ADDR=0x00848000
FTL_SIZE=0x00004000 // 16K的FTL分区
OTA_TMP_ADDR=0x0084C000
OTA_TMP_SIZE=0x00033000 //204K 大小。 OTA-TEMP分区
APP_DS_ADDR=0x0087F000
APP_DS_SIZE=0x00001000 //4K 米家证书区域
[OTABank]
其中OTA分区里面的内容又有分区。
BANK0_OTA_HDR_ADDR=0x00802000
BANK0_OTA_HDR_SIZE=0x00001000 //4K的OTA Header分区
BANK0_FSBL_ADDR=0x0080D000
BANK0_FSBL_SIZE=0x00001000 //4K bootloader分区
BANK0_ROM_PATCH_ADDR=0x00803000
BANK0_ROM_PATCH_SIZE=0x0000A000 //40K 的 rom patch分区
BANK0_APP_ADDR=0x0080E000
BANK0_APP_SIZE=0x00037000 // 主App分区的大小 220K
BANK0_APP_DATA1_ADDR=0x00845000
BANK0_APP_DATA1_SIZE=0x00000000 //data1为0
BANK0_APP_DATA2_ADDR=0x00845000
BANK0_APP_DATA2_SIZE=0x00003000 //data2分区使用,大小为12K
BANK1_OTA_HDR_ADDR=0x00000000
BANK1_OTA_HDR_SIZE=0x00000000
BANK1_FSBL_ADDR=0x00000000
BANK1_FSBL_SIZE=0x00000000
BANK1_ROM_PATCH_ADDR=0x00000000
BANK1_ROM_PATCH_SIZE=0x00000000
BANK1_APP_ADDR=0x00000000
BANK1_APP_SIZE=0x00000000
BANK1_APP_DATA1_ADDR=0x00000000
BANK1_APP_DATA1_SIZE=0x00000000
BANK1_APP_DATA2_ADDR=0x00000000
BANK1_APP_DATA2_SIZE=0x00000000
[Property]
FLASH_SIZE=512
IMG_HDR_SIZE=1024
FLASH_BP_SIZE=1/2
OTA_SWITCH=Disable //使用的OTA方案不是AB分区。而是OTA TEMP方案
IC_TYPE=554540
FLASH_ADDR=0x00800000