1. 架构
- SATA每一层都有错误检测以及错误信息的上报
- 所有的错误信息都是通过SStatus和SError寄存器来看
- 大致可以将错误分为如下类:
- Freeze:严重的错误,无法恢复。需要冻结状态,等待reset
- Abort:预期错误状态会持续,通常会终止这些操作。
- Retry:预期错误状态不会持续(暂时性错误),进行重传操作。(CRC、8b/10b Error、Display Error)
- Track/ignore:可恢复的错误,跟踪或忽略
2. Phy layer的错误处理
2.1 未正确与Device进行交互
- 没有Device 或者 OOB交互出错
- 状态信息会通过SStatus寄存器看到(AHCI中的prot寄存器0x28)