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.

[参考译文] MSPM0L1305-Q1:在 CCS12.5.0中将优化模式/Level (-O)选择为1时、程序失控

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1443409/mspm0l1305-q1-program-runaway-when-select-optimization-paradigm-levle--o-as-1-in-ccs12-5-0

器件型号:MSPM0L1305-Q1
主题中讨论的其他器件:MSPM0L1305

工具与软件:

您好!

  当我调试 MSPM0L1305时、 在 CCS12.5.0中、我发现当"Select optimization paradome/Level (-O)"为1时、程序失控。 但当我将 "选择优化范式/级别(-O)"设置 为空时、它可以正常运行。

  我打开调试窗口查看 memroy 浏览器、我发现堆栈 RAM 数据在 "Select optimization paradome/Levle (-O)"= 1中是异常的、堆栈 RAM 数据在  "Select optimization paradome/Levle (-O)"= null 中是正确的。

  我将 STACK_SIZE 的大小从256调整到512、这样也就失控了。 并将 STACK_SIZE 的大小从512调整到1024、就可以了。 但实际使用的堆栈大小约为200字节。

  所以我想知道为什么当"选择优化范式/Levle (-O)"= 1时程序会失控?

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

    您好、Lihang、

    不同的优化级别将在编译期间产生不同程度和类型的代码优化。 级别1对您的代码进行了错误的优化。 我认为这可以帮助您了解不同优化级别的差异、并帮助您检查它是否会导致运行错误。 请了解此资源并检查您是否需要对代码进行一些修改。  

    此致、

    Janz Bai

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

    或者、优化器中有一个错误并非无人知晓。

    如果可以、将您的代码放置到一个显示此行为的小示例、然后将其发布在此处。 通常在分解的过程中,你会发现你把它放在那里的错误。

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

    Keith、您好!

    很抱歉、我忘记向您发送有关 CCS 优化级别的资源、您可以参考此内容。

    https://software-dl.ti.com/codegen/docs/tiarmclang/rel2_1_0_LTS/compiler_manual/using_compiler/compiler_options/optimization_options.html

    事实上、对于一个程序、并非所有编译器优化方法都适合它、尤其是对于一些非常简单的程序。 您可以检查不同优化级别的差异、并选择适合您的优化级别。 事实上、 您的程序运行不正确、这可能不是由于编译器错误所致、您选择的优化方法很可能不适合您的简单程序。

    此致、

    Janz Bai