Как стать автором
Обновить

Включаем функции сбора статистики в ESP32-arduino для PlatformIO

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.2K
Всего голосов 4: ↑4 и ↓0+5
Комментарии10

Комментарии 10

Наверное я вас не понял , а просто им единички вместо 0 поставить в FreeRTOSConfig.h :

#ifdef CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS
#define configGENERATE_RUN_TIME_STATS 1 /* Used by vTaskGetRunTimeStats() / #endif / CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS / #ifdef CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS #define configUSE_STATS_FORMATTING_FUNCTIONS 1 / Used by vTaskList() / #endif / CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS */

не достаточно ?

Увы, platformio использует уже скомпилированные библиотеки так называемого esp32 arduino core и конфигурация FreeRTOS через константы невозможна. Если я правильно понял - то с Arduino IDE ситуация та же, если вдруг ошибаюсь - напишите кто-нибудь, скорректирую статью.

Добавил упоминание Platformio / Arduino IDE в начало статьи, чтобы было понятнее, до ката это указано. Если все собирать полностью из исходников - такой проблемы быть не должно.

В UPD добавил вариант попроще с заменой платформы на кастомную, но там тоже готовая сборка библиотек

Не буду фантазировать , давно не брал в руки platformio , как то хватает Arduino, может быть я и ошибаюсь , но раньше можно было использовать как пре-компилед библиотеки так и нет. В Arduino он лежит в инклудниках RTOS , в последних билдах отчеты включены по умолчанию.

Сходу не вышло подтвердить вашу гипотезу, код из статьи не собирается в Arduino IDE по причине отсутствия указанных функций, define ситуацию не спасает, а для подмены библиотеки по описанной в статье схеме нужно пересобирать esp32-arduino уже с совсем другими версиями пакетов.

Возможно, я что-то упускаю и можно в Arduino IDE использовать другой подход, нужно изучить детальнее

Разобрались в личке, добавил UPD 2 и скорректировал статью - действительно в Arduino IDE можно использовать эти функции, если подключить 3.* версию библиотеки esp32 от espressiv systems взамен ардуиновской.

Статья сподвигла глянуть что да как с загрузкой CPU. Благо у меня чистый ESP-IDF, так что включил без приседаний. Всё казалось, что там серьезная нагрузка.

А оказалось...

Скрытый текст

twaiCtrlTask 711 <1%
IDLE1 301186298 99%
IDLE0 296722385 98%
telnet 685233 <1%
tiT 492071 <1%
ledTask 6394 <1%
fp2CheckAliveAv 2691 <1%
main 449385 <1%
relayTask 1285 <1%
twaiTxTask 12283 <1%
powerMeterTask 10 <1%
logToFileTask 294137 <1%
mdns 60982 <1%
ipc1 463250 <1%
ipc0 220077 <1%
sys_evt 15305 <1%
httpd 883169 <1%
wifi 2719499 <1%
twaiRxTask 103842 <1%
esp_timer 315391 <1%
Tmr Svc 13 <1%

Я в отсутствие этих функций пытался написать свою статистику через micros(), но потерпел фиаско на http-сервере, который с таким подходом показывал 50% загрузки в простое (очевидно задача ожидания http-запроса выполняется не последовательно и замера через micros в начале и конце задачи недостаточно).

Поэтому решил все же добить тему получения статистики и увидел те же <1% у http сервера)

Меня это все интересует прежде всего в рамках esp32-cam и потоковой передачи видео, пока кажется, что она должна неплохо нагружать контроллер, но до реализации пока не добрался.

Боюсь что в самой Windows не выйдет, "ESP32 Arduino Lib Builder" требует ubuntu или macos для сборки библиотеки из исходников.

Но можно поставить подсистемой ту же Ubuntu буквально одной командой wsl --install.

А вот заменить библиотеку и работать с Platformio в windows уже можно, только библиотека в Windows будет лежать скорее всего где-то в AppData/Local.

именно таким путем и пошел. поставил GIT поставил wsl. хотел уточнить правильность своих действий. спасибо . буду копать дальше

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации