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/TMS320F28377S:CCS 中的#pragma PERSISTENT /NOINT 预编译指令

Guru**** 2479465 points
Other Parts Discussed in Thread: TMS320F28377S

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/648778/ccs-tms320f28377s-pragma-persistent-noint-precompile-directives-in-ccs

器件型号:TMS320F28377S

工具/软件:Code Composer Studio

你(们)好

我尝试在  CCS 中使用#pragma PERSISTENT /NOINT 预编译指令来防止变量在看门狗中断期间被初始化或复位  

但是、我已经尝试了各种组合 -它确实会编译、但当我在调试会话期间测试变量的持久性时、看门狗会重置我的测试值

也再次复位为零。

我使用了诸如之类的预编译变体  

#pragma PRESISTENT (x)

uint32 x = 0;

pragma PRESISTENT

uint32 x = 0;

也已尝试  

#pragma NOINT (x)

uint32 x = 0;

pragma NOINT

uint32 x = 0;

请建议如何为 CCS/TMS320F28377S 执行此操作  

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有任何与 使用与 CCS/TMS320F28377S 环境相关的#pragma 相关的文档?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Nick、
    下面的链接将对您有所帮助。

    processors.wiki.ti.com/.../Category:Code_Composer_Studio_v7

    processors.wiki.ti.com/.../TI_Compiler_Information

    在此器件上、器件引导 ROM 0初始化 RAM 当退出 POR 或 XRSn 复位时、看门狗复位也会触发 XRSn、以便将 RAM 调零。 如果您需要在看门狗复位过程中保留某些数据、请查看以下论坛帖子

    e2e.ti.com/.../2226459


    希望这对您有所帮助。

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

    谢谢您-好的、这一点完全不好-是否可以修改引导加载程序代码-它是基于 OTP /ROM 的?

    我们如何改变这种情况-除了必须重新设计 PCB 以适应寄存器持久性之外、还必须有更好的方法。
    您知道、任何外部闪存/EEPROM 都具有有限的写入寿命。 是的、我在 I2C 上有 EEPROM、但这是跟踪速度较慢的
    实时事件、最终会破坏外部 EEPROM/闪存。


    我本来希望看到一个引导加载程序实现、允许或禁止存储器复位。

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

    Nick、

    引导加载程序位于器件 ROM 中、不能绕过此过程。 在看门狗复位过程中、您尝试在上下文中保留多少 RAM /数据? 设计中的看门狗复位方案不是真正的错误复位(运行不是预定义或预定义模式执行的代码或代码)、但您需要触发/使用看门狗来复位 MCU?

    我想您是否可以使用任何其他复位来从不会在启动时擦除 RAM 的软件复位器件。

    此致

    Santosh Athuru

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

    不是、问题与 WD 无关-无论如何、我们需要防止堆栈损坏等、这种情况将会发生、我们已经看到过这种情况。

    也就是说、如果 ciritcal 状态变量丢失、则意味着这一点。 假设您必须计算进入容器和系统的项目数量
    堆栈损坏、如果引导加载程序重置系统、我们无法从该干扰中恢复。

    想法是将次要值写入具有时间戳和重复形式校验和的存储器。 如果系统崩溃、我们可以通过提取存储器中存储的上次更新的验证值来重新跟踪我们的状态。 如果两个状态变量都无法通过校验和验证正确结算、我们可能会假设发生冷启动。

    现在、该应用适用于汽车高速决策、因此上述所有开销都适合直接与存储器配合使用。

    我们非常希望看到一个小型 RAM 块未由引导加载程序初始化、并且可能未由 c 启动代码通过 a 进行初始化
    pragma 指令。 一个可以说1000个字的地方是好的。

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

    您好、Nick、

    感谢您提供的详细信息、我理解您的用例、我们在此选择设计时讨论了类似的用例。 我们至少有2个32位位置(寄存器)在 XRSn 上未复位、这些位置有助于调试并可用于存储状态信息。 您应该能够使用它来保持这些变量中的执行状态。  

    我正在与团队一起检查用户是否可以使用 PIE RAM 中的前几个位置来保留任何额外的调试信息、我们确实为 EMUBOOT 重新使用这些位置、但如果用户未使用 EMUBOOT 或将器件设置为引导至闪存、则可以使用这些位置。

    能够存储大型上下文的唯一其他方法是将其保存在外部存储器中、当 MCU 复位时、外部存储器不会复位或清除。

    此致

    Santosh Athuru

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

    我们是否在此处达成了解决方案、或者您是否仍然需要 Santosh 提供的其他信息?