SetPf
Понятно =) Я потому и спросил тут, сам бы не учел эту проблему никак.
Ivansuper
А и Б используют (состояние) ресурс В. Если В это А, то при параллельном выполнении у Б может быть шок и содомия. Поэтому А может только уничтожить Б, а Б может только уничтожить В. Все довольны
Ivansuper
Можешь попробовать подумать еще, может что и лучше придумаешь, я как бы не гений
Ivansuper
Пытался играть с семафорами, но у них подстава есть, их нельзя удалять если на них есть ждущие таски. Это ввело меня в ступор
SetPf
Ну в плане это разве не должно быть насущной проблемой, с выверенным решением?
Ivansuper
Ну, это подпадает под простое мультипоточное программирование со всеми его рисками и опасностями
SetPf
А и Б используют (состояние) ресурс В. Если В это А, то при параллельном выполнении у Б может быть шок и содомия. Поэтому А может только уничтожить Б, а Б может только уничтожить В. Все довольны
Ну я скорее к тому, что еще один статик метод сделать, который будет принимать реквесты на уничтожение, ожидать выполнения таска у требуемого экземпляра, после чего удалять.
SetPf
Ну, это подпадает под простое мультипоточное программирование со всеми его рисками и опасностями
Пойду попробую с С++ конфе спросить, я думаю тут уже тема вышла за ESP
SetPf
Хотя там скорее всего отправят учить какие 11+ потоки и вообще непонятными словами ругатся
Ivansuper
Пойду попробую с С++ конфе спросить, я думаю тут уже тема вышла за ESP
Может и так, но тут как бы люди наверно тоже не против время от времени обменяться опытом по сям
SetPf
Может и так, но тут как бы люди наверно тоже не против время от времени обменяться опытом по сям
Ну тут тоже подожду ответа. Вообще напугали вы меня конечно, я как то и забыл что ядра 2 и поумолчанию задачи не привязываются к конкретному. Теперь очень захотелось ВСЕ ЗАПРЕТИТЬ и на одном ядре работать =) С другой стороны я все таки не госдума и охота попробовать все это организовать тоже конечно...
Ruslan
камрады, в platformio возможно вызвать idf.py? просто с терминала я могу это сделать, а платформа предоставляет какие-нибудь плюшки?
Denis
Здравствуйте. Есть способ перенаправить вывод из стандартных функций логирования в свой буфер?
Удвоитель логов: vprintf_like_t tmp_vprintf; void my_vprintf(const char *format, __va_list args) { (*tmp_vprintf)(format, args); (*tmp_vprintf)(format, args); } void app_main(void) { tmp_vprintf = esp_log_set_vprintf(&my_vprintf); }
Denis
результат
Sid
Пойду попробую с С++ конфе спросить, я думаю тут уже тема вышла за ESP
Так чистых ++ не будет, надо колхозиьь в любом случае
SetPf
Так чистых ++ не будет, надо колхозиьь в любом случае
Я почитал всякие вводные и решил последовать совету - не прибегать к многопоточности без веской причины. Учитывая что в плюсах у меня опыта кот наплакал, а с потоками и их проблемами только по наслышке знаком, думаю так и поступлю.
SetPf
Другое дело, как гарантировать выполнение юзер кода в на одном ядре? PinnedToCore - ок. Но app_main код я так понимаю все равно выполняется где попало? Не смог найти инфы об этом.
Sid
Другое дело, как гарантировать выполнение юзер кода в на одном ядре? PinnedToCore - ок. Но app_main код я так понимаю все равно выполняется где попало? Не смог найти инфы об этом.
в настройках idf в конфиге вроде есть использовать для кода пользователя только 1 ядро, а второе под вифи и прочию системную хрень
Sid
Другое дело, как гарантировать выполнение юзер кода в на одном ядре? PinnedToCore - ок. Но app_main код я так понимаю все равно выполняется где попало? Не смог найти инфы об этом.
лучше курить мануалы конкретно про фриртосу тк докуменация по многопоточности для настольных систем про которые в основном пишут может отличаться
SetPf
Только
Sid
Только
ну афинити тебе и надо задавать
Sid
Насколько мне известно фриртос из коробки - однопоточная, многопоточной ее сделали эспрессиф
там хитро, то что делал эспренсиф уже могло уйти в основной бранч, да и делали они это достаточно давно, тогда не так много было многоядерный mcu
SetPf
ну афинити тебе и надо задавать
Ну я как понял это относится к создаваемым PinnedToCore таскам, а не самому main
Sid
Насколько мне известно фриртос из коробки - однопоточная, многопоточной ее сделали эспрессиф
но вообще да, кури лучше родную документацию что бы потом не потратить неделю с вопросом чзх
Sid
другой вопрос будет ли работать
Sid
я думаю будет, но проверить только вечером смогу
Andy
Насколько мне известно фриртос из коробки - однопоточная, многопоточной ее сделали эспрессиф
Подробно про различия ванильной и доделаной https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/freertos-smp.html
SetPf
ну афинити тебе и надо задавать
Сейчас проверил - обычный CreateTask работает как и до - время от времени таск перескакивает с ядра на ядро.
Sid
Сейчас проверил - обычный CreateTask работает как и до - время от времени таск перескакивает с ядра на ядро.
а если будешь гуглить просто афинити то 90% результатов будут по винде и линуху
SetPf
Я немного отвлекусь, т.к. во время попыток все это дело протестить напоролся на проблему.
SetPf
SetPf
SetPf
И вывод
Sid
https://www.freertos.org/FreeRTOS_Support_Forum_Archive/June_2019/freertos_what_about_the_freertos_smp_support_is_it_has_plan_to_develop_6403eaa607j.html
Sid
И вывод
конфиг идф проверь что разрешено юзерский код запускать на всех ядрах
Sid
Ничего кроме вот этого не нашел
ну 1st core скорее всего core0
SetPf
Попробовал заменить на xTaskCreatePinnedToCore(&TestTask, new_task_ctx->name, 8192, &new_task_ctx, 5, NULL, CORE_ID_APP);
SetPf
Вообще крешится при создании таска.
SetPf
Что то я ума не приложу короче, размышлял о высшем - зафейлил простое создание таска. При первом вызове контекст уже в труху.
Andy
Я немного отвлекусь, т.к. во время попыток все это дело протестить напоролся на проблему.
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/freertos-smp.html#esp-idf-freertos-configuration
SetPf
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/freertos-smp.html#esp-idf-freertos-configuration
Ну это та самая галка выше. Попробую с ней к слову.
SetPf
Все нашел где зафейлил =\, опечатка.
Sid
Все нашел где зафейлил =\, опечатка.
Вот я как то класc для wifi написал думал чего крашится, а забыл nvs инициализирлвать😂
SetPf
Да я тоже успел об это долбанутся
ВПК ПОТОК
FSZN 3.7V 170 mAh 621230 181042 195848 НАДО КУПИТЬ 50 таких где взять подскажите?
SetPf
Короче вне зависимости установлена ли опция работы FreeRTOS на ядре 0 или нет. Попытка xCreateTaskPinnedToCore вызывает C:/SysGCC/esp32/esp-idf/v4.0/components/freertos/tasks.c:1069 (prvAddNewTaskToReadyList)- assert failed! abort() was called at PC 0x4008f4da on core 0 Обычное создание таска - работает =\
Denis
Maximum task name length = 16 байт по умолчанию
romanetz
https://open62541.org/ реально на ESP32 запустить?
romanetz
OPC UA сервер
Denis
https://github.com/Pro/open62541-esp32
Denis
с внешней SPI RAM
Slava
esp32, приёмник 433 МГц, расширитель портов, 8 реле, ds18b20, oled 128x64, кусок кухонной доски
Ivansuper
Кухонная доска тащит, остальное выкинуть
Telego
Привет всем. Сегодня перестал отзываться телеграм бот из ардуиновского скетча на ESP8266. Две недели работы коту под хвост. Опять под впн уходить? Есть ещё пострадавшие?
Sergey
esp32, приёмник 433 МГц, расширитель портов, 8 реле, ds18b20, oled 128x64, кусок кухонной доски
433 хорошо ловит? у меня почему то рядом с есп он ловит почти что никак
Telego
все работает отлично без впн
Запустил старую версию, точно работавшую, пробовал на другом компе - ноль. Может местный провайдер дурит(
Slava
433 хорошо ловит? у меня почему то рядом с есп он ловит почти что никак
эти говномодули на 5 вольт, на 3 не ловит совсем. без антенки тоже не ловят, только на растоянии до метра. на 5в и с антенкой вроде работают
Sergey
да от 3х... попробую от 5 запитать
Slava
ну и ты же в курсе что бывают такиеже 315мгц
Sergey
ну и ты же в курсе что бывают такиеже 315мгц
ну это понялно. они то 433 совсем ловить не будут. у мя ловит метра 3-4...
Sergey
хотя на сигналке стоит приемник он 50 метров без проблем берет, я уже думал от туда на опыты его выдрать. кстати он там стоит отдельно на проводках подалбше от платы основной
Slava
https://amperkot.ru/msk/catalog/pomehoustoychivyiy_radiopriemnik_rxc6_433_mhz-24289423.html
Slava
Slava
вот это пробовал, мой отзыв
Slava
Sergey
мне кажется ардуинина наводки дает...
Slava
мне кажется ардуинина наводки дает...
факторов много, наводки, плохое качество модулей, эфир засран
Sergey
факторов много, наводки, плохое качество модулей, эфир засран
питание забыл... эфир пустой.. ворота гаражные работают отлично, сигналка тоже а модуль рядом с ардуиной хандрит.. все руки не доходят поэкспериментировать
Slava
как соберешся экспериментировать, возьми модуль, как по ссылке, или аналогичный с кварцем