作者 Modder
针对SSD这样存储类的产品,实际上消费级产品能做到零故障的很少,虽然部件或固件缺陷引发故障是概率问题,但对于个体用户来说,只要碰上就是100%灾难。如果您不幸碰上这样的情况,该如何加以应对?
1.SSD加电初始化
要解决故障问题,首先我们要从SSD加电初始化谈起,因为学习不仅要知其然,更要知其所以然。这里以使用 Intel PC29AS21BA0控制器和Marvell 88SS9174或Marvell 88SS9187控制器的SSD为例,它们需要通过3个主要的初始化阶段:
1)从控制器的内部ROM加载固件,并执行基本初始化过程;
2)它们从外部ROM(NOR闪存芯片)加载固件。这个部分的目的是初始化在第一阶段未初始化的系统,并将主固件加载到内存。
3)加载主固件部分,加载和初始化服务模块。
在这些阶段成功完成后,驱动器通常进入就绪状态。不过驱动器在BUSY(驱动器忙)状态下是不被支持的噢。
以Intel SSD为例,当驱动器在初始化时如果遇到错误,可能无法继续运行或无法激活其正常功能,驱动器会进入特定的故障模式。现象包括无法访问数据.读取设备ID显示错误信息.报告容量为8MB等。
以Marvelll SSD为例,可能会有以下三种操作状态:
1)内核固件控制下的驱动器操作:该模式称为安全模式。在这个模式下,驱动器会对大多数ATA命令(包括读取设备ID的0xEC命令)进行报错响应。只有加载固件指令可用。它会将固件加载到驱动器的RAM并执行。通常,当NOR闪存芯片损坏和bootloader程序损坏时,驱动器处于安全模式下。(很多品牌控制器的SSD都有安全模式或工厂模式,在修复或恢复过程中,你会发现非常有用)
2)bootloader控制下的驱动器操作:特征在于有限的支持指令。此阶段如果读取设备ID时驱动器返回字符串包含”Micron Loader”,有此类型提示最有可能是驱动器损坏或固件模块丢失。
3)在正常操作模式下,驱动器通常支持与其对应的完整指令集并返回标准ID。如果过程中遭遇错误会使功能受限。最典型的就是在数据读取或写入时提示中止错误(ATA状态寄存器中被设置Err位和错误寄存器被设置Abrt标志)
2.各品牌主控出错信息及应对方法
在启动过程中看到报错信息后,接下来我们需要”对症下药”,这里笔者总结了各品牌主控出错信息及应对方法,供大家按图索骥
3.案例解析
最后我们以一个案例做解析,该案例来自国内评测网站,在测试过程中,SSD出现故障
图片来自(PCEVA的头条主页)
测试文中指出”该盘在大约2500次异常断电之后掉固件,变成20M状态。”;
“20MB容量的未初始化分区,既不能完成初始化,也不能执行Secure Erase。这一点和Intel 8M后可以通过SE恢复工作还是不同的。”
按照故障处理图例,这是基于Phison主控的驱动器最容易出现的问题,如果需要数据,则可以等升级后(截止17年9月目前PC3000 SSD官方支持到PS3109)使用PC-3000 SSD+DE进行数据提取;如果不需要数据,则可以尝试使用量产工具进行重新量产。
结语:
“凡事预则立,不预则废”,面对未知的世界,未知的问题,只有早做准备,才能未雨绸缪,坦然应对。