Библиотека WirelessUART для 434MHz модулей HC-11/HC-12 или им подобных

Тема в разделе "Проводная и беспроводная связь", создана пользователем RogerRU, 16 авг 2016.

  1. Веталь

    Веталь Нуб

    Большое Вам спасибо!
     
  2. NazarDiadiun

    NazarDiadiun Нуб

    Здравствуйте!
    Очень сильно понравилась библиотека, здорово упростила жизнь при разработке устройств
    При работе с ESP32 периодически наблюдаю ошибки, расшифровав которые, указывают на данную библиотеку.
    Я еще не сильно научился работать с ESP Exception Decoder, может для себя не так что-то интерпретирую, тем не менее.
    Вызвано ли это действительно библиотекой, или мой код где-то косячит ?

    157 строка в WirelessUART.cpp: free(rx_buffer);

    Хотелось бы понять, хотя бы приблизительно, чем вызывается данная ошибка, потому что проявляется регулярно
    В плане, я понимаю, что проблема с памятью. Вызывается ли это тем, что произошла попытка освободить проблемный участок памяти, или он не выделен был. Вот здесь помощь и нужна, слабоват тут

    Код (C++):
    0x40091f65: multi_heap_free at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/multi_heap_poisoning.c line 218
    0x40082b36: heap_caps_free at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/heap_caps.c line 268
    0x40089be9: _free_r at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/newlib/syscalls.c line 42
    0x400da7c3: WirelessUART::receiveData() at /Users/nazar/Documents/Arduino/libraries/WirelessUART-master/WirelessUART.cpp line 157
    0x400d780c: Wireless_Processing() at /Users/nazar/Desktop/WirelessModules/Software/Main/MainModule/Wireless.ino line 25
    0x400d82e3: loop() at /Users/nazar/Desktop/WirelessModules/Software/Main/MainModule/MainModule.ino line 56
    0x400f1061: loopTask(void*) at /Users/nazar/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/main.cpp line 23
    0x4008e76a: vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c line 143
     
  3. b707

    b707 Гуру

    я в #15 писал. что работа с памятью в библиотеке написана не очень аккуратно - в некоторых случаях выделяется память, которая в по ходу работы не используется и далее удаляется. Но вроде утечек нет.

    Я у себя в проекте эти моменты немного переписал, но скорее для успокоения.
     
  4. NazarDiadiun

    NazarDiadiun Нуб

    Спасибо за ответ!
    Можно ли заменить динамическое выделение памяти просто единоразово выделив память под буфер данных (взяв размер с запасом под свои нужды) ? Или это не совсем здравая идея ?
    Я в целом-то боюсь использовать динамическую память, тем более что на ESP32 SRAM имеет довольно внушительный размер как для МК, а фрагментация, которая уже имела место быть у меня - вещь очень не приятная, и мне сложно дебажить её
     
  5. b707

    b707 Гуру

    скорее всего можно, но точно не скажу, надо внимательно код смотреть.
     
  6. NazarDiadiun

    NazarDiadiun Нуб

    Я понял. Ну, если и Вы говорите, что могут быть траблы с памятью в библиотеке, то хотя бы уверенность появляется в том, что менять что-то необходимо.
    Забавно, но с AVR никогда не было таких проблем, или я их банально не замечал. ESP же выпадает в ошибку, перезагружается, одним словом - сложно не заметить.
    Спасибо за совет!)