该项目平台是TI的locosto,ARM7处理器,nor boot,128+32
DM技术方案提供商为bitfone公司。
在没有加入DM方案以前,系统的划分如下
name origin length
———————- ——– ——— ——– —- ——–
BOOT_MEM 00000000 00100000
D_MEM0 00400000 00300000
P_MEM0 06000000 00210000
P_MEM1 06210000 001f0000
P_MEM2 06400000 00100000
P_MEM3 06500000 00180000
R_MEM 06680000 00380000
FFS_MEM 06a00000 00600000
S_MEM 08000000 00037560
S_MEM_JPEG_JUMPTABLE 0804fb60 00000250
S_MEM_JUMPTABLE 0804fdb0 00000250
S_ROM 08050000 00030000
根据FOTA的实现原理,我们需要划分出Bootloader部分,存放差分包和FOTA标志部分,最后修改后的系统情况如下:
name origin length
———————- ——– ——— ——– —- ——–
BOOT_MEM 00000000 00100000
D_MEM0 00400000 00300000
P_DMBOOT 06000000 00020000
P_MEM0 06020000 00210000
P_MEM1 06230000 001d0000
P_MEM2 06400000 00030000
P_MEM3 06430000 00370000
P_DMBIN 067a0000 00060000
R_MEM 06800000 00200000
FFS_MEM 06a00000 00600000
S_MEM 08000000 00037560
S_MEM_JPEG_JUMPTABLE 0804fb60 00000250
S_MEM_JUMPTABLE 0804fdb0 00000250
S_ROM 08050000 00030000
FOTA需要的空间是以前空余的代码段,文件系统部分是没有改变的。FOTA的标志部分因为空间原因放在差分包的最后一个block中。
#define DM_FLAG_ADDR (0×067a0000+0×60000-5)
#define DM_NEED_UPDATE_FLAG (DM_FLAG_ADDR)
#define DM_REPORT_FLAG (DM_NEED_UPDATE_FLAG+1)
#define DM_SUCCESSED_FLAG (DM_REPORT_FLAG+1)
#define DM_VALIDATION_PHASE_FLAG (DM_SUCCESSED_FLAG+1)
#define DM_UPDATE_PHASE_FLAG (DM_VALIDATION_PHASE_FLAG+1)
Read the rest of this post »

















