我正在尝试在 CPU 2上从一个内存位置到另一个内存位置执行 DMA。 传输由代码触发。 当我启动它时、DMA 寄存器显示为正在运行。 代码必须等待表明传输已完成、并且 DMA 中的源地址和目标地址已发生相应的更改。 但不会传输任何数据。 它在 CPU 1上工作正常、两个 DMA 的设置是相同的。 也尝试了不同的存储器、结果相同。 因此我认为这可能是内存设置。 但到目前为止,我还没有发现任何问题。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我正在尝试在 CPU 2上从一个内存位置到另一个内存位置执行 DMA。 传输由代码触发。 当我启动它时、DMA 寄存器显示为正在运行。 代码必须等待表明传输已完成、并且 DMA 中的源地址和目标地址已发生相应的更改。 但不会传输任何数据。 它在 CPU 1上工作正常、两个 DMA 的设置是相同的。 也尝试了不同的存储器、结果相同。 因此我认为这可能是内存设置。 但到目前为止,我还没有发现任何问题。
尊敬的 Ed:
请检查您尝试为 CPU2.DMA 传输使用的存储器是否实际属于 CPU2。 如果源/目标是 GS 存储器、则需要使用 MEM_CFG 寄存器将存储器分配给 CPU2。 GSxMSEL 是您需要在 TRM 中查找的寄存器、以了解更多详细信息。 http://www.ti.com/lit/ug/spruhm8h/spruhm8h.pdf
如果此回复解答了您的疑问,请单击帖子底部的“验证答案”按钮。
谢谢、此致
Pramod
您好 Pramod、
感谢您提供最新 TRM 的链接。
我已经解决了这个问题。 内存 DMA 仅将数据移动到 GSx RAM。 我们一直在使用 LSX RAM。 当我将存储器更改为已映射到 CPU2的 GSx RAM 时、效果良好。
谢谢、
ED