-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Software-based system reset? #453
Comments
See #197 and raspberrypi/picotool#23 😃 Unfortunately raspberrypi/picotool#23 hasn't been merged yet because when I was testing it I ran into issues with Windows getting its USB drivers confused when the number of interfaces on a device changed, and I've not yet had the time (too busy with other stuff) to dig into it further 🙁 (but it worked fine on Linux and OSX) (and of course there's also reset-via-SWD if you've got that hooked up) |
Thanks! Doesn't quite solve my problem since I am using the UART with a serial adapter instead of USB, and I'd prefer not to require picotool I tried calling My current workaround is to call |
Passing 0 as first argument is going to go thru bootrom - i.e. try to boot from flash, and if that fails dump into USB bootloader. If you are trying to reboot into a RAM binary then you need to pass something other than 0 for the PC. |
This does sound suspiciously like
If your program is loaded directly into SRAM there is not in general a way of restarting it without a reload, because mutable static initialised data (the So you could either:
With either of these you can hard-reset the system using the |
Thanks for clearing that up @Wren6991. What you described is exactly right - the program was compiled with |
seems this can be closed? |
I want to be able to sent a reset command over serial to perform a controlled full system reset (both cores, all peripherals etc) from software, to put the device in a known state. I was trying to find something in the SDK or examples to reset the chip, but came up short. Is there such a thing? If not, how could it be implemented? The closest I could find was
reset_usb_boot
, but I just want to restart the currently running program.The text was updated successfully, but these errors were encountered: