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.

[参考译文] 编译器/RM57L843:运行代码问题

Guru**** 2589300 points
Other Parts Discussed in Thread: RM57L843, HALCOGEN

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/616521/compiler-rm57l843-running-code-problem

部件号:RM57L843
主题中讨论的其他部件: HALCOGEN

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

大家好,

当我想在主板RM57L843上运行一个简单的代码时,我遇到了一个奇怪的问题。

Clint是数学库Flint的对象。

项目已构建,以下代码片段代码在电路板上运行正常,但在添加多个变量时,代码会中断
有人经历过这种行为?


此图显示调试器光标移至第三行

但在这张图片中,我添加了第四个变量,调试器在第一行之后退出,尽管它是相同的代码

我将感谢并提出建议。

谢谢大家
此致
Moud Jadaan

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

    我猜您的堆栈即将被淘汰。  我可以从调试器的屏幕截图看出,Clint是代表unsigned short[257]的类型。  一个数组的字节数为514个。  你有6个。  这是3084字节。

    下面的屏幕截图显示了更改CCS项目中堆栈大小的常用方法。

    另一个要考虑的解决方案... 将所有这些Clint变量更改为static。

    谢谢,此致,

    -George

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

    非常感谢你的帮助。
    更改堆栈大小不起作用,但使Clint作为静态变量起作用。 请告诉我为什么会出现这种情况?

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

    Moud Jadaan 说:
    更改堆栈大小不起作用[/QUOT]

    我的猜测是,您没有做出足够的改变。  就像一个实验一样,让它变得巨大。  像6 KB 这样的声音听起来不错。

    Moud Jadaan 说:
    但将Clint作为静态变量是可行的。 请告诉我为什么会出现这种情况? [/引述]

    局部变量在函数内定义。  它们仅在执行功能时可用。  否则,它们不存在。  每次启动该函数时,都会得到一组新的未初始化的局部变量。  此类变量在堆栈中分配。  (有时在寄存器中。  但对于像这里一样的数组变量来说,这种情况是不存在的。)  具有3 KB 局部变量的函数是不常见的。  这就是为什么您需要一个非常大的堆栈来处理它的原因。

    静态变量的作用域也限于定义静态变量的函数的作用域。  但在两次呼叫之间,它们仍然存在。  这是因为它们不是在堆栈中分配的,而是在分配其他全局变量的同一节中分配的。  在这种情况下,该部分可能是.bss。  

    谢谢,此致,

    -George

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

    更改堆栈大小不起作用,但将Clint作为静态变量起作用。 请告诉我为什么会出现这种情况? [/QUOT]使用HALCoGen时,堆栈大小是在HALCoGen工具(RAM选项卡下)上设置的,而不是在CCS项目属性上设置-请参阅 链接器忽略堆栈大小设置

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

    你说得对,当我使用HALCoGen更改堆栈大小时,它工作正常

    谢谢你