一、问题背景
公司的设备发货后,很多设备高概率出现无法升级的问题。
二、问题原因
在分析的过程中发现存在问题的设备的镜像出现了比特位翻转的问题,且都是同批次设备,怀疑有可能是器件导致的问题。
三、解决方法
- 整包升级;
- 看下是那块数据有问题,做差分的时候特别处理下;
- 避免后续出现此类问题,产线刷机的时候增加了哈希校验;
四、优缺点
整包升级:耗费流量较大,升级时间较长,但是能够快速解决用户的问题;
对特定区域处理:耗费流量小,但是需要一定时间分析原因;
分区校验:避免以后出现此类问题;
五、分区校验
-
编译版本的时候,计算各个分区的sha1sum值,并保存到刷机包中。
在实现过程中会发现某些分区的sha1sum值与设备中的不一致,原因如下:
sparse ext4 image(编译生成的分区):是一个非常普通的dat文件。由于它将raw ext4进行稀疏描述,因此尺寸比较小(没有全零的无效填充区);
raw ext4 image( 刷机后设备):其特点是完整的ext4分区镜像(包含很多全零的无效填充区),可以直接使用mount进行挂载,因此比较大)
因此如果要对两个分区的sha1sum值进行比较的话,就需要进行转换。此处就需要用到out目录下的simgsim工具进行转换:./simgsim sparse.image raw.image。 -
开机后启动一个c程序计算设备中各个分区的sha1sum值,并保存到文件中。
-
通过AT命令获取手机中保存的文件,并与刷机包中的值对比。