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.

CC2652R7: Zephyr reboot not working

Part Number: CC2652R7

I am trying to reboot my device (a CC2652R7 LaunchPad) after writing configuration data to flash. I use the standard zephyr command:

sys_reboot(SYS_REBOOT_WARM)

which (after locking IRQs) resolves on cortex-M to "NVIC_SystemReset()"

This doesn't work. The LaunchPad doesn't restart. Is there a better way (a driverLib fn) to reset board? Of all the things that could be blocking, I didn't expect this!

FWIW, I'm using an external jLink debugger instead of the onboard XDS110.

 

  • Hi,

    Thank you for reaching out! Let me loop in a Zephyr expert to assist.

    Best Regards,

    Jan

  • Hello

    I confirmed that sys_reboot does not work as expected on a CC2745 eval board when the debugger is active.  When disconnected it works as expected.

  • Hi Mike,

    Thanks for reporting that back. The behavior that you see is expected. The reset API should only be done on a free running device (not in debug mode).

    Regards,

    Ging

  • Picking up on Mike and Ging's exchange — that answer is not helpful for the CC2652R7 LaunchPad. The XDS110 is hardwired to the chip's cJTAG pins on the board, so there is no free-running mode out of the box. I'm using an external J-Link in place of the onboard XDS110, but the chip sees a cJTAG-initialized debug subsystem regardless of which probe drives it.

    I'm trying to implement the `sys_reset(...)` reboot for zephyr. I have been trying various incantations in an override the cortex-M default (`NVIC_SystemReset()`) in 'soc' for the part, but have had no success getting the "reboot" actually working.

    So after working the problem and have four followup questions:

    1. Is the "reset API only on a free-running device" stance also the contract on CC2652R7? And where is it documented? I couldn't find it in the SimpleLink SDK docs, or SimpleLink Academy.

    2. If it is the contract, what is the supported software sequence on a CC2652R7 LaunchPad — where the XDS110 is hardwired to the chip's cJTAG pins on the board — to put the chip into "free running" state from the application's own code before calling `sys_reboot`?  Is there a driverlib call, a register write (`AON_PMCTL.JTAGCFG`?), or a debug-subsystem disable bit that the application can issue on-chip so ROM treats itself as "no debugger present"?

    3. Is `TrimAfterColdReset` known to hang or busy-spin when entered from a software warm reset with debugger attached? That's what my trace points to; an errata reference or known-issue acknowledgment would close this out.

    4. If there is no such on-chip API, knowing that would help.

    Still hoping for the Zephyr expert Jan mentioned at the top of the thread. Thanks for any pointers.