Undefined reference to arm_rms_f32


On some targets that are not fully supported (as these are in CI, so we’d seen it earlier) you might get the error above. If you see ^ appear then you can fix it by applying this patch:

--- a/edge-impulse-sdk/dsp/spectral/feature.hpp
+++ b/edge-impulse-sdk/dsp/spectral/feature.hpp
@@ -399,7 +399,13 @@ public:
 for (size_t row = 0; row < input_matrix->rows; row++) {
 float *data_window = input_matrix->get_row_ptr(row);
 size_t data_size = input_matrix->cols;
- arm_rms_f32(data_window, data_size, feature_out++);
+ matrix_t rms_in_matrix(1, data_size, data_window);
+ matrix_t rms_out_matrix(1, 1, feature_out);
+ EI_TRY(numpy::rms(&rms_in_matrix, &rms_out_matrix));
+ feature_out++;
 // Standard Deviation
 float stddev = *(feature_out-1); //= sqrt(numpy::variance(data_window, data_size));
 // Don't add std dev as a feature b/c it's the same as RMS

We’re publishing a proper fix to the SDK tomorrow.

This has now been fixed and we’ve added some tests to capture this in the future!