器件型号: AM623
您好:
我想知道您是否可以帮助我们解决有关使用 AM62x 的 BCDMA 的一些问题。 我们使用 QNX 7.1 作为我们的操作系统、并在 BCDMA 传输完成时通过带中断功能的 BCDMA 来执行回调函数。 我们能够使用 BCDMA 成功地将数据从 GPMC 传输到 RAM、但我们有一些问题:
- 我已经为 BCDMA 序列的不同部分计时、下面我使用 QNX 跟踪事件将这些部分粘贴到了这里:
- 最佳 TRPD 推送持续时间 3us 最长 TRPD 推送持续时间 11us 平均 4us
- 最佳 DMA 持续时间 20us 最长 DMA 持续时间 40us 平均 23us
- 测量从 TRPD 被推入振铃缓冲区到执行回调函数的时间。
- 最佳完成回拨持续时间 6us 最长完成回拨持续时间 17us 平均 6us
- 将 TRPD 从完成队列中弹出并检查是否存在任何问题。
- 最佳 TRPD 砰砰声持续时间 4 μ s 最长 TRPD 推送持续时间 9 μ s 平均 4 μ s
- 您知道为什么这些运算的最短和最长持续时间之间存在如此巨大的偏差吗?
- 这些时间安排是否符合您或您的团队对这些操作的期望?
- 是否可以更好地了解 DMA 操作需要多长时间?
- 如果我们在不同的进程中使用数据包 DMA 来处理网络流量、这是否会对这些计时产生影响?
- 如何为 QNX 执行完成回调函数? 我假设它不会触发 ISR、因为我们可以使用互斥锁/解锁、printf 和其他 ISR 不安全函数、但我相信 DMA 正在向由 UDMA 提供服务的 SoC 发送中断。
- BCDMA 每次传输不同的数据长度、有时大至 1024 个字节、小至 4 个字节。 我看到的一个问题是、对于小传输、传输时间比回调函数执行时间短得多。
- 在我们用于较大传输的相同 GPMC 设置下、您或您的团队能否分享处理大型和小型 BCDMA 传输的任何策略?
- 据我所知、我们需要将传输从完成队列中弹出、但出于我们的目的、我们不关心 DMA 是否成功。 是否可能不会从完成缓冲区弹出传输、或者这是否会导致 BCDMA 出现问题?
感谢您和您的团队帮助回答我们的 BCDMA 问题。
从中导出:
Daniel Fettke