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.

[参考译文] CCS/TMS320C6670:在 CCSv5的 C6670仿真器上测试 EDMA 时出现问题

Guru**** 2564390 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/581783/ccs-tms320c6670-problems-testing-edma-on-c6670-simulator-in-ccsv5

器件型号:TMS320C6670

工具/软件:Code Composer Studio

我使用的是 Windows 7 64位、Service Pack 1、CCS 版本5.5.0.00077和 Vision SDK 2.10。

我一直在尝试使用 C6670设备周期近似仿真器小端字节序测试 VISION_SDK_02_10_00_00\ti_components\Algorithms_codecs\eve_sw_01_12_00_00\starterware\docs\eve_starterware_userguide.pdf 中所述的 EDMA 自动递增2D 示例。 (请注意、最终示例应在 TDA2x 电路板上工作、但我需要先在 CCS 中对其进行仿真)。

但是、当死锁发生时、我在等待(IN/OUT)信道呼叫方面遇到问题。 下面是一个代码片段(测试仅使用两个输入和输出缓冲器来回传输数据):

int bufId = 0; 

//用于管道升级的 DMA 触发器,输出传输是虚拟的,并在 DMA 实用程序 EDMA_utils_autimple_triggerInChannel (dmaAutoContextInOut[bufId])中处理; //低于2个额外传输是由 DMA 实用程序 EDMA_utils_autimple_triggerIncrementInOutChannel (dmaAutoContextInOutOutOutOutOutOutOutInOutUt) ^ 挂起且需要 的;// Outrum_Outrum_Outrum_Outwait (dum_Outrum_Outrum_Outrum_Outrum_Outrut_Outwait);[rum_Outrum_Outrum_Outrum_Outrand](dum_Outrum_Outrum_Outrum_Outrum_Outrum_Outrut_Outrand] //它在这里挂起但被触发,它应该最终完成 //缓冲区中下一个的 DMA 触发 器 EDMA_utils_autocimine_triggerInChannel (dmaAutoContextInOut[bufId^ ^ 1]);//等待前一个传输输出 EDMA_utils_autimple_triggerIncrementInChannel (dmaAutoContextInout[bufId];//等待前一个传输 EDMA_Outdooruminuminuminuminat_out_out1;duminuminuminout_out1;duminum_out1) ;duminuminuminuminat_autobuat_out1;duminuminuminuminuminuminuminuminuminuminuminuminuminuminout1;duminuminout1 (dum

我想知道我是否可以在仿真器上测试这个、如果可以、我是否需要配置一些额外的设置。

