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.

[参考译文] Hercules _SAFETY_MCU_DEMOS:HET IDE -内存溢出错误

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/564982/hercules_safety_mcu_demos-het-ide---memory-overflow-error

器件型号:Hercules _SAFETY_MCU_DEMOS

您好!

我正在为我的 TMS 570 LS 1227系列开发 HET IDE。 我有与程序大小/存储器相关的查询。  

 我有400多行的代码。 在 main 中、它包含开关和分支类型的代码。 当我执行代码时、我收到内存溢出错误、并且 HET IDE 崩溃。  我在不同的部分执行了代码、代码运行完美、 但在合并后崩溃。 每条指令在下一个地址中都有提及、在暂停状态中没有  

此致、

Suyog  

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

    您似乎已经遇到了工具的局限性? 我会将您的帖子转发给具有更多 IDE 背景的关联人员、以查看他是否了解任何大小限制。

    还需要考虑的一点是、TMS570LS1227器件上的每个 N2HET 模块的存储器大小为160个指令字。 如果 HET 程序中的400+线路中的每一条线路是一个指令字、那么您很容易超出了 MCU 上的可用存储器、并且应该考虑优化并有可能在器件上的两个 N2HET 模块之间拆分函数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Suyog、

    我需要知道 IDE 崩溃意味着什么。

    我不希望 HET IDE 实际崩溃。  如果由于代码大小太大而导致返回错误而无法加载 、或者如果程序由于每个循环有太多指令而执行溢出、则我希望您的程序过大时会出现这种情况。

    您能否提供有关错误的具体详细信息?  如果它实际上是崩溃、那么我们可以打开一些崩溃转储功能、以便进行调试、但我怀疑它是其他问题之一。

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

    您需要执行所有指令、并在每个环路分辨率周期结束前将 PC 返回到 HET 存储器中的地址'0x00'。

    假设您将预分频器设置为0x700、我认为这是128个周期。 您需要完成程序的执行、并至少在第127周期跳回到地址0 (HET 程序的开始)。 否则、HET 溢出会设置一个错误标志、指示溢出、并且在循环期间调度的任何引脚操作都将被"取消"、因此引脚不会切换。

    除了由于代码太大而耗尽 HET 存储器之外、循环中循环的循环次数越多也是"溢出"的下一个可能位置。

    您无法对存储器执行任何操作。 如果您在环路中需要更多的周期、则可以增加 LRP。 您可以转至/128 (0x700)、而不会丢失高分辨率时钟上的任何分辨率。 然后、您可以开始增加 HR 预分频器、这会使您的分辨率降低、例如/256 (0x701)、/512 (0x702)等 如果您在/128时的分辨率为10ns、但您的分辨率在/256时降至20ns、在/512时降至40ns、依此类推...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

     感谢你的答复。

    是的、我将对 代码进行优化 、并且可以在第2个模块上工作、因为我使用了 XORing、  

    此致、

    Suyog

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

    您好!

     感谢您的快速回复。

    首先、我收到 一个内存故障错误、之后它没有响应。

    此致、

    Suyog

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

    我不确定我是否理解。 您是否遇到了"撞车"问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Suyog、

    也许您可以发送 HET 项目、这样我们就可以尝试在这里重复该问题。
    您可以在此处发帖、也可以直接将其发送给我。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我仍然对 HRP 感到困惑。 我对分辨率周期非常灵活。

    假设我正在处理 lr precsalar -128和 HR Prescalar -2,计数256个循环分辨率周期。 仍可管理200个指令字吗?

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

    我真的不能仅仅根据这些信息告诉您答案。

    首先、如果200条指令中的每一条都被执行、我会说它可能会关闭、因为并非每条指令都是单周期的。
    大多数是、但有些需要2-3个周期才能完成。 因此、如果您的200指令程序完全由2个周期指令组成、那么如果执行每个指令、可能会出现问题。

    但是、HET 程序不可能执行每条指令。

    因此、您确实需要对程序的最坏情况执行时间进行一些仔细分析、但很遗憾、您必须手动进行分析。

    好消息是、通常只需确定代码的最长路径、代码通常不能太大、因为指令存储器实际上是有限的。 在 HET 环路分辨率周期内有循环也不常见、在这个周期内、每个 HET 环路分辨率周期执行多个迭代[这可以完成、但通常不会完成。 我执行此操作的唯一时间是针对"路径"、例如每个循环的数次除法或乘法内核迭代]

    在了解您的编码方式后、您将了解更多有关具体案例的信息。

    PS... 同样作为 FYI -如果执行的前一条指令修改了下一条指令的数据字段、则+1周期的指令会受到额外的惩罚。 这在指令说明中没有计算出来、其中显示周期1-3、例如、它是一种全局惩罚、在正常执行周期计数的基础上应用于整个板。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    目前,我没有遇到问题。 但2天前、它在错误弹出窗口后出现。 它正在崩溃。
    但是、当我单击-ok 或关闭错误窗口时、它会显示"me - stopped working (我-停止工作)"窗口。 在点击 CANCEL 或 Close 后、HET 窗口将终止。 然后、如果我正在使用这个大程序、我必须在每个错误窗口后重新启动。 否则,它的工作正常!!!

    此致、
    Suyog
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但让我回到这里、清楚地回答一个问题。

    您具有与环路分辨率周期中有 VCLK 一样多的"执行周期"。

    VCLK 的数量是 HR 预分频* LR 预分频-1、因此如果 HR 预分频为/2且 LR /128、则是、每个循环最多有255个周期的"执行时间"。

    高达 HR 预分频为/1、LR 预分频为/128、您的时序函数以 VCLK 的分辨率执行。

    因此、如果 VCLK 以100MHz 运行、则计时器的步长增量为10ns。 将 HR 增加到/2后、步长将增加到20ns、因此分辨率通常会降低、但对于这个价格、您将获得更多的周期来执行每个循环的程序。

    这可能是 HET 工作方式的"基本"权衡。

    有一个次要权衡。 这是您的环路分辨率周期越大、任何给定引脚上的两个事件之间所需的时间就越长。

    例如、在环路分辨率周期内、您不能在任何给定引脚上捕获多个边沿、而无需求助于 HRSHARE [使用两个引脚的硬件资源]、这样每个环路只会将条形图移动到两个边沿。

    因此、如果您使环路分辨率更长、则输入或输出增加的时钟或 PWM 的最小"周期"将增加。

    而增加 HR 预分频器将间接地执行此操作(如果 LR 保持恒定),但 HR 预分频器*也*会降低您可以为单个事件计时的分辨率。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Anthony、


    我需要一些时间来划伤我的头。 我很快会回来的。

    此致、
    Suyog
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您可以发送导致崩溃的版本、我希望在调试模式下重新创建它、并尝试修复此问题。
    不能确定问题出在描述中、但我知道在应用程序崩溃时会带来麻烦。
    在上一个版本中、我们消除了许多崩溃来源、但我想让它们全部消失。