七、RESET, POWER-UP AND POWER-DOWN
7.1、reset
以下小节定义了重置 UFS 设备或其一层的方法。
7.1.1、Power-on Reset:
通过关闭和重新打开 VCCQ、VCCQ2 和 VCC 电源来获得上电复位。 UFS 设备应具有自己的开机检测电路,在上电后该电路将 UFS 设备和所有 它的不同层进入已定义状态。
DME_SAP 提供服务原语,包括一个用于重置整个 UniPro 协议栈和一个用于 UFS 设备重置等。 DME_RESET :当 UniPro 堆栈必须重置时使用,应用于重置 DME 和与其相连的 UniPro 堆栈层 L1.5 到 L4。
DME_ENDPOINTRESET:当 UFS 主机希望 UFS 设备执行重置时使用它。原语将用于向链路端点发送 EndPointReset 请求命令。 (这两个DME reset前有叙述,ufs 2.2 协议扫盲(三)_GRZ的博客-CSDN博客)
EndPointReset 是本地应用程序请求对等端点应用程序重置它自身的一种方式。 它本质上是通过 UniPro Link 传输的远程触发事件 (TRG_EPR)。 本地端点应用程序可以使用DME_ENDPOINTRESET.req 原语请求发送此触发事件。 对等 UniPort 应向其端点应用程序指示此触发事件的接收。 对等端点应用程序执行的结果操作是可选的。 它可能会自行重置或可能拒绝对触发器做出反应。 如果端点应用程序自行复位,它也应向其 UniPort 进行热复位。 如果不执行此操作(应该指的是对其Uniport的热复位),则 EndPointReset 对 UniPro 堆栈没有进一步影响。
UniPort:实现 UniPro 规范(L4 到 L1.5)和物理层 (L1) 规范的接口。 UniPort 定义不包括 UniPro 用户或任何应用层规范。
unipro中三种类型的复位,UniPro Cold Reset、UniPro Warm Reset 和 EndPointReset。 UniPro 实施必须提供这些重置。 冷复位和热复位影响整个 UniPro 堆栈、传输层 (L4) 到 PHY 适配器层 (L1.5) 以及链路本地端的相应属性。 热复位和冷复位的区别在于冷复位会清除统计信息,而热复位不会。 EndPointReset 是一种通过链路触发对等设备应用程序重置的方法。 EndPointReset 触发器对应用程序的影响(如果有)是特定于endpoint(Endpoint: Device that is a leaf of a Network.)的。
7.1.2、Hardware Reset
hardware reset的高低电平时间:
复位信号为低电平有效。 UFS 设备不应检测 100 ns 或更短的正或负 RST_n 脉冲。 UFS 设备应检测大于或等于 1us 的正或负 RST_n 脉冲宽度。
7.1.3、EndPointReset(上边有提到):
The EndPointReset feature is defined in the MIPI UniPro specification.
通过 DME_SAP:DME_ENDPOINTRESET.req = 1 从主机应用程序客户端到主机 UniPro 的接口调用。
设备管理器通过 DME_SAP 从设备 UniPro 接收 EndPointReset 函数调用并执行 EndPointReset 函数。
UFS 设备应在接收到 EndPointReset 时完全重置自身:UFS 标志(上电重置 UFS 标志除外)、UFS 属性(上电重置 UFS 属性除外)和 UniPro 属性重置为其默认值,并且 UniPro link startup 是初始化完成的。
由于属性已重置为其默认值,因此可能需要再次配置设备。 Further, downloading the boot code from the UFS device is optional, and is based on system-level conditions. 。UFS 主机应忽略来自 UFS 设备的 EndPointReset 的接收。
下图的步骤,正如上文所述。
7.1.4 Logical Unit Reset :
1、Power on events include:
a) power being applied to the SCSI device; (电源加在scsi设备上)and
b) vendor-specific events that cause the SCSI device to behave as if power has been applied (e.g., firmware reboot).特定于供应商的事件导致 SCSI 设备表现得好像power applied(例如,固件重新启动)。
2、Hard reset is a SCSI device condition resulting from:
a) a power on condition; 上电(power on是由通电事件导致的 SCSI 设备的一个状况。 当 SCSI 设备通电时,它将导致Hard reset。)
b) microcode change ; 固件升级 or
c) a reset event indicated by a Transport Reset event notification.(事件通知 SCSI 传输协议服务, 所有 SCSI 传输协议标准都应定义 SCSI 传输协议的specific requirements,以实现Nexus 丢失指示、<Transport Reset即传输重置指示>和预期电源丢失指示,以及这些指示何时传送到 SCSI 应用层。 当 SCSI port(见如下图的位置)检测到事件时,它应使用事件通知服务(见c中的黑字事件通知 SCSI 传输协议服务)通知设备服务器、任务管理器或应用程序客户端已检测到事件。 )
3、Logical unit reset is a logical unit condition resulting from:
a) a hard reset condition:如上2所述
b) a logical unit reset event indicating that a LOGICAL UNIT RESET task management request has been processed:一个逻辑单元重置事件,指示一个LOGICAL UNIT RESET任务管理请求被处理。LOGICAL UNIT RESET This function shall be supported by all logical units.
逻辑单元重置条件仅适用于 SCSI 目标设备。
4、通过 UTP_TM_SAP 从主机应用程序客户端到主机 UTP 的函数调用:Task management LOGICAL UNIT RESET (IN ( I_T_L Nexus )).。在分层结构中找到Task management,通过UTP_TM_SAP进入UTP,输入参数是 启动器,目标器,逻辑单元上下文。LU 任务管理器应通过 UTP_TM_SAP 接收来自设备 UTP 的函数调用并执行 LU 复位函数。LOGICAL UNIT RESET不会将设备参数设置为其默认值,因此不建议使用LOGICAL UNIT RESET来准备 UFS 设备以进行系统启动。
流程图如下:
7.1.5 Host UniPro Warm Reset :
a) 主机中的 UniPro 热复位事件是 UFS 设备复位的间接原因。 详见【MIPI-UniPro】。
主机系统重置其自己的 UniPro 堆栈:主机系统端的 UniPro 堆栈重置活动也通过 DME_LINKLOST.ind 消息在 UFS 设备端重置 UniPro 堆栈(意思估计是,设备端进行了reset,会导致host端也要进行reset,下面是解释)。 如果 UFS 设备将从主机系统接收到此类 DME_LINKLOST.ind 消息,它将启动重新初始化其自己的 UniPro 堆栈的过程。 此外,所有 UFS 设备级活动也已中止,所有逻辑单元中的任务队列列表应清除,UFS 电源模式应根据 bInitPowerMode 返回睡眠模式或活动模式。
b) UniPro 热复位与冷复位的效果非常相似,但不应由 POR 事件触发。 当检测到不可恢复的 UniPro 堆栈故障时,本地端点应用程序可能会触发 UniPro 热复位。 它也可能由 DME 用户在接收到 DME_LINKLOST.ind 时触发,表明对等设备已经历重置并已启动链路启动序列(参见第 5.4.2.7 节)。 热复位应将所有层返回到它们的初始状态。 所有协议状态机、计时器和属性都应重置为其重置状态,并且所有数据缓冲区都应清除。 与冷复位的不同之处在于,包括统计信息、错误计数器和错误标志在内的状态字段不会被清除。 热重置不是为了重置本地应用程序。
7.1.6、Summary of Resets and Device Behavior :
![](https://i-blog.csdnimg.cn/blog_migrate/a963b5014d291470720e44376f18467a.png)
表中的区别在上文的叙述中都有。
Note1:在设备初始化结束时,电源模式从活动状态转换为预睡眠状态,然后是睡眠状态(在实现特定时间之后)。
Note2:“Boot process”列显示在哪种类型的重置后系统可以执行启动过程。 如果重置事件将 UFS 设备恢复到默认状态,则启动过程被启用:所有参数都设置为默认值,队列为空等。 LU Reset比较特殊,如前所述,LOGICAL UNIT RESET不会将设备参数设置为其默认值,因此不建议使用LOGICAL UNIT RESET来准备 UFS 设备以进行系统启动。
下表就是各种reset事件对各种属性值的影响:
Note2:具有“一次写入”或“持久”访问属性的属性和标志的值在电源循环或任何类型的重置事件后保留。