RP2: reset_cause missing run check
When pulling RUN to ground on a raspberry pi pico, I want reset_cause to reflect that
https://github.com/micropython/micropython/blob/master/ports/rp2/modmachine.c#L76-L83
https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf
Page 159-161 suggests its possible and
machine.mem32[0x40064008] & (1<<16)
In micropython confirms that register.
Looking in the SDK there is not a simple command, the below looks like it could work
https://forum.arduino.cc/t/arduino-nano-rp2040-connect-determine-reason-for-reset-read-rp2040-chip-reset-register-solved/942297
Interrupting soft reset (Ctrl-D) with Ctrl-C erases filesystem on Raspberry Pi Pico
Sending a Ctrl-D to the MicroPython REPL to initiate a soft reset and then immediately issuing a Ctrl-C causes the entire filesystem to be erased on the Raspberry Pi Pico board. This issue was observed on 2 separate Pico boards across the following nightly builds (the 4 latest as of 01 March 2023):
However, the bug was not observed in the latest stable version 1.19.1.
Steps to reproduce
These steps were tested on a Linux host (Ubuntu 22.04).
First, load one of the above nightly versions of MicroPython onto a Raspberry Pi Pico board.
Next, using mpremote, install a library on the Pico’s filesystem, for example hashlib:
mpremote mip install hashlib
Then check that the library exists on the Pico’s filesystem:
mpremote fs ls /lib
This should show the hashlib folder:
ls :/lib
0 hashlib/
Then, to send the required keystrokes (Ctrl-D followed by Ctrl-C), execute the following lines of Python on the Linux host machine to which the Pico is connected, replacing /dev/ttyACM0 with the serial port of the MicroPython REPL. This script requires pyserial.
import serial
s = serial.Serial('/dev/ttyACM0')
s.write(b'\x04') # Ctrl-D
s.write(b'\x03') # Ctrl-C
s.close()
Less precisely, the issue can also be reproduced by entering a REPL with mpremote and pressing Ctrl-D and Ctrl-C in rapid succession.
Then check the Pico’s filesystem once again:
mpremote fs ls
This should show that the lib folder and all files it contains have been removed:
ls :
This issue became evident because the visual studio code extension Pico-W-Go exhibits this behaviour when running a MicroPython file, issuing a Ctrl-D and Ctrl-C in rapid succession before running the given code. This issue has been reported on that project’s GitHub page here, suggesting it affects other nightly versions older than the 4 listed above.