Rshell — последний шанс, если ничего не удается сделать.

Rshell является безотказным инструментом для работы с файловой системой микроконтроллера (получение/отправка фрагментов python) а также подключения к REPL.
Под безотказным я понимаю средство позволяющее выйти из любой ситуации, даже когда контроллер находится в циклической перезагрузке и не удается перехватить управление интерпретатором MicroPython.

Внимание!
Все ниже описанное касается Linux, macOS.
Для работы с rshell в контроллер должна быть установлена прошивка не ниже v1.4.3-28.

Rshell является утилитой командной строки, его установка довольно проста:

pip3 install rshell

Запуск и вывод в консоли выглядит следующим образом:

❯ rshell
Welcome to rshell. Use Control-D (or the exit command) to exit rshell.
No MicroPython boards connected - use the connect command to add one
/Users/hunk> 

Находясь в оболочке rshell, для подключения к устройству нужно выполнить команду с указанием типа подключения, порта и скорости:

❯ connect serial <port> <baud>

Так делать не очень практично ввиду того, что внутри оболочки не работает автодополнение. Гораздо удобнее указать параметры подключения сразу при запуске rshell в качестве аргументов.

❯ rshell -p /dev/tty.SLAB_USBtoUART -b 115200

Иногда процесс подключение к контроллеру останавливается на этапе установки соединения, выглядит это так:

❯ rshell -p /dev/tty.SLAB_USBtoUART -b 115200
Using buffer-size of 32
Connecting to /dev/tty.SLAB_USBtoUART (buffer-size 32)...
Trying to connect to REPL 

Для решения этой проблемы достаточно нажать RESET на контроллере.
Стандартный вывод выглядит приблизительно так и зависит от подключаемого устройства:

❯ rshell -p /dev/tty.SLAB_USBtoUART -b 115200
Using buffer-size of 32
Connecting to /dev/tty.SLAB_USBtoUART (buffer-size 32)…
Trying to connect to REPL .. connected
Retrieving sysname … esp32
Testing if ubinascii.unhexlify exists … Y
Retrieving root directories … /boot.py/ /heartbeat.py/ /lib/ /main.py/
Setting time … Feb 07, 2022 19:18:15
Evaluating board_name … pyboard
Retrieving time epoch … Jan 01, 2000
Welcome to rshell. Use Control-D (or the exit command) to exit rshell.
/Users/hunk>

В строке:

Evaluating board_name … pyboard

можно увидеть название точки, куда смонтировано устройство, в моем случае это «pyboard».
Все последующие операции с файлами выполняются со ссылкой на точку монтированная «/pyboard».

Для вывода основных команд оболочки можно набрать help

help

Documented commands (type help <topic>):
========================================
args    cat  connect  date  edit  filesize  help  mkdir  rm     shell
boards  cd   cp       echo  exit  filetype  ls    repl   rsync

Use Control-D (or the exit command) to exit rshell.
/Users/hunk> 

Как видно из вывода консоли мне доступны основные команды управления файлами и каталогами включая просмотр а также служебные.
К примеру я совершил ошибку импорта в файле boot.py и мне нужно перезаписать его.
Для этого нужно перейти в каталог проекта (/Users/hunk/project/back_light_rgb) и выполнить команду:

cp boot.py /pyboard
/Users/hunk/project/back_light_rgb> cp boot.py /pyboard
Copying '/Users/hunk/project/back_light_rgb/boot.py' to '/pyboard/boot.py' ...
/Users/hunk/project/back_light_rgb> 

Все, файл загружен. Теперь можно проверить работу устройства не выходя из rshell. С помощью команды repl можно подключиться к интерпретатору микроконтроллера. Если после выполнения команды ничего не происходит — нужно нажать RESET на контроллере.

repl
Entering REPL. Use Control-X to exit.
>
MicroPython v1.17 on 2021-09-02; ESP32 module with ESP32
Type "help()" for more information.
>>> 
>>> 

Для выхода предусмотрена комбинация клавиш Control-X, которая возвращает к оболочке rshell.

Надеюсь данная утилита убережёт кого-то от полной перезаливки прошивки и кода.

«