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 AP SoC 器件:芯片修订差异 | N/A | N/A |
AR# 47531 | |
---|---|
日期 | 06/13/2018 |
状态 | Active |
Type | 设计咨询 |
器件 |