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.

[参考译文] F28M35H52C:C28x中加载了RAM的程序存在静态变量问题。

Guru**** 2538950 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/659433/f28m35h52c-static-variable-problem-with-ram-loaded-program-in-c28x

部件号:F28M35H52C

我正在RAM内存中加载一个程序,并使用Code Composer Studio v 7.4 调试器执行该程序。 我启动目标的选定配置,连接C28x并加载程序。 第一次运行程序时,一切都很好。 但是,当我重置它并重新开始执行它时,静态声明变量的值具有任何值。 我认为这可能有意义,但重置不是为了重新初始化静态变量?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    如何重新运行测试用例? 您所说的"重置不是要重新初始化静态变量吗?"的含义是什么? ? 您是否希望初始化硬件中的变量?

    此致,
    Vivek Singh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对不起,我的解释不好。 我不确定是什么类型的重置,但我要做的是单击调试视图工具栏上的"重置(重置CPU)"。 要重新运行该程序,我启动C28x程序的执行(它进入空闲模式),然后启动M3,在授予它对共享RAM所需的权限后,它使C28x从RAM启动。
    关于您的问题(..."您所说的"重置不是要重新初始化静态变量吗?"是什么意思? ? 您是否期望硬件中的变量初始化?"...),据我所知(不是因为我缺乏微控制器方面的经验), 静态变量应该以0值启动,并通过对定义它们的函数的不同调用来保留其值。 我希望变量在程序执行期间保持其值,但我认为当我重新存储设备时,它将重新启动到0。 这是错了吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    请查看此Wiki链接是否回答了您的查询- processors.wiki.ti.com/.../Uninitialized_Static_Objects_Not_Set_to_Zero_in_COFF

    请 注意 ,在启动时,所有RAM位置都通过由BootROM执行的RAMINIT进程清除,但在调试器重置时不会清除。因此,如果代码中未完成正确初始化,则在启动时会看到与调试或任何其他重置不同的行为。

    此致,

    Vivek Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您对此有任何疑问,请告知我们。