AR# 47537

Zynq-7000 SoC, SDIO – ADMA2 模式读取破坏 PIO 模式写入的数据

描述

如果控制器使用 PIO 模式写入数据,随后用 ADMA2 模式读取数据,控制器会无法在 DMA进程中发送 Auto CMD12(停止请求),读取 FIFO 会填满错误数据。

在PS 2.0版及更高版本中已修复。不会影响量产芯片。

可以采取如下方式避免:在使用 PIO 模式写入时选择 SDMA 模式(非 ADMA2 模式);不使用 PIO 模式写入数据。

解决方案

影响:

很小。敬请阅读下文了解影响详情。

解决方法::

解决方法详述了二步骤。

受影响的配置:

使用 SDIO 控制器的系统

受影响的器件修订版本:在 PS 2.0 版及更高版本中已修复。请参考(Xilinx 答复 47916) - Zynq-7000 SoC 芯片修订版差异。



影响详情

如果 SD 主机控制器先以 PIO 模式将数据写入 SD 卡,然后又试图以 ADMA2 模式从 SD卡中读出数据,该主机控制器将无法向这个 SD 卡发送 Auto CMD12(停止请求)。因此 SD 主机控制器的内部 FIFO 中将填满错误数据。

解决方法详情

此问题有2个解决方案:

  • 在执行 PIO 模式的写入时,SD 主机驱动程序应将 dma_select 模式设置为 2b00。在进行 ADMA2 读取操作时,该驱动程序可将 dma_select 模式切换为 2b10。
  • 请不要执行任何 PIO 模式写入,一直使用 ADMA2 模式写入/读取操作。使用 PIO 模式写入/读取的吞吐量低于使用 ADMA2 模式操作的吞吐量。

链接问答记录

主要问答记录

Answer Number 问答标题 问题版本 已解决问题的版本
47916 Zynq-7000 SoC 器件:芯片修订差异 N/A N/A
AR# 47537
日期 05/23/2018
状态 Active
Type 设计咨询
器件