感谢您的帮助。 谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Nik、
    遗憾的是、我们在相当长的一段时间内未支持仿真器、因此我们无法为它们提供太多帮助。 抱歉

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

    是否有机会将此主题移至论坛中与 VisionSDK 相关的部分、因为该问题与 VisionSDK 安装随附的示例更相关? 我似乎只能在无法制作新主题的汽车(只读)论坛上找到它。

    提前感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Nik、
    我移动了它。 祝您好运!

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

    我已将您的问题转交给 EVE 专家。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    TDA2X 仿真器支持 EDMA、因此在仿真器上运行 EDMA 示例时不会出现任何问题。 您能检查 EDMA 值的 IPR 寄存器、看看为什么在等待期间您没有获得与触发期间在 ESR 寄存器中设置的值相同的值。

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

    您好、安州、

    实际上、我将在具有 TMS320C66x 内核的 C6670和 TCI6616仿真器上测试该示例、因此我应该能够在这些仿真器上进行测试。 我目前在分步调试方面遇到问题,所以我唯一可以提供的信息是我在暂停执行 waitInChannel()调用时获得的中断相关寄存器的状态。 网址是 :http://tinypic.com/view.php?pic=2k1v8z&s=9#.WNuIfmclGUk

    我应该期待什么呢?

    当我成功配置调试时、我将返回更多信息。

    感谢您的帮助、期待收到您的回复。

    编辑:我在其他计算机上进行了分步调试,现在可以确认上述图片中的寄存器状态在从示例开始到 waitInChannel()及其执行期间保持不变。

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

    您好、Nik、

      在 您使用此线程添加的代码片段中,注释显示它在 while 循环开始时的等待调用中挂起。 我的问题是、它是在第一次迭代本身还是在以后的迭代中挂起?

    此致、

    安州

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

    您好、安州、

    是的、它在第一次迭代中立即发生。 我进一步检查了这个问题、发现执行停留在 while 循环中、等待等待 WAIT_WORD 到达、方法是将 IPR 寄存器的值与它进行比较、特别是在"dma_funcs.h"文件中的内联函数 dma_wait 中。 因此、您对 IPR 寄存器和缺少的中断很正确。 现在、我的问题是导致这种行为的原因是什么、我是否需要对目标配置进行一些调整才能使其正常工作、或者是否可以在此处的某个位置丢失 volatile 关键字成为原因? 我可以确认我尝试在 XDS220仿真器上运行的测试是否正常、但如果可能、我需要让它在 CCS 中的仿真器中运行。

    感谢你能抽出时间,感谢你的帮助。

    编辑:我已成功地通过在监视列表中的调试期间手动设置 IPR 值来使执行离开循环、但是、正如预期的那样、结果在末尾逻辑上不正确

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

    您好、Nik、

      当您说此代码在  XDS220仿真器上正常工作时、 您要使用哪个器件运行? 是 TDA2X 吗? 通常、如果您的代码在目标上运行、它也应该在仿真器上运行、这就是为什么要从您那里获得有关此操作的确认。


    此致、

    安州

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

    我无法提前回复、因为我在度假、对此我深表歉意。

    您的问题答案是肯定的、测试在 TDA2x 电路板上的 XDS220仿真器上正常工作。

    与此同时、我遇到了一些问题、如果执行没有被阻止、但需要很长时间才能完成、该怎么办? 对于仿真器而言、这是一件常见的事情吗? 我在传输8字节到500兆字节的任意数量的数据时、会得到相同的行为、它会挂起、等待正确的字到达。

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

    您好、Nik、

      即使在模拟器中也不应花费太多的时间进行复制。 但这令人惊讶的是、您的代码在 EVM 上工作、但在仿真器上不工作。 您是否尝试在 TDA2X (vayu)仿真器上运行相同的代码?

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

    只是一个附带问题。 为什么要使用这个古老的 CCS 版本? 为什么不尝试更新到最新的 CCSv7、它是免费的、那里的仿真器可能工作正常?

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

    感谢您的建议。

    很遗憾、我目前无法获取 vayu 仿真器、因为我知道我需要有 CDDS 帐户才能下载它、而我没有。 我将尝试联系我的经理寻求帮助。

    当我有一些结果时、我会回来给你。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Alex:

    我使用 CCSv5是因为、正如我所知、它是支持仿真器的 CCS 的最后一个版本。 我在论坛上看到过一些人的帖子、他们试图通过将某些文件从 CCSv5复制到 CCSv7来启用这些帖子、但我不确定其好处是什么。

    可能是我认为不正确、这就是为什么我希望得到一些澄清或指南、以便在 v5之后在 CCSS 中启用仿真器。

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

    [引用 USER="Nik TRIF"]我正在使用 CCSv5,因为据我所知,它是支持仿真器的 CCS 的最后一个版本

    没错。 CCSv5是仿真器附带的最后一个版本。

    [报价用户="Nik TRIF"]我在论坛上看到过很多人的帖子、他们试图通过将某些文件从 CCSv5复制到 CCSv7来启用这些帖子、但我不确定这有什么好处。

    这在理论上应该起作用。 但是、此变通办法不是 TI 支持的解决方案、因此不建议这样做。 如果您确实选择使用此路由、我们不能提供太多支持、因为这是一种不受支持的解决方案。

    [引述 USER="Nik TRIF"]可能是我的想法不正确、这就是为什么我希望能够提供一些澄清说明或指南、以便在 v5之后在 CCSS 中启用仿真器。[/引述]

    没有支持的解决方案可用于通过 CCSv5启用仿真器。 仿真器不再受支持。

    Ki

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

    我终于有了一个 Vayu 子系统仿真器、我很高兴地说、测试正在运行、更重要的是、它在逻辑上是正确的! 我现在想知道的是、该仿真器是精确到周期还是近似到周期、以及通常可以使用它进行多精确的性能评测?

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

    您好、Nik、

      如果您的性能评测包括 DMA、则它不精确到周期。 如果您仅测量循环的周期(不包括 DMA)、则仿真器基本上会假定采用平面存储器模型、因此如果您的循环具有计算限制、则周期将非常接近仿真器周期。 但是、如果您的环路受负载存储限制、则周期将与目标上的周期不匹配。

    此致、

    安州