UFS的初始化过程(二)

这篇是接着上一篇的UFS 的Init过程(一)来写的。

我们先回顾一下在UFS 的Init过程(一)CSDN 中这张重要的图。

这里我们思考下,NOP OUT是UFS层面发出去的第一个握手动作。 Host在发送这个NOP OUT的时候,是不是要保证uni-pro

和M-PHY层链路的通畅?

所以,在NOU OUT之前,host和device之前应该有更底层的握手动作,这个过程我们称为link startup.那么,把上面的图稍作修正,如下。

这一篇我们就重点说Uni-pro层的link startup 过程。大家可以参考协议mipialliance specification for Unified Protocol version1.6的section 5.6.3和section5.7.8.

Link startup的过程包含以下phase.

可能乍一看不知道是在干什么,没关系我们慢慢来,每一个phase是在做什么。

1. Phase0 and Phase0b(Data lane discovery)

顾名思义,这个阶段的主要作用就是让host和device都discover一下对方用了哪几个lane.过程可以参考下图。

以上图为例,在上电之后,我们把host和device想象成黑暗中的两个人,他们看不见对方,所以也不知道对方用几个lane。

host TX: 我用的是PL#3和PL#2,所以就通过PL#3和PL#2分别发1个TRG_UPR0,携带lane number 11和10。

device RX:在黑暗中等待,忽然间两个RX收到了TRG_UPR0,分别是11和10. 哦,原来host用的是PL#3 和 PL#2. 那我赶紧在PeerTxConnectedLaneMask 上标记一下1100。

device TX: 我也发TRG_UPR0告诉host 我用的是PL#2吧。

host RX: 终于等到回复的TRG_UPR0了,哦~原来device用的是PL#2,那我也记录在PeerTxConnectedLaneMask上0100。

以上过程完成以后,按照规定,hostTX和deviceTX都要额外再发两个TRG_UPR0。

至此,phase0,0b就完成了。需要注意的一点是,UPR0有可能是host先发也有可能是device先发送。

2. Phase1 and 2(Data Lane Realignment)

phase1,2的过程主要是两端realign lane no.

可能你会奇怪,lane的信息在phase0b不是已经确认了吗,为什么这里还需要realign?好,再回忆一下,host TX告诉device它用的是lane2.3,device记录下来。那问题是,host不知道device记录了什么,记录的是否正确,这就是为什么还需要realign。

host TX: 我发TRG_UPR1来告诉device我记录的PeerTxConnectedLanesMask = 0100

device RX: 收到了,我就记录在LocalConnectedLanedMask = 0100。 并且配置两个logical lane =  LL#0 & LL#1

device TX: 我也要把自己记录的PeerTxConnectedLanesMask = 1100 发给host.

host RX:收到了,就记录在LocalConnectedLanedMask = 1100吧, 还要配置下logical lane = LL#0

完成上述之后,按照协议规定,host TX和device RX 还要额外再发两个TRG_UPR1。

需要注意的是,这个示意图是在Unipro的SPEC中截取,两个方向的lane num不相同。而在UFS产品中,两个方向的lane num是必须相同的。

3. Phase 3 and 4(Data Lane Realignment)

这个过程就比较简单了,每个TX发送 TRG_UPR2, 在RX收到之后, 再发送两个额外的TRG_UPR2就好了。

另外,也要把TX的logical lane numer配置好。

4. Capability Exchange

Phase4完成之后就要PA layer通过logical lane0 发送capability 以及一些version信息给对方。按照顺序包括PACP_CAP_EXT2_ind, PACP_CAP_EXT1_ind 以及PACP_CAP_ind。

从PA上看到发PACP_CAP_EXT1_ind以及PACP_CAP_ind的过程:

PACPZ_CAP_EXT1的内容:

至此,link start up的过程就完成了, host 和UFS之前沟通的桥梁就搭建起来了。 

后面的故事,就从NOP OUT拉开序幕了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值