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.

[参考译文] 编译器/OMAP-L138:CGT 7.4 的SPLOOP中断问题................................................................13.

Guru**** 2563930 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/593236/compiler-omap-l138-sploop-interruption-issue-with-cgt-7-4-13

部件号:OMAP-L138

工具/软件:TI C/C++编译器

我们正在为一位客户提供支持,该客户报告他们在设备上遇到重置问题,并且根据他们捕获的数据,这似乎与DSP SPLOOP指令有关。

我们想检查这是否是已知问题,以及避免此问题的正确方法是什么。 代码I问题是以前使用旧版CGT编译的旧版代码,未发现这一点。 目前还不清楚为什么会出现这种情况,如果与新的编译器(v.7.4 13)有任何关系, 我们想确认一下,因为以前有一个问题,在SPLOOP中报告了类似的内容:

  

以下是C674x DSP的症状和读数:

EFR = 0x4000万

NRP = 0xc7975fba

NTSR = 0x0.142万f

IERR = 0x0万

 

查看DSP内核674文档,它显示

1. EFR show exf flag =1,检测到异常。

2. IERR显示它不是内部异常。

3. NTSR位14:SPLOOP中断导致SPLX状态问题

问题:

1.编译器文档显示:

由于异常而终止的SPLOOP无法正确恢复。 NTSR中的SPLX位应在返回前验证为0。似乎客户正面临相同的问题,因为他们无法正确恢复。 那么,是否有办法避免这种情况? HW或编译器是否会在SPLOOP指令期间插入掩码中断?

2. 7.13 1部分 “中断循环缓冲区”指出 ,“在遇到SPLOOP(D/W)指令之前,中断自动被禁用2个周期。 这是否意味着HW在处理SPLOOP期间会实际屏蔽中断? 如果是,则为什么他们看到SPLOOP中断问题? 是否有允许SPLOOP不被中断或缺少任何其他配置的编译器设置?

3. 由于以前没有遇到过这种问题,使用这种传统代码库,他们怀疑这是 由于新的编译器(v 7.4 13)而引起的问题? 如果编译器champs 需要添加任何编译器选项以避免或防止此问题,那么最好从编译器中了解一下。 他们使用编译器选项-im100,这是否有助于避免此问题?

感谢你的帮助。

此致,

拉胡尔

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

    7.4 编译器的最新版本解决了与SPLOOP和中断相关的硬件问题。  您可能想尝试一下。 7.4 Tm13是7.4 编译器的较旧版本。 当前版本(截至2017/05)为7.4。21。

    software-dl.ti.com/.../download.htm

    但是如果不是你所说的内部异常,那么我不知道发生了什么。 这可能不是SPLOOP相关的硬件问题。

    如果SPLOOP中发生异常,则无法恢复。

    在运行SPLOOP时,硬件将暂时禁用中断。  一旦循环达到稳定状态,中断将重新打开。  如果发生中断,则会对当前正在执行的迭代执行管道关闭,并对中断进行服务。 中断返回后,循环管道从中断的位置返回。 同时,一旦达到排卸状态,中断将暂时关闭,直到循环的脱毛结束。

    -mi<n>只影响不能中断的循环。  它告诉编译器可以关闭多少个周期中断。  这主要影响不使用SPLOOP的通过管道传递的软件循环。  有关多赋值代码和-mi选项的说明,请参阅编译器用户指南。  由于SPLOOP可以中断,-mi<n>不会影响SPLOOP代码序列的生成。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果所有其他操作都失败:hammer:--disable:sploop将关闭在软件流水线中使用SPLOOP,但仍允许软件流水线。 沉船:--disable_software_pipeline将关闭软件流水线。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢Todd的见解和建议。 我们将与客户一起更新编译器版本,并告知您此操作是否解决了问题。 在此之前,我已将您的回答标记为建议答案:)

    此致,
    拉胡尔