Hello everyone !
I am currently trying the make a TinyML using Neuton.ai to work on an Arduino board.
I Think I have 2 issues.
1. Including the libraries properly.
2. Using the right flags to compile it.
Here is the folder structure.
Compiling .pio\build\nano33ble\FrameworkArduino\wiring_digital.cpp.o
In file included from lib\neuton\include/neuton/neuton.h:15,
from src\main.cpp:4:
lib\neuton\include/neuton/nn/neuton_nn.h:13:10: fatal error: neuton_generated/neuton_user_types.h: No such file or directory
#include <neuton_generated/neuton_user_types.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
*** [.pio\build\nano33ble\src\main.cpp.o] Error 1
Here is the code in neuton_nn.h
/**
*
* @defgroup neuton_nn Neural Network
* @{
* @ingroup neuton
*
* @brief
*
*/
#ifndef _NEUTON_NN_H_
#define _NEUTON_NN_H_
#include <neuton_generated/neuton_user_types.h>
#include <neuton/neuton_types.h>
#ifdef __cplusplus
extern "C"
{
#endif
main.cpp
#include <Arduino.h>
#include <Arduino_LSM9DS1.h>
#include <CircularBuffer.h>
#include <neuton/neuton.h>
void setup()
{
Serial.begin(115200);
Serial.println("Started");
if (!IMU.begin())
{
Serial.println("Failed to initialize IMU!");
while (1)
;
}
Serial.println("setup");
/** Setup Neuton */
neuton_nn_setup();
}
void loop()
{
}
In the setup() I am calling neuton_nn_setup(); whichis define in libneuton_arm_cm4.a
Here is platformio.ini
[env:nano33ble]
board = nano33ble
framework = arduino
monitor_speed = 115200
platform = nordicnrf52@9.5.0
lib_deps =
arduino-libraries/Arduino_LSM9DS1@^1.1.1
rlogiacco/CircularBuffer@^1.3.3
lib_ldf_mode = chain+
build_unflags =
-mfloat-abi=softfp
-Os
build_flags =
-mfloat-abi=hard
-Ilib/neuton/include
-Ilib/neuton_generated
I successfully the only way of making it working was to modify neuton_nn.h to use relative path to the neuton_user_types.h file.
What is the correct way, without having to modify the library download from neuton.ai ?
Second issue :
Of no libraries issues, i get tones of errors like this
Archiving .pio\build\nano33ble\libFrameworkArduino.a
Indexing .pio\build\nano33ble\libFrameworkArduino.a
Linking .pio\build\nano33ble\firmware.elf
c:/users/cg/.platformio/packages/toolchain-gccarmnoneeabi@1.80201.181220/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: error: .pio\build\nano33ble\src\main.cpp.o uses VFP register arguments, .pio\build\nano33ble\firmware.elf does not
c:/users/cg/.platformio/packages/toolchain-gccarmnoneeabi@1.80201.181220/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: failed to merge target specific data of file .pio\build\nano33ble\src\main.cpp.o
c:/users/cg/.platformio/packages/toolchain-gccarmnoneeabi@1.80201.181220/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: error: .pio\build\nano33ble\libf9b\libWire.a(Wire.cpp.o) uses VFP register arguments, .pio\build\nano33ble\firmware.elf does not
c:/users/cg/.platformio/packages/toolchain-gccarmnoneeabi@1.80201.181220/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: failed to merge target specific data of file .pio\build\nano33ble\libf9b\libWire.a(Wire.cpp.o)
c:/users/cg/.platformio/packages/toolchain-gccarmnoneeabi@1.80201.181220/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: error: .pio\build\nano33ble\lib2c1\libArduino_LSM9DS1.a(LSM9DS1.cpp.o) uses VFP register arguments, .pio\build\nano33ble\firmware.elf does not
c:/users/cg/.platformio/packages/toolchain-gccarmnoneeabi@1.80201.181220/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: failed to merge target specific data of file .pio\build\nano33ble\lib2c1\libArduino_LSM9DS1.a(LSM9DS1.cpp.o)
c:/users/cg/.platformio/packages/toolchain-gccarmnoneeabi@1.80201.181220/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: error: .pio\build\nano33ble\libFrameworkArduinoVariant.a(variant.cpp.o) uses VFP register arguments, .pio\build\nano33ble\firmware.elf does not
c:/users/cg/.platformio/packages/toolchain-gccarmnoneeabi@1.80201.181220/bin/../lib/gcc/arm-none-eabi/8.2.1/../../../../arm-none-eabi/bin/ld.exe: failed to merge target specific data of file .pio\build\nano33ble\libFrameworkArduinoVariant.a(variant.cpp.o)
So i tried to force -mfloat-abi=hard and disable -mfloat-abi=softfp in the platformio.ini but the error still persist.
Can you please help me ?