27,383
社区成员
发帖
与我相关
我的任务
分享
typedef struct
{
U32 u32ApplicationVersion_Major;
U32 u32ApplicationVersion_Minor;
fpJumpHandler fpApplicationJumpHandler;
U32 u32BootApplicationStartAddress;
U32 u32BootApplicationAllocationSize;
U32 u32UserApplicationStartAddress;
U32 u32UserApplicationAllocationSize;
}TS_ApplicationData;
static Bool B_IsUserApplicationValid(void)
{
TS_ApplicationData* pCurrentApplicationData;
TS_ApplicationData* pUserApplicationData;
U32 u32DigestLocation;
Bool bUserApplicationValid = false;
/** Get Application header data*/
pCurrentApplicationData = P_GetApplicationData();
pUserApplicationData = (TS_ApplicationData*)(pCurrentApplicationData->u32UserApplicationStartAddress +
pCurrentApplicationData->u32UserApplicationAllocationSize - sizeof(TS_ApplicationFooter));
/** Check if Flash information in Application and Boot loader Matches */
if((pUserApplicationData->u32UserApplicationStartAddress == pCurrentApplicationData->u32UserApplicationStartAddress) &&
(pUserApplicationData->u32UserApplicationAllocationSize == pCurrentApplicationData->u32UserApplicationAllocationSize) &&
(pUserApplicationData->u32BootApplicationStartAddress == pCurrentApplicationData->u32BootApplicationStartAddress) &&
(pUserApplicationData->u32BootApplicationAllocationSize == pCurrentApplicationData->u32BootApplicationAllocationSize))
{
u32DigestLocation = pUserApplicationData->u32UserApplicationStartAddress +
pUserApplicationData->u32UserApplicationAllocationSize - sizeof(TS_SHA_Digest);
InitICM_Module();
CalculateICM(pUserApplicationData->u32UserApplicationStartAddress,
(pUserApplicationData->u32UserApplicationAllocationSize - sizeof(TS_SHA_Digest)), (U32*)u32SHA_1_Digest);
/** Check Integrity of User Application*/
if(!memcmp((const _PTR)u32DigestLocation, u32SHA_1_Digest, sizeof(u32SHA_1_Digest)))
{
/** Indicate User Application is valid*/
bUserApplicationValid = true;
}
else
{
/** Do Nothing */
}
}
else
{
/** Do Nothing */
}
return(bUserApplicationValid);
}
pUserApplicationData = (TS_ApplicationData*)(pCurrentApplicationData->u32UserApplicationStartAddress +
pCurrentApplicationData->u32UserApplicationAllocationSize - sizeof(TS_ApplicationFooter));
UserApplicationData现在指向0x47ff00,如果预期是和pCurrentApplicationData指向同一个地方的话,那就是你上面写的有问题
如果UserApplicationData指向0x47ff00,指向的是pCurrentApplicationData的一个副本的话,Watch里的值表明你这个副本没初始化或者没有copy pCurrentApplicationDatapCurrentApplicationData 怎么获取不到值?
pUserApplicationData的值为什么是这个值?