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.

[参考译文] TMDS570LS31HDK:确定 SYSESR 中软件复位的原因

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/783952/tmds570ls31hdk-determining-cause-of-software-reset-in-sysesr

器件型号:TMDS570LS31HDK
主题中讨论的其他器件:HALCOGEN

您好!

当我的程序偶尔复位时、我正在尝试追问一个问题。  我已经查看了 SYSESR 寄存器、该值是0x00000010、指向软件复位。  我没有在代码中的任何位置明确执行软件复位、因此问题出在其他地方。  是否有任何指向我可以查看的其他寄存器的指针、以跟踪复位的原因? 或其他调试创意?

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    当软件复位发生时、SYSESR 寄存器的位4被置位。 软件复位由应用软件生成、此应用软件向系统异常控制寄存器(SYSECR)的位15写入1或向 SYSECR 的位14写入0。 HALCoGen 会生成 sys_startup.c 文件、其中确定了启动时的复位原因。 有一个用户代码可供您处理重置原因的位置。
    您是否正在使用引导加载程序?

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

    大家好、感谢您的回复! 否、我在此应用程序中未使用引导加载程序。  我在 sys_startup.c 中放置一个断点来捕获复位发生的时间、当我查看读取0x00004000的 SYSECR 寄存器(0xFFFFFFE0)时。  根据数据表、不应发生复位、但我不确定这是读取 SYSECR 寄存器的正确时间。

    仍然不知道为什么会发生复位。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    使用 sys_startup.c 中的以下代码:

    否则((SYS_EXception & SW_RESET)!= 0U)

    /*由于软件复位导致的复位。
    添加用户代码以处理软件复位。 *

    /*用户代码开始(22)*/
    /*用户代码结束*/


    检查复位是否是由软件复位引起的。 此代码检查 SYSESR[4]。

    如果要强制软件复位、则必须写入 SYSECR (仅在特权模式下才允许写入 SYSECR)。 复位后、SYSECR 的默认状态为0x00004000。

    此致、
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我要关闭此主题。 您可以通过在此处写入重新打开它、也可以打开新的线程。

    此致、
    米罗