Arduino static buffer for ESP32 not working

Question/Issue: I want to compile the static buffer for my edge impulse object detection model in Arduino but i keep getting a exit status 1.

Project ID: 384271

Context/Use case:
I turned off eon compiler and turned on PSRAM but the error message is still there. Board used is the ESP32 Dev Module.

Error msg:
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\conv.cpp: In function ‘TfLiteStatus tflite::{anonymous}::Prepare(TfLiteContext*, TfLiteNode*)’:
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\conv.cpp:1789:67: error: either all initializer clauses should be designated or none of them should be
1789 | .channels = input->dims->data[3], 1
| ^
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\conv.cpp:1793:68: error: either all initializer clauses should be designated or none of them should be
1793 | .channels = output->dims->data[3], 1
| ^
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\conv.cpp:1795:80: error: either all initializer clauses should be designated or none of them should be
1795 | data_dims_t filter_dims = {.width = filter_width, .height = filter_height, 0, 0};
| ^
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\conv.cpp: In function ‘void tflite::{anonymous}::EvalQuantizedPerChannel(TfLiteContext*, TfLiteNode*, const TfLiteConvParams&, const NodeData&, const TfLiteEvalTensor*, const TfLiteEvalTensor*, const TfLiteEvalTensor*, TfLiteEvalTensor*)’:
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\conv.cpp:1883:58: error: either all initializer clauses should be designated or none of them should be
1883 | .channels = input_depth, 1
| ^
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\conv.cpp:1887:59: error: either all initializer clauses should be designated or none of them should be
1887 | .channels = output_depth, 1
| ^
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\conv.cpp:1889:80: error: either all initializer clauses should be designated or none of them should be
1889 | data_dims_t filter_dims = {.width = filter_width, .height = filter_height, 0, 0};
| ^
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\depthwise_conv.cpp: In function ‘void tflite::{anonymous}::EvalQuantizedPerChannel(TfLiteContext*, TfLiteNode*, const TfLiteDepthwiseConvParams&, const NodeData&, const TfLiteEvalTensor*, const TfLiteEvalTensor*, const TfLiteEvalTensor*, TfLiteEvalTensor*)’:
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\depthwise_conv.cpp:1727:58: error: either all initializer clauses should be designated or none of them should be
1727 | .channels = input_depth, 1
| ^
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\depthwise_conv.cpp:1731:59: error: either all initializer clauses should be designated or none of them should be
1731 | .channels = output_depth, 1
| ^
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\depthwise_conv.cpp:1733:80: error: either all initializer clauses should be designated or none of them should be
1733 | data_dims_t filter_dims = {.width = filter_width, .height = filter_height, 0, 0};
| ^
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\depthwise_conv.cpp: In function ‘TfLiteStatus tflite::{anonymous}::Prepare(TfLiteContext*, TfLiteNode*)’:
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\depthwise_conv.cpp:1836:67: error: either all initializer clauses should be designated or none of them should be
1836 | .channels = input->dims->data[3], 1
| ^
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\depthwise_conv.cpp:1840:68: error: either all initializer clauses should be designated or none of them should be
1840 | .channels = output->dims->data[3], 1
| ^
C:\Users\neoke\OneDrive\Documents\Arduino\libraries\test3_inferencing\src\edge-impulse-sdk\tensorflow\lite\micro\kernels\depthwise_conv.cpp:1842:80: error: either all initializer clauses should be designated or none of them should be
1842 | data_dims_t filter_dims = {.width = filter_width, .height = filter_height, 0, 0};
| ^

exit status 1

Compilation error: exit status 1

Hi, @kelyn !
Compilation error is not related to PSRAM. This looks like Arduino ESP32 core version mismatch. We test against 2.0.4, also 2.0.5 is known to work.
Which Arduino ESP32 Core version do you have installed in Arduino IDE?

1 Like

I had the same problem. As AIWintermuteAI said: Bring your ESP core to 2.0.4 via the boards manager in the Arduino IDE. That did the trick for me.

2.0.4 and 2.0.5 do not include ESP32-S3 boards, but it seems that any version in the 2.x branch will work. I installed Arduino ESP32 Boards by Arduino version 2.0.13 and it also seems to work with my XIAO ESP32-S3 from Seeed Studio. Using a 3.x version causes the same error as originally reported. Thank you @AIWintermuteAI and @marcbeltman for the suggestions!