Compilation error in Arduino IDE

Hi,
While coding my Wio Terminal in Arduino IDE, I get this error message
This error occurred when I used the built Arduino library from deployment recently
#include <new_inferencing.h>”
Previously I had no problem with the previous file

error message:
c:/users/123/appdata/local/arduino15/packages/seeeduino/tools/arm-none-eabi-gcc/7-2017q4/bin/…/lib/gcc/arm-none-eabi/7.2.1/…/…/…/…/arm-none-eabi/bin/ld.exe: error: C:\Users\123\AppData\Local\Temp\arduino\sketches\62E5AB56F4F958123B647FB675E44D6F\libraries\wio_anomaly_detection1_inferencing\edge-impulse-sdk\porting\espressif\ESP-NN\src\activation_functions\objs.a(esp_nn_relu_s8_esp32s3.S.o): Conflicting CPU architectures 13/0

Compilation error: exit status 1

Please provide a solution
Question/Issue:

Project ID:
298205
Context/Use case:

Hi @TianPutra,

My guess is that you previously tried to compile the wio_anomaly_detection1_inferencing library for another microcontroller target, and Arduino cached the compiled object (.o) files. For whatever reason, Arduino didn’t clean those out before trying to recompile. There’s no equivalent to “make clean” in Arduino. You can try switching boards and compiling again (Can I force the Arduino IDE to recompile everything? - IDE 2.x - Arduino Forum).

If you run into the same error again, I recommend deleting the wio_anomaly_detection1_inferencing in your libraries/ directory, re-importing the downloaded Edge Impulse library, and trying to compile again. That should effectively clean out all the old .o files.

I have the same problem. The EdgeImpulse project, which is generated this week, gives out ld error. The very same project didn’t get this kind of error before.

I have tried your advice, but the ld error remains.

Hi, TianPutra, I finally solved the problem by deleting all the files in the ESP-NN folder. It’s caused by compling and linking the assembly code in ESP-NN, maybe there are better solutions, e.g., changing the makefiles not to link these files, but I didn’t get a way to do this in Arduino IDE.

Hi, @denton and @TianPutra !
It does sound like there is an issue with ESP NN assembly files, that were added recently. The content of these files is behind macro guard already

#if EI_CLASSIFIER_TFLITE_ENABLE_ESP_NN && EI_CLASSIFIER_TFLITE_ENABLE_ESP_NN_S3

so it definitely should NOT be compiled in other boards. We have CI tests for Arduino boards and these do not show any issue. I’ll try to reproduce the issue manually now.
Meanwhile, which board do you use @denton ?

Yeah, you are right, but it was compiled on my ‘Wio Terminal’ board, with the macro guard being skipped.

Not really. I don’t think the macros were being skipped. More likely culprit is very old build tools used by Wio Terminal, which misinterpret an empty .S file as unknown CPU architecture. This does not happen for other comparable boards, using newer ARM build tools in Arduino IDE (e.g. Arduino Nano BLE33). We published a workaround in our documentation and will contact Seeed studio to ask to fix the issue on their side by updating build tools.

1 Like

Okay. My problem has been resolved by deleting all the files in the ESP-NN folder. Thank you to all of you

1 Like

Heads-up: the issue was fixed and the fix will be soon deployed to production.