系统自检-FLASH自检

【需求描述】考虑到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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值