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.

[参考译文] TMS320C6748:使用 EDMA3和 MMCSD 驱动程序时、upp 输入数据丢失。 冲突?

Guru**** 2562120 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/596240/tms320c6748-upp-input-data-lost-when-using-edma3-and-mmcsd-drivers-conflict

器件型号:TMS320C6748

我在 TI-RTOS 2.0.1.23上有一个 C6748系统、该系统已经可靠运行了一段时间-直到我将其更改为开始写入 SD 卡。

 

来自 ADC 的数据通过 UPP 到达、并由 UPP 的 DMA 存储到12ms 的数据包中。 数据包进入队列以由算法处理(通常等待时间很短、因为算法在高优先级任务中运行)。 算法生成12ms 输出数据包(在更高的采样频率下)、并将它们放入队列中、从此处 EDMA3通过 McASP 将它们输出到编解码器。 编解码器和 ADC 完全同步、因此输出数据包在队列中花费的时间在20-21ms (介于1到2个数据包之间)相当恒定。 系统运行数小时数天、输入和输出保持完全同步。 EDMA LLD 为 v2.12.0.20

 

然后、我从 BIOS PSP 3.0.1.0中添加了 MMCSD 驱动程序、并使用 mmcsd_sample 项目将测试模式写入 SD 卡。 它在低优先级任务中运行、以便不会干扰原始处理-或者我想这样做。 SNAG 就是这样-当通过一次对 BlkWrite()的调用将32KB 块写入 SD 卡时,从输出队列到编解码器的数据将逐渐丢失-每个数据包在队列中花费的时间更少,直到没有剩余的数据。 SD 的总数据速率约为300kb/s  如果我以相同的总数据速率编写4KB 块、则不会再察觉到损耗(虽然这并不意味着问题得到解决、但它可能不太可能发生或不太频繁)。

 

我一直在尝试弄清发生了什么、UPP 似乎正在丢失输入数据。 uPP DMA 每行采集192个 ADC 样本、每窗口采集36行、构成一个12ms 数据包。 我一直在使用 Timestamp_get32()监视窗口 ISR 的 UPP 结束之间的间隔、我看到这是:通常、间隔为12ms、典型变化为2us。 很少 ISR 延迟高达25us、但始终以下间隔短相同的时间、因此告诉我 系统已赶上。 但有时、两个连续间隔会延长、例如100us 和226us。 数字会有所不同、但总数始终接近336us、这是获取一条 DMA 数据线所需的时间。 以下 间隔 不 会更短、因此系统不会赶上进度。 每次发生这种情况时、输出队列中的数据保留量都会减少相同的数量、大约为336us。

在输出端、编解码器中断(EDMA 完全回调)之间的间隔是正常的。

 

因此、我想 EDMA3和 UPP DMA 之间存在冲突。 进入编解码器的数据一次只有2个字节(ACNT=2、BCNT=252、一个同步模式)、所以这是快速的并且不会发生冲突。 SD 卡中的数据是一个大块、因此我想确保它不会锁定其他活动。

编解码器使用 EDMA3实例0、队列0、并且 MMCSD 设置为使用实例0、队列1 (因此它们使用不同的传输控制器、而 MMCSD 使用较低优先级队列)。 我认为、突发大小是64字节的默认值-我没有更改它。

我已经调整了总线主控优先级、将 UPP 从4提高到0、并将 EDMA3_0_TC1从0降低到 7、但这没有什么不同。

我正在检查 UPP 上溢和下溢错误、但我从未看到任何错误。

 

我还可以尝试其他什么?

 

为什么、如果 UPP 缺少整行数据、它是否总是影响2个连续窗口? 这是否意味着 UPP 缺少 STARTA 脉冲?

非常感谢大家为我们提供的一些指导。

罗伊

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Roy、

    我已通知设计团队。 反馈将发布在此处。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。

    在这个阶段 、我只是在寻找一些关于我可能没有想到尝试的东西的建议。 例如、或许有一种方法可以配置我尚未发现的 mmcsd 驱动程序?

    罗伊