I tried to used ESP-CAM to firmware TinyML model from Edge Impulse. I ran successfully example from Edge Impulse but cannot ran my model created by Edge Impulse.
Err:
Error compiling for board AI Thinker ESP32-CAM.
The picture of the tiny text is hard to read. Click on the "Copy error messages" button (see top right of your image) and paste the text into a reply.
/Users/kong/Documents/Arduino/hardware/espressif/esp32/tools/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: libraries/fire_detection_inferencing/edge-impulse-sdk/porting/espressif/objs.a(debug_log.cpp.o): in function `DebugLog(char const*)':
/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/espressif/debug_log.cpp:34: multiple definition of `DebugLog(char const*)'; libraries/fire_detection_inferencing/edge-impulse-sdk/porting/arduino/objs.a(debug_log.cpp.o):/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/arduino/debug_log.cpp:34: first defined here
/Users/kong/Documents/Arduino/hardware/espressif/esp32/tools/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: libraries/fire_detection_inferencing/edge-impulse-sdk/porting/espressif/objs.a(ei_classifier_porting.cpp.o): in function `ei_read_timer_ms()':
/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/espressif/ei_classifier_porting.cpp:47: multiple definition of `ei_read_timer_ms()'; libraries/fire_detection_inferencing/edge-impulse-sdk/porting/arduino/objs.a(ei_classifier_porting.cpp.o):/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/arduino/ei_classifier_porting.cpp:41: first defined here
/Users/kong/Documents/Arduino/hardware/espressif/esp32/tools/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: libraries/fire_detection_inferencing/edge-impulse-sdk/porting/espressif/objs.a(ei_classifier_porting.cpp.o): in function `ei_read_timer_us()':
/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/espressif/ei_classifier_porting.cpp:51: multiple definition of `ei_read_timer_us()'; libraries/fire_detection_inferencing/edge-impulse-sdk/porting/arduino/objs.a(ei_classifier_porting.cpp.o):/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/arduino/ei_classifier_porting.cpp:45: first defined here
/Users/kong/Documents/Arduino/hardware/espressif/esp32/tools/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld: libraries/fire_detection_inferencing/edge-impulse-sdk/porting/espressif/objs.a(ei_classifier_porting.cpp.o): in function `ei_putchar(char)':
/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/espressif/ei_classifier_porting.cpp:56: multiple definition of `ei_putchar(char)'; libraries/fire_detection_inferencing/edge-impulse-sdk/porting/arduino/objs.a(ei_classifier_porting.cpp.o):/Users/kong/Documents/Arduino/libraries/fire_detection_inferencing/src/edge-impulse-sdk/porting/arduino/ei_classifier_porting.cpp:55: first defined here
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board AI Thinker ESP32-CAM.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
It looks like your build is including two copies of "objs.a" which contains the functions:
DebugLog(char const*)
ei_read_timer_ms()
ei_read_timer_us()
ei_putchar(char)
One is in:
libraries/
fire_detection_inferencing/
src/
edge-impulse-sdk/
porting/
espressif
and the other in:
libraries/
fire_detection_inferencing/
src/
edge-impulse-sdk/
porting/
arduino
I don't know why your build is using the same file from both directories. Perhaps deleting one of the two directories will work around the problem.
Thank you so much. I tried it and it ran successfully now. Idk why the lib form edge impulse concludes both files. btw it still run