系统自检-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
- 系统自检-FLASH自检
- 系统自检版本代码
- 树莓派系统自检错误
- 关闭系统的开机自检
- 内存自检
- 自勉,自检。
- acm 自检
- 开机自检
- BIOS自检
- 开机自检
- STM32自检
- 项目自检
- tomcat自检
- 问题自检
- tune2fs自定义Linux系统文件系统自检
- 【解决windows7系统开机硬盘自检方法】
- 安装VMware Workstation ,导致系统开机总是自检的问题
- 9月19日linux系统开机自检硬盘数据故障
- ArrayList、Vector、HashMap、HashSet的默认初始容量、加载因子、扩容增量
- Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- 一颗二叉查找树的简单实现
- c++智能指针(1)
- 微信小程序入门之构建一个简单TODOS应用
- 系统自检-FLASH自检
- PAT 1042. Shuffling Machine (20)
- 108-记录锁(继承与释放)
- tensorflow 函数接口的理解
- 有效括号
- Java多线程系列--“基础篇”03之 Thread中start()和run()的区别
- app语音聊天方案
- 关于游戏制作过程中遇到的几个问题记录
- Activity启动流程(源码分析)