本文講述在ESP32中使用micropython,在傳輸檔案報錯時的解決辦法
報錯代碼:
mu.modes.base:435(ls) ERROR: Could not enter raw REPL.
問題排除:
猜測一:晶片不在工作狀态中
解決方法:先關閉檔案或REPL視窗,然後按下開發闆RST複位鍵,再點開檔案。
猜測二:main.py是否有死循環導緻檔案IO阻塞
解決方法:删除main.py或重刷固件。
猜測三:晶片外圍電路與連接配接裝置不能協調
解決方法:找到安裝目錄下的Mu\pkgs\mu\contrib\microfs.py,使用下面代碼替換原本的函數。
def flush(serial):
"""Flush all rx input without relying on serial.flushInput()."""
n = serial.inWaiting()
while n > 0:
serial.read(n)
n = serial.inWaiting()
raw_repl_msg = b'raw REPL; CTRL-B to exit\r\n>'
# Send CTRL-B to end raw mode if required.
serial.write(b'\x02')
# Send CTRL-C three times between pauses to break out of loop.
for i in range(3):
serial.write(b'\r\x03')
time.sleep(0.01)
flush(serial)
#修改挂起時間,參數需大于0.5
time.sleep(2)
# Go into raw mode with CTRL-A.
serial.write(b'\r\x01')
flush_to_msg(serial, raw_repl_msg)
# Soft Reset with CTRL-D
serial.write(b'\x04')
flush_to_msg(serial, b'soft reboot\r\n')
# Some MicroPython versions/ports/forks provide a different message after
# a Soft Reset, check if we are in raw REPL, if not send a CTRL-A again
data = serial.read_until(raw_repl_msg)
if not data.endswith(raw_repl_msg):
serial.write(b'\r\x01')
flush_to_msg(serial, raw_repl_msg)
flush(serial)
ampy等工具産生同樣錯誤時,也可以利用上述方法解決。