产线上NvRAM数据丢失或 modem assert的SOP
时间:10-02
整理:3721RD
点击:
[Description]
NvRAM数据丢失,在调试或是产线上偶有发生,如果在终端用户手中发生,手机可能需要返厂重新download才能正常使用,必然是一件麻烦的事情。而在出厂前也一样,一旦发生,伴随着小概率/现场数据破坏,想要复现问题或是抓取有效log都将变得极其困难。
NvRAM数据丢失大概有以下几种情况比较严重:
1. Userdata里面的某项NvRAM文件被恢复为默认值,恢复出厂设置无效,如IMEI,WIFI等;
2. BinRegion里面的某项NvRAM丢失,最易丢失的文件有MP0D_001,IMEI,SML等;
3. BinRegion分区数据不完整。
所以,我司建议:
1. 制定一条产线流程,产线上一定要严格遵循流程;
2. 一旦发生数据丢失,需要按照我司建议的操作步骤去复现问题并提供尽可能多的信息。
[Solution]
在调试或生产的时候,若是出现数据丢失或Modem assert:
第一步,切勿马上利用 mtk的原生工具SP Meta/Maui Meta等工具去check该项数据是否真的异常,check时请切记,
1. 如用SP Meta前,将主界面的“Backup NVRam”选项去掉;
2. 如用Maui Meta前,Options->Backup to BackupPartition/SDS before disconnect。
第二步,请check除了已知项以外,是否还发生其他项也存在丢失问题。
第三步,请复现问题,复现后重复第一步和第二步确认,并注意抓取复现问题的完整log,
1. 完整mobile log,GAT log,任一皆可;
2. 完整modem log;
3. 如果JB2.MP之后的版本上SML丢失,还需要提供完整UART log。
第四步,请将问题出现时的一些数据保存起来,具体需要保存的信息如下:
1. 依照scatterfile,使用flash tool将NVRAM(俗称BinRegion)readback回来
2. JB2.MP前,adb pull dev/misc出来;JB2.MP以及之后,不需要adb pull dev/misc
3. 用ddms或GAT将nvram目录文件以及文件的创建/修改时间读取出来
1) adb shell ls -lR /data/nvram> d:\time_nvram.txt
2) adb pull /data/nvram出来
4. 用ddms或GAT将过程文件以及文件的创建/修改时间读取出来
1) adb shell ls -lR /data/AllMap> d:\time_allmap.txt
2) adb shell ls -lR /data/AllFile> d:\time_allfile.txt
3) adb pull /data/AllFile和/data/AllMap出来
4) 注意,如果是82平台,过程文件会生成在/data/nvram/下,不需要额外pull
5. 如果是JB2.MP之后的版本上SML丢失,还需要读取protect分区的数据
1) adb shell ls -lR /protect_f/ > d:\time_protect_f.txt
2) adb shell ls -lR /protect_s/ > d:\time_protect_s.txt
3) adb pull /protect_f/和/protect_s/出来
NvRAM数据丢失,在调试或是产线上偶有发生,如果在终端用户手中发生,手机可能需要返厂重新download才能正常使用,必然是一件麻烦的事情。而在出厂前也一样,一旦发生,伴随着小概率/现场数据破坏,想要复现问题或是抓取有效log都将变得极其困难。
NvRAM数据丢失大概有以下几种情况比较严重:
1. Userdata里面的某项NvRAM文件被恢复为默认值,恢复出厂设置无效,如IMEI,WIFI等;
2. BinRegion里面的某项NvRAM丢失,最易丢失的文件有MP0D_001,IMEI,SML等;
3. BinRegion分区数据不完整。
所以,我司建议:
1. 制定一条产线流程,产线上一定要严格遵循流程;
2. 一旦发生数据丢失,需要按照我司建议的操作步骤去复现问题并提供尽可能多的信息。
[Solution]
在调试或生产的时候,若是出现数据丢失或Modem assert:
第一步,切勿马上利用 mtk的原生工具SP Meta/Maui Meta等工具去check该项数据是否真的异常,check时请切记,
1. 如用SP Meta前,将主界面的“Backup NVRam”选项去掉;
2. 如用Maui Meta前,Options->Backup to BackupPartition/SDS before disconnect。
第二步,请check除了已知项以外,是否还发生其他项也存在丢失问题。
第三步,请复现问题,复现后重复第一步和第二步确认,并注意抓取复现问题的完整log,
1. 完整mobile log,GAT log,任一皆可;
2. 完整modem log;
3. 如果JB2.MP之后的版本上SML丢失,还需要提供完整UART log。
第四步,请将问题出现时的一些数据保存起来,具体需要保存的信息如下:
1. 依照scatterfile,使用flash tool将NVRAM(俗称BinRegion)readback回来
2. JB2.MP前,adb pull dev/misc出来;JB2.MP以及之后,不需要adb pull dev/misc
3. 用ddms或GAT将nvram目录文件以及文件的创建/修改时间读取出来
1) adb shell ls -lR /data/nvram> d:\time_nvram.txt
2) adb pull /data/nvram出来
4. 用ddms或GAT将过程文件以及文件的创建/修改时间读取出来
1) adb shell ls -lR /data/AllMap> d:\time_allmap.txt
2) adb shell ls -lR /data/AllFile> d:\time_allfile.txt
3) adb pull /data/AllFile和/data/AllMap出来
4) 注意,如果是82平台,过程文件会生成在/data/nvram/下,不需要额外pull
5. 如果是JB2.MP之后的版本上SML丢失,还需要读取protect分区的数据
1) adb shell ls -lR /protect_f/ > d:\time_protect_f.txt
2) adb shell ls -lR /protect_s/ > d:\time_protect_s.txt
3) adb pull /protect_f/和/protect_s/出来
所以校准数据直接拿台好的读了写进去ok:lol:lol
