pvvx
Активный участник сообщества
Основные баги от Espressif для SDK 0.9.3 в их отвратительном и лажевом espconn:
Кол-во одновременно открытых соединений можно изменить в espconn_tcp_set_max_con(x). Но espconn пользуется массивом из 5 структур remot_info premot[5], размещенной в постоянной памяти. Соответственно, при указании кол-ва соединений более 5 она испортит память за данным массивом структур
При закрытии tcpсоединения, espconn часто теряет событие disconnect. Тем самым, отведенные, и так по максимуму 5 соединений, заполняются и остаются занятыми. Получаем ошибку ESPCONN_CONN = - 11. Освобождение внутренних структур espconn у Espressif для занятых соединений сделано некорректно – лезут в Lwip по запомненному указателю на когда-то живую структуру pcb и что-то там сравнивают . Но структура уже исключена из списка активных и неактивных соединений в Lwip-е. Память может быть затерта уже другими процедурами, а может и нет. В итоге, от значений там, зависит освободит или нет espconn занятый блок на соединение Дополнительно это дает путаницу номерков соединений в ATпрошивке
Только эти баги уже напрочь закрывают возможность пользоваться любыми интернет соединениями с ESP8266 на любых прошивках, основанных на текущем SDK, без грубых 'хаков'. А багов ещё очень много и не описываю, пока не конкретизированы их конкретные источники. Т.е. писать 'надстройки' на текущий SDK преждевременно.
Кол-во одновременно открытых соединений можно изменить в espconn_tcp_set_max_con(x). Но espconn пользуется массивом из 5 структур remot_info premot[5], размещенной в постоянной памяти. Соответственно, при указании кол-ва соединений более 5 она испортит память за данным массивом структур
При закрытии tcpсоединения, espconn часто теряет событие disconnect. Тем самым, отведенные, и так по максимуму 5 соединений, заполняются и остаются занятыми. Получаем ошибку ESPCONN_CONN = - 11. Освобождение внутренних структур espconn у Espressif для занятых соединений сделано некорректно – лезут в Lwip по запомненному указателю на когда-то живую структуру pcb и что-то там сравнивают . Но структура уже исключена из списка активных и неактивных соединений в Lwip-е. Память может быть затерта уже другими процедурами, а может и нет. В итоге, от значений там, зависит освободит или нет espconn занятый блок на соединение Дополнительно это дает путаницу номерков соединений в ATпрошивке
Только эти баги уже напрочь закрывают возможность пользоваться любыми интернет соединениями с ESP8266 на любых прошивках, основанных на текущем SDK, без грубых 'хаков'. А багов ещё очень много и не описываю, пока не конкретизированы их конкретные источники. Т.е. писать 'надстройки' на текущий SDK преждевременно.
Последнее редактирование: