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.

[参考译文] TMS320F280025:如何指定一个变量、在硬件看门狗强制 DSP 复位时在下次重新启动时保存其值?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1486384/tms320f280025-how-to-specify-a-variable-that-holds-its-value-at-next-reboot-when-dsp-is-forced-to-reset-by-hardware-watchdog

器件型号:TMS320F280025

工具与软件:

大家好!

我使用 Code Composer Studio 12.4.0…… 我尝试了在链接器文件中定义一个专用段、例如:

...

security_ramgs0 :>> RAMGS0

...

在 C 代码中、我将变量定义为:

...

unsigned int global_ram_var _attribute__((section ("security_ramgs0"));

...

即使我在下次重启时、在强制 DSP 热重启之前向变量"perature_ram_var"分配一个不同为零的标记值   

变量"global_ram_var"始终具有0值(请确保 它未在已初始化的段中定义)。

我该如何获得我的要求?

提前感谢您的提示

R.C.

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

    您好、RC

    您可以利用我们编译器支持的 pragma RETAIN。 请参见 编译器指南 https://www.ti.com/lit/ug/spru514z/spru514z.pdf 中的 RETAIN Pragma 章节6.9.22 

    此致、

    Ozino

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

    谢谢。 Odharo、请您进行回复。

    遗憾的是、您的提示并没有解决我的问题、因为据我所知、我认为 RETAIN pragma 仅 对有关代码中未引用的变量的链接器行为有用、但我的情况并非如此。 相反、我们应该强制编译器在启动我的全局变量时不要初始化为0、但这与关于全局和/或静态单化变量的 ANSI C 要求形成鲜明对比。

    在菜单中,我也检查了"noinit"属性,但也没有运气在所有...

    因此、我尝试了常绿良好旧方法:在链接器文件中保留 RAM 的"原始"和"自由"区域、导出符号以获得存储器的结果地址、并通过软件使用指向该区域的指针访问该区域。

    此致

    R. C.

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

    你(们)好。

    很高兴您能够找到解决方法。

    您是否有机会阅读第 6.9.18节 NOINIT 和 PERSISTENT pragma? 我相信使用 NOINIT 的位置可能适合您。

    此致、

    Ozino