AR# 47531

Zynq-7000 SoC,SDIO — DMA 突发事务处理对齐与长度要求

描述

DMA 突发长度必须是与 4 字节对齐的倍数,才能避免覆盖 DMA 缓冲器中的数据。

解决方案

影响:

较小

解决方法::

除了最后一个缓冲器可以是任意大小外,应确保所有缓冲器都是 4 字节的倍数。

受影响的配置:

使用支持 ADMA2 模式的 SDIO 控制器的系统。

受影响的器件修订版本:全部,无计划修复。请参考(Xilinx 答复 47916) - Zynq-7000 SoC 芯片修订版差异。

 

SD 主机控制器规范 2.00 版本规定 ADMA2 缓冲器描述符及其所指向的缓冲器都必须与 4 字节对齐。然而,每个 DMA 输入的长度可以是1 至 64 KB 的任意数。  

如果该长度不是 4 字节的倍数,控制器就无法正确处理针对主机存储器卡的 ADMA2 写入。以下范例演示了该问题。

描述符列表:

ADDR

LENGTH

DATA

0x1000

4 字节

0x0123_4567

0x2000

3 字节

0xABCD_DEAD

0x3000

4 字节

0x8912_2345


在 ADMA2 操作初始化时,控制器可从地址 0x1000 取回 4 字节的数据并将该数据传输给内部 FIFO 的位置 0(每个位置有 32 位宽)。 接下来从地址 0x2000 取回下一个描述符数据,并将该数据复制到位置 1。 由于位置 1 并没有被完全填充(只有 3 个字节有效),因此指示器未增加。最后一个描述符数据从地址 0x3000 取出,并将该数据复制到位置 1。 位置 1 中原有的 3 个字节被错误地覆盖。

链接问答记录

主要问答记录

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