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.

[参考译文] 将重置原因传递给 main()

Guru**** 2522770 points
Other Parts Discussed in Thread: TMS570LS1224, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/978239/pass-reset-reason-to-main

主题中讨论的其他器件:TMS570LS1224HALCOGEN

您好!

是否可以在 main()内的操作期间读取 MCU 复位原因?

我正在使用 SDL 和 sl_Init_ResetReason()。  将清除 SYSESR。 当然、我可以在调用 sl_Init_ResetReason ()之前读取该寄存器的值。 但如何 将该值传递给 main()?
我知道我可以对 某些数据使用 type=NOINIT、但遗憾 的是、此解决方案仅在调用 sl_Init_Memory (RAMTYPE_RAM)后才起作用。

 在执行 sl_Init_Memory (RAMTYPE_RAM)之前、是否有任何解决方案可以保留任何记录的数据?

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

    您好、Michal、

     请提供您正在使用的 MCU。   

    谢谢、

    ~Leonard   

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

    您好!
    我使用的是 TMS570LS1224。

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

    请回答我的问题。 或者、也许您知道有人可以提供帮助?

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

    您好、Michal、

    我无法回答您的问题、但我在该产品组中找到了一个能够回答的人。  对拖延表示歉意。  

    此致、

    ~Leonard  

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

    HALCoGen 生成的启动序列通常遵循。 您可以根据需要修改此序列以适合您的应用。 如果需要,可以将重置原因的读取延迟到 main()。 另一个选项是浏览关键字"register"、该关键字会请求编译器将变量存储在 CPU 寄存器中。 请注意、编译器也可以忽略此请求、具体取决于发出的"寄存器"请求的数量。 此外、只能将局部变量存储在寄存器中、因此无法从声明该变量的函数外部直接访问该值。

    您还可以定义一个全局变量来存储复位原因(从0xFFFFFFE4读取值并分配给该变量)。 在这种情况下、您需要在读取复位原因之前注意并初始化 CPU RAM、因为如果启用 ECC 检查、对未初始化 RAM 的任何读取访问都可能导致 ECC 错误。

    总之、应用程序管理复位原因、所需系统初始化、检查安全诊断等的顺序完全由应用程序设计人员决定。 HALCoGen 生成的启动序列是适用于大多数应用的典型序列。

    希望这对您有所帮助。