读取命令处理程序必须检查 短状态,以确定读取数据是否可用以及是否发生了任何错误。错误可能与当前命令事务或其他后台软件进程有关。图 3-12 介绍了读取命令的命令处理程序流程。
有关短状态的更多详情,可以在节 8.2.87(主应用程序)和节 7.2.6(引导应用程序)中找到。此命令处理程序流程对两种应用程序都有效。
- 读取预取 - 使用读取预取协议 发送读取命令操作码及其关联的命令参数。记录为该命令选择的标签 (A)。
- 读取短状态 - 使用短状态读取协议 读取“短状态”。
- 紧急关闭?- 此“短状态”位指示是否发生了紧急关闭情况。如果发生这种情况,命令处理应停止,以便处理紧急关闭。如果发生这种情况,HOST_IRQ 信号也将触发。有关紧急关闭的更多信息,请参阅节 6.2。
- COMM | CMD 错误?- 检查通信错误 或命令错误 短状态位。如果设置了任一位,则“读取预取”命令失败。在这种情况下,应读取错误历史 以确定特定的错误详细信息。读取“错误历史”后,“错误历史”和“短状态”应在下一个事务之前清除先前的错误。然后,主机可以确定要执行什么操作,例如重新发送“读取预取”命令或重新启动系统。
- CmdTag == (A)? - 检查“短状态”是否包含与“读取预取”命令一起发送的标签。这表示“读取预取”已由软件执行。如果这与所需的标签 (A) 不匹配,请继续轮询“短状态”,直到标签匹配。
- 读取数据可用?- 检查是否在“短状态”中设置了读取数据可用 位。如果设置了该位,则可以获取所请求的读数据。如果未设置该位,则继续轮询“短状态”。
- 读取激活 - 一旦读取数据可用,便可以使用“读取激活”命令通过读取激活协议 读取所请求的数据。
- 读取短状态 - 使用短状态读取协议 读取“短状态”,以检查“读取激活”后是否存在任何错误。
- COMM | CMD 错误?- 检查通信错误 或命令错误 短状态位。如果设置了任一位,则“读取激活”命令失败。在这种情况下,应读取“错误历史”以确定特定的错误详细信息。
- BIST | 运行错误?- 检查 BIST 错误 或运行错误 短状态位。如果任一位置位,表示后台进程遇到了错误。如果设置了这些错误位但未设置 CMD 错误位,则该错误与当前命令事务无关。这方面的一个示例是常规主应用程序轮询期间的温度传感器故障。在这种情况下,仍应读取“错误历史”以确定错误原因,但并不意味着当前的读取命令事务已失败。
请注意,只有命令错误 和通信错误 短状态位应视为命令失败。如果设置了 BIST 错误 或运行错误 位,但未设置“命令错误”或“通信错误”位,则另一个进程收到了错误,但命令仍已完成。