Espshell : отладочный инструментарий для ESP32

Я новичок в Arduino, многое делаю методом проб и ошибок. В определенный момент времени я устал от бесконечных циклов исправил\скомпилировал\залил\проверил и написал шелл, в котором наиболее частые и простые вещи можно делать командами в консоли.

С помощью этого шелла я отлаживаюсь сам, в частности - он мне помог с i2c устройствами и GSM модемом sim7600e

Шелл представляет собой один файл, espshell.c , который нужно просто положить в каталог со скетчем (в каталог с вашим .ino файлом) и нажать кнопку компиляции и прошивки в Arduino IDE. Шелл автоматически перехватит управление при старте скетча и запустит CLI на UART0

Общаться с шелом можно через Arduino IDE Serial Monitor, но лучше - через Tera Term. Или PuTTY. Это связано с тем, что Serial Monitor не умеет посылать CTRL+C и CTRL+Z которые нужны при отладке устройств с uart интерфейсом.

Вся эта красота НЕ будет работать на USB-Serial бордах (где серийник - не
class HardwareSerial, а class USBCDC, например Nano ESP32). Как обзаведусь платой с USB-OTG, тогда доработаю шелл.

Тут: GitHub - vvb333007/espshell: Command line interface debug tool for Arduino projects on ESP32 hardware
Там же документация на русском: espshell/docs/ru_RU at main · vvb333007/espshell · GitHub

Там же лежит и скетч-пример, с которым можно запустить этот шелл. Скетч-пример мигает светодиодиком на GPIO2.

4 лайка

Отлично README написан, за 15 секунд глазами, наискось листа смог прочитать!
(на Гитхабе)
а class USBCDC, например Nano ESP32) есть ещё ESP32C3 (но они бывают и с CH340)

1 лайк

Никогда не видел, покажешь?

коль гугл у тебя забанили - держи

Print *_serial = Serial;

............

_serial->println();

И пофиг, какой класс у сериала. Бонусом можно выводить данные в любой поток - хоть в файл, хоть на экран

2 лайка

Да, с гуглом плохо))
Спасибо.

какой такой шелл, мой юный друг, ты наверное не в курсе, но данный чип поддерживает аппаратную отладку. надо всего лишь приобрести простой советский программатор ESP-PROG за 15 долларов / 1500 рублей с доставкой
какието шеллы люди делают, во блин, еще криптоалгоритмы начните делать.

купить то несложно, а как им пользоваться, не увидел на esp32 модулях куда эти шлейфы можно подключить, видимо и плату надо брать какую-то отладочную?

не, вывести нужные контакты которые на дебаг нужны, разьемчики то пожеланию когда место есть)

Я в курсе. Предназначение разное. Это не про отладку в стиле gdb же. Это с пинами поиграться, по i2c или uartу пообщаться. На живом-то скетче! :slight_smile:

ну ты тогда делай девкит, что всю периферию проверить можно было)

ну я делаю то, чем сам пользуюсь. скоро приделаю spi. :). всю переферию - это незачем. надо чтобы use cases были какие-то. вот с уартом и и2ц я намучался (вернее, с устройствами, подключенными по уарт и и2ц), поэтому сделал команды для работы с и2ц и уарт-устройствами

ну а основная идея-то в том, что просто кинув 1 файл в свой скетч ты получаешь шелл, в котором можно какие-то простенькие штуки проверять не перекомпилируя скетч каждый раз. Этот шел - программа-паразит :). Ему нужен скетч, к которому она прилипнет :smiley:

можно как либу оформить если считаешь, что будет пользоваться

Да, ардуиновцы привыкли к либам. Может быть.

А пока - инициализируем i2c и читаем eepromку на свежекупленном модуле RTC ds3231 :slight_smile:

кстати о либах, не вижу ничего плохого, особенно для таких как я - не настоящих сталеваров )))
PS сегодня пытался запустить для ядра от STM дисплей ILI9341, ни на библиотеках от Adafruit ни на TFT_eSPI не зарабатоло (а позиционируются как поддерживающие), пришлось из кубиков собирать свою

Добавил кое-какие асинхронные команды.

Теперь можно длинные команды выполнять в фоне.

Например, хотим в цикле посылать последовательность (мигать светодиодиком) и при этом не дожидаться ее окончания, а исполнять , например, другие команды:

esp32#>pin& 2 high delay 500 low delay 500 high del 250 low del 250 loop 9999
% Repeating 9999 times, press <Enter> to abort
% Use "kill 3ffb8fe4" to stop command execution
esp32#>
esp32#>
esp32#>kill 3ffb8fe4
% Aborted
esp32#>

Такая же возможность есть и для счетчика импульсов\частотомера: считать импульсы можно в бекграунде (команда “count&” вместо команды “count”). Прерванная команда “count&” выведет на экран, сколько импульсов насчитала до момента прерывания.

Ах да, кнопкой /Tab/ теперь можно прыгать по аргументам команды, если их дофига. Ну и вообще по кнопкам появилась целая страничка помощи: нужно написать “? keys” и нажать /Enter/. Autocmpletion отсутствует, но вместо этого, в качестве утешительного приза, можно писать команды и аргументы не до конца. Т.е. даже /Tab/ нажимать не надо. Вместо “suspend” проканает и “sus”. Или даже “su”

Обновил документацию. Документация вся - example-based, мне кажется, что так доходчивее

2 лайка

Посмотрел код - написано понятно , без зауми. Надо будет почитать повнимательнее. Единственное что смущает - это то что файл 6 тыс строк.

Все-таки оформить оболочку в виде библиотеки было бы правильнее, тем более что для этого ничего переделывать не нужно. И пользователю не нужно будет файлы копировать, достаточно вставить инклюд в начало кода

1 лайк

Да, разрослось :). Я думаю насчет библиотеки. Наверное это правильнее.
Зато сейчас даже ничего include’ить не нужно. Все само цепляется :slight_smile:

1 лайк

Лучше поиграться! И поделиться впечатлениями :).

Спойлер

У меня тестовый сетап такой: китайская плата esp32, со светодиодиком на GPIO2 и двумя модулями - один прицеплен к пинам 18 и 19, LTE модем (uart) а к пинам 21 и 22 прицеплен модуль с RTC с EEPROM (i2c). Средствами шелла можно (например) записать что-то на еепромку, установить часы, пообщаться с модемом напрямую, (at командами).

1 лайк

Потихоньку обрастаем поддержкой файловых систем.

Но доделано еще не все: копирование и перемещение не сделал :slight_smile:

Маунтим разделы, смотрим, что внутри:

Три файловые системы поддерживаются: FAT, SPIFFS и LittleFS. На том и остановимся, пожалуй. Командой cat можно не только просматривать файлы (текстовые или бинарные), но и посылать их в какой-нибудь uart, на выбор.

Ну и примитивное редактирование файлов текстовых: вставка и удаление строк, и т.п.

1 лайк