系统自检-FLASH自检

来源:互联网 发布:java遍历json 编辑:程序博客网 时间:2024/06/09 16:39

【需求描述】考虑到FLASH受到辐射(如过海关X光)或者长时间存放导致存贮失效,主机厂要求对FALSH自检。

【解决办法】累加和校验
step1:校验前处理。用校验工具算出bin文件累加和,存入code flash最后一页的最后4个byte。
step2:APP内对code flash中除最后一页外计算累加和,比较该累加和与存入的累加和,若相等,则自检通过。
step3:on the air升级时,bootloader中同样“对code flash中除最后一页外计算累加和”,并将累加和写入code flash最后一页的最后4个byte。

【编码实现】

/**************************************************************** Prototype    : selfDiag_FlashCheck Description  : check code flash                 Input        : none                 Output       : ret Return Value : ***************************************************************/U8 selfDiag_FlashCheck(void){    U8 u8Ret = FALSE;#if APPSELFDIAG_FLASH    U8 *start = (U8*)_CFlash_START;    U8 *end = (U8*)_CFlash_END;    U8 *checkSum= (U8*)_CFlash_CHECKSUM;    U8 *addr = start;    U32 u32CheckSum = 0;    U32 u32checkSumROM = *((U32*)checkSum);    do    {        u32CheckSum += *addr;        addr++;    }while (addr != end);    if (u32CheckSum != u32checkSumROM)    {        u8Ret = FALSE;    }    else    {        u8Ret = TRUE;    }#else    u8Ret = TRUE;#endif    return u8Ret;}
#define _CFlash_START           (0x00000u)#define _CFlash_END             (0xFFE00u)#define _CFlash_CHECKSUM        (0xFFE0Cu)#define DIAG_ON                 (1u)#define DIAG_OFF                (0u)#define APPSELFDIAG_FLASH      DIAG_OFF

p.s.累加和工具:这里写图片描述

0 0
原创粉丝点击