一。硬件方面

除了下面列举的方面,还需要评估下其他措施。

1.电源因素,禁干扰。

只要用廉价劣质的开关电源,不管哪个单片机,都存在EEPROM丢数据和单片机程序丢失的情况。

1.转接板走线,直接接到了单片机IO,静电会直接传导到单片机。应该设计放静电电路。可以到专门实验室做打静电测试验证是否会导致丢程序。

2.对于所有包含有Flash写/擦除子程序的系统,当CPU工作在规定的VDD、温度、系统时钟频率范围之外时,对Flash进行写/擦除操作,都有可能出现Flash数据错误的现象。

系统在单片机的工作电压没有稳定时就已经完成复位,由于系统复位时需要从Flash读出代码数据,Flash电压不稳定会出现不可预测的错误。

① 在RST引脚安装VDD监测电路,并将VDD监视设置为一个复位源。这样如果系统电压不稳定,系统将自动复位,从而避免在电压不稳时访问Flash。
  ③ 外部晶振信号线应尽量靠近单片机的输入端,同时晶振外壳接地。
  ④ 对于使用外部晶振作时钟源的系统,应尽量增强晶振的驱动能力,这样也能在一定程度上预防程序丢失。

二.从软件方面预防程序丢失 

程序丢失的主要原因是程序设计的缺陷,所以合理的程序代码设计能极大地预防该问题的出现。在代码中可以用多种方法来预防Flash数据丢失:

关中断。

在初始化单片机时,使能VDD检测,并设置VDD和时钟丢失为复位源。如果程序中有写/擦除Flash的代码,则在写/擦除操作前切换系统时钟,将系统时钟切到内部时钟或对外部时钟2分频;写/擦除操作完成之后,再恢复系统时钟,通过增加Flash修改操作时的时间开销来实现系统的稳定 。

是在平时正常使用的时候出现丢固件,还是本来可以正常使用,只是执行升级这个动作失败,导致的丢固件??无从考证,所以需要检查下升级本身代码有没有风险。

目前从bootloader入手,先检查下代码。

最新文章

  1. WinCE项目应用汇总
  2. FineUI小技巧(5)向子窗口传值,向父窗口传值
  3. spring mvc异常统一处理(ControllerAdvice注解)
  4. Java中MVC详解以及优缺点总结
  5. 玩转Windows Azure存储服务——高级存储
  6. selenium webdriver学习(一)
  7. 使用ocr的自动备份还原ocr
  8. The type R is already defined 错误解决办法
  9. Error creating bean with name 'signController': Injection of autowired dependencies failed
  10. C#操作Excel知识点
  11. linux的基本操作命令
  12. selenium 设置代理的话,可以使用这种方式,代码是我刚才测试过的,亲测可用
  13. React Native入门教程 1 -- 开发环境搭建
  14. oracle EM 如何调整界面显示的语言
  15. docker上配置mysql主从复制
  16. java 生成微信的二维码 工具类
  17. SVN用户切换
  18. day5-json和pickle序列化
  19. 第一次软件工程作业(One who wants to wear the crown, Bears the crown.)
  20. 非极大值抑制(NMS)

热门文章

  1. K8S集群入门:运行一个应用程序究竟需要多少集群?
  2. leaflet结合geoserver利用WFS服务实现图层新增功能(附源码下载)
  3. 关于Redis缓存预热的思考
  4. 《自拍教程25》在Linux上配置环境变量
  5. MySql概述及入门(五)
  6. C# 截取屏幕
  7. Android_小账本_筛选功能的实现
  8. Python 3.8 已发布,现在是切换至新版本的好时机吗?
  9. 聊聊智能指针 auto_ptr、shared_ptr、weak_ptr和unique_ptr
  10. JavaScirpt 一些基本知识