Не факт. Возможно проблема и в LwIP стеке. Находил описание проблемы на форуме electronix.ru. Суть проблемы в следующем, при передаче пакетов по WiFi или сложной топологии по Ethernet, пакеты могут приходить в разном порядке. Насколько я понял у LwIP по приёму есть проблемы, если пакеты приходят не в том порядке, котором были переданы. К сожалению самому эту проблему пока проверить не удалось.
Нашел - опять не работает ets_timer_arm_new(&uart0_rx_buf_timer, 400, 0, 0); надо подобрать другое число
Но если использовать RTS - всё будет Ok.
Так всё хорошо: ets_timer_arm_new(&uart0_rx_buf_timer, 0, 0, 0);
Но иногда оно не запускает таймер и передача отключается навсегда в данном соединении. Походит на очередной привет от Espressif...
А требуется задержка до 128 chasr * 10 bits / 3000000 Baud = 0.000427 seс , чтобы поддерживать до 3Mbaud. Меньше можно, но лишний раз грузит CPU разборками с буфером.... Лучше всего - реакция в 200us на накопление символов в fifo rx UART перед сливом в TCP и чтобы не раздражало ожидание + нехилый джиттер ets_timer.
При ets_timer_arm_new(&uart0_rx_buf_timer, 0, 0, 0):
Прием-передача текстового файла. Но в данной программе не работает дуплекс и тоже куча ошибок (обрывки по буферам COM). Зато пауз в межсивольную прием/передачу на COM не вставляет...
При частом использовании ets_timer_arm_new(&uart0_rx_buf_timer, 0, 0, 0) возникают пропуски - он не всегда отрабатывает. С числом 400us и другими подобранными - всегда.
Необходима смена алгоритма передачи принятых байт, чтобы в нем не участвовало ничего от Espressif. Для этого надо переписывать систему обращения к LwIP, используемую Web сервером (а лень плодить разные драйвера).
И тама правильно написано:
Цитата(akorud @ Aug 29 2014, 17:23)
LwIP - да, но надо понимать внутренности, конфигурацию и как все работает. Применяем в рабочих промышленных проектах, устройства подключаются к публичному Интернету. Уровень поддержки socket() настолько доработан, что libmicrohttpd пошла с пол-пинка. TFTP сервер и клиент из OpenBSD портировались за день.
ИМХО, из бесплатных лучше нет.
uIP - нет. В смысле пробовали и запретили к использованию.
Платформы - от M3 до ARM11.
Sanya_kv - Как вы хотите работать без сигнала RTS, если соединение, к примеру, идет через GSM? Там задержки более 5 сек подтверждения TCP пакетов