配置信息丢失问题调试及解决方法
来源:互联网 发布:中国电信网络测速工具 编辑:程序博客网 时间:2024/05/12 07:42
我参加 了CSDN2014 博客之星大赛,请大家多多支持(每天都可以投一票哦)。
http://vote.blog.csdn.net/blogstar2014/details?username=woshi_ziyu#content
————————————————————————————————————
现象:
采集计算器长期运行一段时间后,配置信息丢失,通断控制器的ID为0xFFFFFFFF,所以报上传故障。
解决方法:
查看串口调试软件的监控记录,使用0xFFFFFFFF查找第一次出现的地方并定位上下电时间上传记录,如下图所示:
通过查看记录得到以下信息:
1.首次发生的时间点为2015-01-0315:15:06
2.发生的故障点位于上下电记录上传
3.发生故障后保存的数据没有发生变化,即EEPROM中存储的数据为故障发生时的数据。
4.该记录21个字节中有4个字节正确(02 0002 42),17个数据错误(全部显示为0xFF,即无数据);
使用采集计算器的导出功能,查看上下电时间记录的数据:
从图上得知:
PowerOnOffDataCounter. Erased =0x00000110(272);
PowerOnOffDataCounter.storage=0x0000C30D(49933);
PowerOnOffDataCounter. upload=0x0000C30D(49933);
PowerOnOffDataCounter. ex_out=0x0000C30D(49933);
上下电记录分配的内存空间:
(0x00F0 0000~0x013F FFFF)1280个扇区数,共计5M Byte;
每个上下电记录数据的占据的空间大小为0x15(21个字节)
擦除空间为
0x00F0 0000 / 1000 + 0x110 = 0x1010(0x1010 -0x101F)
擦除地址:0x00101 000 - 0x0010 100F
存储空间地址:
0x00F0 0000 + 0x010 0011(1048593) = 0x01000011
根据以上信息绘制当前记录的内存分布:
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0x08
0x09
0x0A
0x0B
0x0C
0x0D
0x0E
0x0F
0x00FF FFF0
上一条记录
本次记录
0x0100 0000
本次记录
0x0100 0010
本次记录
从表中可以看出本次记录分布在0x0100 0000地址空间,且正好位于BLOCK与BLOCK之间,所以初步断定和写数据有关。
根据以上推论进行测试;
测试方法是:在该内存地址直接写入数据,看是否影响配置信息;
代码如下:
运行代码,进行调试,调试结果如下:
写入前配置信息正确。
写入后配置信息丢失。
经调试代码发现驱动中擦除函数有些BUG:
该驱动函数中,擦除指令给出的地址为3个字节,当前擦除地址超出了3个字节,忽略高8位,及0x01000000编程了0x0000000,即配置信息所分配的内存空间。
解决方法:
将驱动中的擦除函数的地址改成4个字节,经调试,配置信息不再丢失。
- 配置信息丢失问题调试及解决方法
- linux resolv.conf 配置信息丢失解决方法
- Linux系统resolv.conf配置信息丢失的解决方法
- Session丢失问题调试
- 跨域访问sessiono丢失问题说明及解决方法
- IE中textarea光标丢失问题及解决方法
- 利用OleDb导入Excel数据丢失问题及解决方法
- java中double和float精度丢失问题及解决方法
- Java中double和float精度丢失问题及解决方法
- java中double和float精度丢失问题及解决方法
- XAMPP配置问题及解决方法
- 调试putty出现的问题及解决方法
- jfreechart出现ChartDeleter没有序列化问题导致session信息丢失的解决方法
- VELT-0.1.5开发: gdb串口调试内核时信息丢失的问题
- Weblogic8.1配置log4j问题及解决方法。
- cloudstack配置时一些问题及解决方法
- Redis配置集群遇到问题及解决方法
- ruby-cucumber环境配置问题及解决方法
- 数字求和——链表
- win7+win8+ubuntu三系统下重装win7
- 计算机的潜意识
- Java HashMap 分析之三放入元素
- Ng机器学习系列补充:3、关联分析算法Apriori
- 配置信息丢失问题调试及解决方法
- 【java】请求分配分页模拟
- $.ajax()方法详解
- bitmap算法
- Ext Core核心功能介绍(上)
- 安卓sdk工具的下载
- 一台变两台,电脑也分身
- 第20条:尽量使用“引用常量”传参代替传值
- MySQL中myisas和innoDB