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.

[参考译文] TM4C1294NCPDT:如何辨别冷重启还是热重启的区别?

Guru**** 2470720 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/676926/tm4c1294ncpdt-how-to-tell-the-difference-between-cold-or-warm-reboot

器件型号:TM4C1294NCPDT

由于 EEPROM 的寿命有限、我不想使用它来记住状态。 至于内部 RAM、不确定是否在冷重启时使用标准模式进行初始化... 有什么建议吗?

谢谢!

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

    初始化标准模式意味着什么? 重启(冷重启)后、RAM 处于随机状态。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于 RAM 处于随机状态、因此通过读取 RAM 的内容来判断器件是否刚刚完成冷重启或热重启并不可靠
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为一个理想的解决方案将是一个寄存器、该寄存器总是从冷启动中进入已知状态、但其内容在热重启中不会改变
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="David Chance ]]我认为理想的解决方案将是一个寄存器、该寄存器总是从冷启动中出现已知状态、但其内容不会在热重启中发生变化 复位原因(RESC)寄存器是否 可以通过 TivaWare SysCtlResetCauseGet ()和 SysResetCaCtlClear ()函数访问、帮助?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    听起来就像一个解决方案! 谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是否有良好的内存位置,我可以在重新引导之间传递一些信息? 以便软件可以继续执行在软件复位之前启动的一些任务

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

    您之前对 EEPROM 生命周期有一些疑问吗? EEPROM 将是您的最佳选择。 您需要在应用程序中执行冷重启的频率如何?

    EEPROM 的写入周期为500k。

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

    [报价用户="David Chance ]]是否有一个良好的内存位置,我可以在重新启动之间传递一些信息? 以便软件可以继续执行在软件复位前启动的一些任务

    如果您没有断电、只需保留 RAM 中不会被覆盖的区域。

    如果您希望在断电期间保留信息、尤其是在不处于受控点的情况下、则添加外部 FRAM。 即使是外部 EE 也不够快、内部 "EE"的时序也很糟糕。

    Robert

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

    当我显示此勘误表时、我感到很紧张

    www.ti.com/.../spmz850g.pdf

    请参阅我之前的问题 e2e.ti.com/.../2435253

    也许我们可以从 TI 获得一些澄清?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于成本原因、我尽量避免使用外部器件。

    如果 EEPROM 确实可以持续500K r/w、我将使用它

    BTW、如何在 CCS 中保留 RAM 区域? 它可能在未来的应用中很有用
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您认为在现场 EEPROM 写入操作可能会以不受控制的方式中断(即断电、复位)、则您的问题是有保障的。

    我假设您希望在下电上电后仍保留数据、对吧? 如果是这种情况、正如 Robert 建议的那样、外部非易失性存储器是一个不错的选择。 但还要注意的是、如果在写入外部器件时发生功率损耗或复位、则数据会丢失、损坏或不完整。 如果您没有断电、则可以使用 RAM。 热复位后 RAM 被保留。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果 EEPROM 因中断而损坏、会发生什么情况? 它会变得无用吗? 或者我可以简单地对其进行重新编程吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [报价用户="David Chance "]由于成本原因,我试图避免使用外部部件。

    实际上、我怀疑成本会更高。 您必须添加保持电源才能使用 EE。 考虑到 TI 器件上仿真 EE 的极端情况下的时序、这并不是一个不值得考虑的问题。

    [引用用户="David Chance "]如果 EEPROM 确实可以持续500K r/w,我将使用它

    有趣的是、如果您获得更多的写入、解决问题的方法就会变得简单得多。

    [引用 user="David Chance "]顺便说一下、如何在 CCS 中保留 RAM 区域?

    不知道、请阅读链接并找到编译器的文档。  通常有一组控制存储器映射的选项。

    Robert

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

    [引用 USER="David Chance ]EEPROM 因中断而损坏时会发生什么情况? 它会变得无用吗? 或者我可以简单地对其进行重新编程吗?

    [/报价]
    根据我的经验(TI 仿真的 EE 可能更好或更糟)、EE 操作因功率损耗而中断可能会导致任何 EE 损坏、而不仅仅是写入的位置。
    对于123系列、某些中断似乎能够使微控制器起毛作用。
    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Charles Tsaa"]。 但还请注意、如果在写入外部器件时发生断电或复位、则数据可能会丢失、损坏或不完整。[/报价]

    这就是建议使用 FRAM 的原因。 写入速度的数量级增加使得防止这种可能发生的情况变得容易得多。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    首先、您有什么器件版本? MEM#03勘误表仅适用于修订版1和2器件。 如果您有修订版3、则就该勘误表而言、您没有问题。
    根据勘误表说明、损坏的数据可能不仅限于您正在编写的字、还可能包括其他字。 此外、没有故障指示。

    此序列可能导致的损坏 EEPROM 数据不限于
    正在写入的当前字。 如果这些事件不适用于您的系统、则正常
    EEPROM 操作是预期的。 如果发生故障、则不会有任何指示
    擦除失败或数据损坏(例如、中的 PRETRY 位和 ERETRY 位
    EEPROM 支持控制和状态(EESUPP)寄存器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢有关 EE 损坏的警告、我将在本例中考虑 FRAM
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想我可以确保新产品中使用版本3、因此可以忽略 MEM#03。 谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引述 USER="David Chance ]btw、如何在 CCS 中保留 RAM 区域? 它在未来的应用中可能会很有用[/引用]

    请参阅 TI ARM 编译器用户指南中的#pragma SET_DATA_SECTION 用法。 定义段后、如果需要、可以在链接器命令文件中将该段映射到特定地址的 RAM。  

     

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

    [引用 user="David Chance "]感谢有关 EE 损坏的警告,在本例中,我将考虑 FRAM

    这里的大问题是写入期间的中断、尤其是断电。 在任何情况下都值得避免。 通常、这会导致本地损坏(或不会保持编程状态的条目)、但由于 EE 编程是一个很长的状态过程、因此如果  在写入期间断电、有时会使状态机发生混乱。 镜像和校验和仍然可以减少 EE 的错误

    对于外部 FRAM、该过程类似于

    • 变化
      1. 检查您是否有足够的写入功率
      2. 取消保护内存
      3. 写入
      4. 保护内存

    FRAM 具有无限的写入周期、因此您可以写入每个更改、并且速度足够快、无需检查写入完成情况。 由于采用后一种方法、电源只需足够长的时间即可保持足够长的时间来执行写保护、这可能是我们几个人的问题。

    EE 的过程是这样的

    • 累加变化
    • 断电时(或每 N 秒)
      • 取消保护内存
      • 写入
      • 等待写入完成
      • 保护内存

    EES 的写入周期有限、因此您无法频繁写入。 此外、由于写入周期很长、您必须添加代码以等待写入完成、并且电源必须保持足够长的时间才能完成写保护。 这大大增加了电源的成本。 即使是外部 EE 也需要5ms 的最坏情况写入时间、TI 仿真的标称值为30mS、最坏情况下的高使用率为1.8s (是秒)。 TI 不会为新鲜使用提供最坏的情况、您可以计划双倍或三倍额定电压、希望您不会磨损、但任何真正安全的设计都必须为每次写入的保压计划1.8秒。

    Robert

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

    感谢您的建议!