最近接收了一位前辈的代码,要更换新的平台,用的国产单片机,代码移植完成后,出现诡异问题:
本人测试的时候,通过keil在线调试,一切功能正常。当将编译好的HEX文件,发给测试人员测试的时候,问题就出现了,还出现了几种不同的问题:
Q1:设备上电后,数码管乱显示,正常应该上电数码管不显示;
Q2:设备上电后,出现随机配置项,配置完成的参数,保存后,重新上电后,变成随机数
由于是外包项目,和测试不在一个地方,自己测试一切正常,对方测试一堆问题,都开始怀疑是不是目标文件错了,检查几遍以后,发现没错,检查代码,也没有发现问题。
开始怀疑硬件是不是不一样,最好找了同一版本的硬件,测试还是有问题,而且每一块板表现的故障都不一样,这时还是得在代码上找问题。来来回回看了几遍,没发现问题。
最后去查参数初始化,才发现,参数没有初始化。将参数初始化完毕后,设备正常。
同样的代码,以前平台可以,现在不行,只能怀疑设备断电后,RAM的初始化问题了,有的平台可能RAM初始化了,有的可能上电就是个随机值,所以就回出现这种随机性的BUG。所以声明变量时最好同时初始化。之前那个前辈的代码全部都是声明在头文件,没有初始化,也没有初始化函数来初始化数据,所以出现这种问题!保险起见,所有上电启用的参数,一定要初始化话,鬼知道RAM里面原来存的是什么值。