• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Arduino и ESP8266 на 0 и 1 ноге

Emmy

Member
из моих последних тестов. если микросхеме каждую секунду посылать UDP пакет а она принимает и отвечает (проходит секунды 3, атака получается) то где то через часов 7 зависает напрочь. если делать запрос раз в 3 сек- все норм
 

pvvx

Активный участник сообщества
А что будет если ESP-шке отправить UDP пакет килобайт так 30-40? UDP протокол сам-же на мелкие пакеты не разбивает. Как-бы это протестить. Может кто нибудь знает программу для винды в которой такой пакет можно отправить?
Он, такой пакет, просто не пройдет. У базовых программ в ESP пакет ограничен в LwIP MSS в 1460 байт, в https://github.com/pvvx/esp8266web/blob/master/app/main/eagle_lwip_if.c#L77 d 1500 байт, ...
из моих последних тестов. если микросхеме каждую секунду посылать UDP пакет а она принимает и отвечает (проходит секунды 3, атака получается) то где то через часов 7 зависает напрочь. если делать запрос раз в 3 сек- все норм
А из моих тестов, если передавать тысячу пакетов UDP или TCP на ESP8266 в секунду, то ничего не происходит. Они успешно обрабатываются.
В вашем случае ограничения только в скорости UART. Поставьте несколько MegaBaud и всё будет OK :)
Аппаратно-программные ограничения ESP8266 известны. Полудуплексный трансфер в режиме TCP к 1.2 мегабайта в секунду. В режиме дуплекса (прием пакета, передача пакета) скорость дико падает. В итоге с передачей по UART в режиме TCP это ограничение в 3 MBaud. При скорости UART более 3 MBaud, в режиме дуплекса, будут наблюдаться "дырки" в приемном канале, идущие со скоростью приема пакетов, а в передающемся на UART потоке будет част сигнал RTS.
Причина падения скорости при работе с UART кроется в отсутствии DMA на UART и низкой скорости шины CPU к регистрам UART. + низкая скорость отработки софтом переключений прием/передача аппаратной части WiFi.
Так что текущие ограничения при работе c UART ESP8266, если они менее 3MBaud, связаны с кривой реализацией либо вашего софта, либо arduino.

Прошивка AT >0.24 с AT+SAVETRANSLINK =<mode>,<IP>,<port>[,<type>] при 1000000 baud работает нормально (проверено). Прошивка TCP2UART работает и при больших MBaud - до 10 MBaud, но с RTS/CTS (при односторонней передаче поток на UART линеен до 3MBaud).
 
Последнее редактирование:
Сверху Снизу