Fix hardcrash from activating watchdog in boot.py on nordic - #11295
Open
FoamyGuy wants to merge 1 commit into
Open
Fix hardcrash from activating watchdog in boot.py on nordic#11295FoamyGuy wants to merge 1 commit into
FoamyGuy wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
On nordic port it is not possible to stop the watchdog peripheral after it has been activated in RESET mode.
The existing implementation has two issues:
It is trying to to handle raising an exception to the user from deinit(), but nothing in the python API was ever calling deinit(). Setting
mode = Nonewas seeming to succeed, it doesn't raise, and checkingmodeafter setting toNonedoes indeed return it asNonebut the watchdog is still activated and the bite will still reset.The way that the exception handling that is in deinit() works causes the path that calls it when the watchdog is activated from boot.py to hard crash with this error after boot.py runs:
At this point the watchdog is still activated and the impending bite will reset the device again into safemode with reason WATCHDOG which will then prevent boot.py from running stopping the execution.
Fixed by removing the handling from
deinit()and instead do it if/when the user attempts to setmode = None. With this change the user now gets a proper exception raised when they attempt to deactivate the watchdog from RESET mode, and the deinit() that happens after boot.py no longer causes the hard crash.