Deploying Edge Impulse C++ Model on nRF5340 DK with Zephyr

We attempted to deploy an Edge Impulse machine learning model on the nRF5340 DK for a simple test project. The model was trained using labeled IMU data (x, y, z) and used the Spectral Analysis DSP block followed by a Classification block. After training, we exported the model as a C++ library (zip format). The downloaded archive included the following contents: edge-impulse-sdk, model-parameters, tflite-model directories, and a CMakeLists.txt file. These files were copied into a basic hello_world Zephyr project using the nRF Connect SDK (v2.6.0). Upon building the project, we encountered multiple issues. First, there was a macro redefinition warning due to a conflict between the ROUND_UP macro in cmsis/dsp/utils.h and zephyr/sys/util.h. More critically, the build failed with errors such as 'extract_imu_syntiant_features' was not declared in this scope and 'signal_from_buffer' was not declared in this scope. These functions are referenced in the generated model_variables.h and example code but are not defined anywhere in the SDK or model output files. It seems that the DSP block used during model creation may not be fully compatible with the nRF5340 or that additional files required by the Edge Impulse runtime are missing. We would appreciate guidance on the correct integration method for Edge Impulse C++ libraries into Zephyr-based projects for nRF5340, especially for Spectral Analysis + Classification models, and clarification on whether specific DSP blocks (e.g., Syntiant) are unsupported or require manual adjustments. (sdk and toolchain v2.6.0

Parents Reply Children
No Data
Related