分享
Gsensor加速度传感器数据异常及概率性卡死
输入“/”快速插入内容
Gsensor加速度传感器数据异常及概率性卡死
飞书用户3013
2024年11月6日修改
今天给大家分享下,经过三个多月解决的Gsensor加速度传感器数据异常及概率性卡死的问题。
数据异常
故事的开始是来自一位客户的投诉,说机器放在桌面上不去动它,语音就会播报“触发碰撞”。
拿到log后,发现某时间段内gsensor数据出现异常,突然增大了3倍左右。
我们就怀疑可能是高温导致的,所以拿同样的机器去做高温测试,但并没有发现异常。
这种问题就很麻烦了,没有办法复现,很难定位到真正的问题点。
这个问题就暂时被搁置了几天,正好后来有一位同事,拿测试的机器做开关机实验时,发现突然异常播报“触发碰撞”,马上把log抓下来看,也是同样的问题,数据出现异常,突然增大了3倍。
这就很奇怪,极有可能是一个概率性问题,无法从现有的log定位到问题点。
所以我们立马排查Gsensor附近的代码,发现有很多问题,比如通过IIC读取Gsnesor数据没有出错处理、没有IIC内部出错的打印、部分打印只能打到串口上等等。
再次进行开关机测试,还是有概率发生数据出现异常,并且增大了3倍!
这时不得不怀疑,是不是Gsensor传感器的某个寄存器的值发生了改变,不然为什么数据会突然增大3倍?
所以又增加了针对Gsensor传感器寄存器的打印,再次复测。
果然,排查到问题点!负责测量加速度计量程范围的寄存器的值突然发生改变!从0x02变成0x40!