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

Заменить синтаксис с того, который был придуман для какого-то не слишком распространенного дивайса еще в начале девяностых, и с тех пор не получившего никакого распространения, на тот, что используется повсеместно, например в ЯВУ Си.

бедная Cisco ;(

1 лайк

Сделайте аналог sysfs и procfs. Там уже все придумано, даже запуск скриптов.

Это задача для Espressif. Если я это сделаю, то кто это будет использовать? Это ж надо свои программы переписывать будет.

/proc:

Процессы и так смотреть можно, управлять ими:

show tasks
kill
suspend
resume
priority

/dev
Devfs и так есть в ESP-IDF, можно, например, open(“/dev/uart0”) делать.

/sys
А sysfs.. зачем? В ESP32 нет разделения на kernel-space и user-space. Пользовательская программа и так может лазить по всем кернельным структурам, безо всяких sysfs и syscall.

1 лайк

В ядре linux есть управление gpio через sysfs. Там вся схема есть и проще этот стиль, а не код взять.

И не надо “сиськи” мять.

1 лайк

о, не знал. пойду посмотрю, чо у них там

То , что прочитал, пока не обнадеживает.

linux, sysfs:

sudo echo 18 > /sys/class/gpio/export
sudo echo out > /sys/class/gpio/gpio18/direction 
sudo echo 1 > /sys/class/gpio/gpio18/value

ESP32, espshell:

pin 18 out high

Можно даже

p 18 o h

шелл разберется :slight_smile:

В linux, sysfs, если я хочу сохранить состояние пина, мне нужно прочитать содержимое файлов выше. И хорошо, если они вообще читаются, а не write-only.

В espshell:

esp32#>pin 18 save
esp32#>pin 18 load

Например: сохранить настройки пина, сконфигурить его как ADC, прочитать аналоговое значение и , затем, восстановить состояние пина, как был:

esp32#>pin 18 save aread load   //aread -> "analog read"

Я немного про другое. Если будет реализация echo 1 > /sys/… , то это позволит расширять отдельной частью данную псвдофайловую систему. И как вариант делать ее dump.

А по /sysfs - там не только управление gpio .

1 лайк

“Look ma, no hands!”

Сколько нужно (и каких) системных задач, чтобы все работало в этом вашем ESP32.

Оказывается, кроме IDLE0 и IDLE1 ничего и не нужно.

Мне нравится идея файловой системы. Я доделаю ФТП сервер, и можно будет тогда заливать файловую систему на ЕСП32 просто фаловым менеджером. По ФТП.

И я подумал, что будет неплохой идеей иметь файлы, которые не файлы, а типа, как в /sysfs записи.

Однозначно надо сделать файлами весь флеш - чтобы можно было скачать, как файлы, например, загрузчик. Или фирмварь. Или - ROM. Или сделать, файл с образом RAM памяти, какой-нибудь ram.bin.

Мне нравится идея. Копировать из линукса их красноглазые костыли я не буду, мы сделаем чтонть свое, микроконтроллерное.

В следующей итерации ожидаем таки поддержку сети. А пока, вот, сканируем сети:

выясняем подробности скрытой сети:

2 лайка

вопрос, а где MTU настраивается?

Я не знаю, не задумывался. Если в сторону уменьшения, то lwIP.

Когда формируются IP пакеты, то они создаются с оглядкой на MTU интерфейса, но это значение можно поменять в меньшую сторону: IP стек будет просто формировать пакеты меньшего размера.

Как поменять его в железе для WiFi - надо искать. Может и никак. А ты что хотел-то? Роутинг wifi → ethernet с разными MTU? Ну, геморой будет, наверняка. Я бы на уровне IP пытался бы сделать все.

можно и IP, через некоторых сотовых пакеты ESP32 не ходют, надо MTU сделать правильным

Ну каким? Меньше 1500 или больше?

нужно два один где-то 1380 второй больше 1500, это для разных каналов

Если больше, то ой:

https://docs.espressif.com/projects/esp-faq/en/latest/software-framework/wifi.html :

What is the maximum length of Wi-Fi MTU for an ESP32 and how to change it?

The maximum Wi-Fi MTU length for ESP32 is 1500. You can change this value in the LwIP component by netif > mtu. However, it is not recommended to change this value.

Они говорят о том, что надо lwip пересобирать. Т.е. если ты в Arduino окружении - то вообще никак, практически*.

это называется засада

Там в пакетах IP небось стоит бит DF (Dont Fragment). Надобно его убрать и все будет ходить. Посмотри анализатором (Wireshark поставь себе какой-нибудь) на пакеты, до которых дотянуться можешь. Как на картинке, смотри подсвеченное в левом нижнем квадрате: