关于DM8168的SATA接口与SATA3设备连接建立失败的问题
关于DM8168的SATA接口与SATA3设备连接建立失败的问题 影响CPU的版本:
2.0
细节:当DM8168的SATA接口与一个SATA GEN3设备(如一个硬盘)连接的时候,在复位和上电后,进行速度协商失败,不能建立连接。
有两种结果一样的连接失败类型:
(1) 丢失同步
对GEN3设备,它总是以其支持的最大速度来启动速度协商:通过送ALIGNp原生数据模式到HOST SATA子系统,Host SATA子系统以GNE1速度(1.5GBits/Sec)送一个连续的D10.2 Tone,理想情况下,应当保持这个状态直到Host认识目标的ALIGNp原生数据模式(以GEN2,或者GEN1,而非GEN3速度),然而目标还处于GEN3,由于混叠(aliasing)等原因,Host SATA子系统不能以一个不同的速度(GEN2速度)用ALIGNp原生数据模式回应给目标,Host以GEN2速度完成协商,在目标超时(54.6us)之前过渡到一个逻辑IDLE状态(Non-ALIGNp原生SYNCp),对于GEN3速度一旦超时,目标启动以GEN2速度发送一个ALIGNp原生数据模式,期望Host的一个ALIGNp原生数据模式永远不会发生,因为Host正处于GEN2速度的逻辑IDLE状态,另一个超时会发生,因为目标不能以GEN2速度收到ALIGNp原生数据,这迫使目标将其速度由GEN2降到GEN1,并企图以GEN1速度建立一个连接。Host依然处于GEN2速度的逻辑IDLE状态,在最后一个超时发生之后,目标请求一个复位(通过送COMINIT信号)来重新启动与Host建立连接建立的过程,这个新的连接建立的结果是一样的,Host和目标总是处于非同步状态。
(2) 未知状态/锁定
对GEN3,目标总是以支持的最大速度来启动速度协商:通过送ALIGNp原生数据模式到HOST SATA子系统,Host SATA子系统以GNE1速度(1.5GBits/Sec)送一个连续的D10.2 Tone,理想情况下,应当保持这个状态直到Host认识目标的ALIGNp原生数据模式(以GEN2,或者GEN1,而非GEN3速度),然而目标还处于GEN3,由于混叠(aliasing)等原因,Host SATA子系统不能以一个不同的速度(GEN2速度)用ALIGNp原生数据模式回应给目标,并维持这个状态(送GEN2 ALIGNp原生数据),目标超时(54.6us),并启动以GEN2速度发送一个ALIGNp原生数据模式,目标现在认识Host GEN2 ALIGNp原生数据模式,以一个逻辑IDLE状态(Non-ALIGNp原生SYNCp)回应,从目标方龛,完成了连接的建立,然而,Host被陷入到一个未知状态,送GEN2 ALIGNp原生,并从来没有完成连接的建立,Host和目标维持这种状态,直到更高层的Host SATA控制器应用(用户软件)执行一个复位。
注意:这个问题在目标最大速度为GEN2或者GEN1速度时候并不会出现。
解决办法:1) 使用速度为GEN2或GEN1的设备,以避免这个问题,或者:
2) 使用SATA3设备的跳线器,将其速度显示到GEN2,或者
3) HOST应用软件能连续执行端口复位,重新启动连接建立,最终成功建立一个连接,注意,这不是一个好的方法,因为为了建立一个连接可能需要进行很多次的复位。