Slava
Dmytro
Serjio
А подскажите, уважаемые, вот расхожий туториал в сети для простецкого http сервера на 8266. Почему оно работает только пока я обращаюсь с одного клиента. При попытке открыть с другого - виснет намертво. Чую, какие-то детские грабли..
Andy
𝖘𝖍𝖎𝖘𝖍
Всем привет.
Поделитесь, пожалуйста, файлом сброса скрипта из esp8266
Andre
𝖘𝖍𝖎𝖘𝖍
Ну, чтобы снести то, что в ней есть
Andre
𝖘𝖍𝖎𝖘𝖍
𝖘𝖍𝖎𝖘𝖍
И, от отключения питания, скетч останется в есп)
Anton
Скетч!
Andre
Скетч секретный, и нельзя допустить кражи кода из памяти?
Чем отключённая от питания ESP отличается от ЕСП со "стёртой" прошивкой?
Andre
Чего нужно добиться в конечном счёте?
𝖘𝖍𝖎𝖘𝖍
Нет, дело не в этом.
Просто хотел скинуть её до нуля
И все обратно залить.
Ибо в последнее время много отсечек пошло
Andre
Осечки это что?
𝖘𝖍𝖎𝖘𝖍
То релюха не сработает.
То перезапускается...
В самом начале такого небыло
Я, конечно, попробую сегодня файл конфигурации очистить
𝖘𝖍𝖎𝖘𝖍
Оу, с помощью питона. Интересно)
Спасибо за статейку
Alexey
Кто как пишет логи в своих программах? Никто не пилил этот велосипед для потокобезопасного логирования?
Ruslan
я думаю слать в mqtt
Andy
Не вижу смысла в каком-то особом механизме логировании. То что есть в esp_idf уже достаточно
Ruslan
при разработке да, а в эксплуатации нужна телеметрия, я пока только mqtt попробовал
Andy
Alexey
Точно проблема в потоках?
Делаю два простых потока, которые пишут логи через ESP_LOGI и ESP_LOGD (больше ничего не делают, простейший пример для теста)
Получаю на выходе в консоли
10:11:10.227 > [I][MySial.cpp:23] serialAction(): Serial act[D][Serial.cpp:23] serialAction(): Serial action
Т. Е. В одно и то же время два потока решили написать в лог, и второй поток с ESP_LOGD вписал в середину буфера, когда туда вписывал ESP_LOGI
Andy
Alexey
Alexey
Просто это будет "монопольный" доступ к консоли вывода. А в текущей реализации ESP-IDF налицо одновременный доступ к общему ресурсу, который приводит к искажению исходных данных. Поэтому и считаю, что это - "потокобезопасность". Или в чем я неправ?
Andy
Есть готовые примеры подобного логирования?
Под рукой нет, очевидный код:
void vLogTask(void * vParam){
xQueueReceive(qLog, &Log, portMAX_DELAY);
ESP_LOGI(Log.Tag, Log.sting);
}
void Log_out(char *tag, char *sting){
xQueueSnnd(qLog, &Log, portMAX_DELAY);
ESP_LOGI(Log.Tag, Log.sting);
}
Log_out(TAG, "bla-bla");
Alexey
Разве таск не будет висеть в RUNNING, если очередь будет пустой? На xQueueReceive с portMAX_DELAY?
Alexey
Mike_Went
купил SSR поэтому
Slava
Serjio
код простейший (как тут скрыть под кат?)
к черту светодиоды, просто выдача http запроса.
+ сделал счетчик обращений
https://pastebin.com/w1Ycf2dk
Serjio
ночью работало. утром проверил - уже и с одного клиента перестала открываться страница.
Serjio
надо будет еще роутер поколупать - посмотреть, что там в логах...
Serjio
пока что продолжаются приключения с установкой sdk, rtos - хочется потрогать
Serjio
точно!
Serjio
уже не редактируется, но спасибо за напоминание
Алексей
Ну на нем 10 написано
Serjio
точно, не там тыкал
Mike_Went
Mike_Went
ага, и вотчдог хлоп
Mike_Went
питон не влезет, а луа норм
Mike_Went
(а джава уродская немношк, как и спп)
Mike_Went
> выучили
нет.
Mike_Went
> знаю
нет.
Ruslan
список в студию
Mike_Went
знать можно один, два.
остальное это не «знать»
Serjio
вывод: тюториалы - говно. кстати, там же вроде есть свои примеры? надо попробовать готовый пример собрать (не будут же они туда бяку засовывать?)
garik
Проверяет в цикле раз в миллисекунду доступность клиента. Как только он доступен, едем дальше
Serjio
ну так а причины зависания?
Serjio
поставилась ртос! там и компиляция при отладке намного быстрее
Slava
Serjio
1) надо знать, что за проекты.
2) как правило, там очень несложно заблудиться: большие проекты - большие задачи - много кода. а тут пробуешь по кирпичику.
Serjio
поставилась esp-free-rtos, компилирую их готовый http_server
а в консоли поток Task stack overflow (high water mark=0 name="HTTP Daemon")
Serjio
разбираюсь, что это значит..
Slava
Serjio
тэкс, ну с какими-то манипуляциями оно завелось и вот уже пять минут полет нормальный , с разных клиентов)
Serjio
хотя иногда подтормаживает открытие
Serjio
но светодиодик отрабатывает мигание моментально
Serjio
и кстати, заливка один фиг долгая - я считаю, полминуты это долго. это память в esp модуле медленная?
ainu
в новых ESP (S3) через USB быстрая заливка
Serjio
https://aliexpress.ru/item/1005003341069001.html
таких?
у них даже два usb судя по картинке.
ну в моем случае ch340.
подозреваю, еще скорость заливки низкая. 92кбит/с.
может, с более быстрой микрухой и измененным загрузчиком оно бы и пошустрее могло..
Жексон
garik
Евгений
Разве раз в секунду?
А какие параметры передаются в delay?
delay()
Останавливает выполнение программы на заданное в параметре количество миллисекунд (1000 миллисекунд в 1 секунде).
Тецкатлипок
Serjio
esptool.py -p /dev/tty.wchusbserialfa130 --baud 115200 write_flash -fs 16m -fm qio -ff 40m \
1x0 ../../bootloader/firmware_prebuilt/rboot.bin 0x1000 ../../bootloader/firmware_prebuilt/blank_config.bin 0x2000 ./firmware/http_server.bin
Serjio
а у вас? вот --baud можно поиграться наверное, но почему-то в мейкфайле именно эта скорость указана
Andy
Скорость зависит от чипа моста. Есть чипы для которых 115200 это максимальная скорость. А вот FT легко переваривают 2М