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/TMS570LS0332:CCS 中的优化与与闪存相关的控制器 ESM 中断/中止

Guru**** 2482105 points
Other Parts Discussed in Thread: TMS570LS0332

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/705563/ccs-tms570ls0332-optimizations-in-ccs-vs-controller-esm-interrupt-abort-related-to-flash-memory

器件型号:TMS570LS0332

工具/软件:Code Composer Studio

您好!

我在设计中使用 TMS570LS0332、并使用 CCS 进行软件开发。 如果我如所附的图所示启用微控制器的优化设置、我会看到 安全控制器的 nERROR 引脚被激活。 原因与闪存 ECC 有关。  闪存 ECC 和 CCS 优化设置之间是否存在任何相关性。  

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

    您好!

    我的测试表明、opt_level=1和 opt_for_speed=3的组合将导致此问题。 所有其它设置不会导致 ESM 错误。 该错误发生在 TI_auto_init()中。

    TI_auto_init()用于执行全局/静态变量的 C 自动初始化,并处理 binit 复制表。

    我不知道这种组合为什么会导致 ESM 错误。 将与编译器团队进行检查。 谢谢

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

    感谢您的回答。 我是 Srikanth 的同事、添加了一些可能会有所帮助的信息:
    我们使用的是编译器 TI ARM 5.2.9
    -我们目前只为某些单独的 C 文件设置选项化标志,而不是为整个项目设置选项

    您认为这可能与浮点变量的使用有关吗? 我们将浮点模式设置为"严格"、并在优化的文件中使用浮点变量。

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

    TMS570LS0332不支持浮点。 如果执行浮点运算、它将生成 UNDEF 中止。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 QJ、

    '如果执行浮动操作、它将生成 UNDEF 中止。'

    我的观察结果如下:无论优化如何、我都在 TMS570LS0332的程序中使用类型 float32。 它可以编译、工作和测试、因此您的陈述不正确。 我知道控制器不支持浮点、因此必须在 SW/A TI 库中实现。 在 CCS 中、您可以为 fplib 指定"vfplib"以实现浮点支持。

    除了运行时支持库"rtsv7R4_T_be_eabi.lib"外、我们还使用下面显示的设置。

    另请参阅此主题的此论坛条目:

    e2e.ti.com/.../2423247

    你能评论吗?

    请确认浮点可与 TMS570LS0332一起使用、如上所述

    2、回到最初关于优化的问题:如果浮点通常可以使用、您能评论一下不同的优化设置对闪存中止有什么影响(请参阅原始问题)吗?

    此外、我可以告诉您、我们已将优化设置更改为"0寄存器优化"速度与大小3。 我们没有遇到该设置的问题。

    我不理解"浮点模式"在优化对话框中的含义、如下所示。 你能评论吗?

    谢谢、

    Stefan

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

    让我回答有关浮点运算使用的问题。 这些语句也可在《ARM 代码生成工具用户指南》、SPNU151: www.ti.com/.../spnu151中找到

    正确的做法是、RTS 库确实支持浮点算术函数。 但是、对于不包含浮点协处理器的 MCU、需要在 CCS 工程的处理器选项中将"--float_support"配置为"无"。

    "--fp_mode"设置启用或禁用宽松浮点模式。 选择"宽松"模式会使双精度浮点运算和存储在可能的情况下转换为单精度浮点或整数。 这是不符合要求的行为、但会导致更快的代码、并导致精度降低。

    此致、
    Sunil