Hello,
I was trying to run TFLM custom code on Thingy:53 device and while building I have faced these warnings.
1. Could you please help me to understand Why I am facing these warning?
2. How can I Remove solve these problems?
Regards,
Divya
Hello,
I was trying to run TFLM custom code on Thingy:53 device and while building I have faced these warnings.
1. Could you please help me to understand Why I am facing these warning?
2. How can I Remove solve these problems?
Regards,
Divya
Hi Divya,
1. This is telling you that asserts are enabled. If you look through the code files in nRF Connect SDK you will find __ASSERT is used several places. This is used to give a runtime error based on a check. You can read more about this here: Software Errors Triggered in Source Code.
2. You can disable asserts by setting the following in prj.conf: CONFIG_ASSERT=n
Best regards,
Marte
Hello Marte,
Thank you so much for the response. I hope you have noticed that I have updated the question with more warnings while building the code. Could you please help me to solve those issues too!!
Hi Divya,
As you can see in the warning text, you are trying to set configurations related to logging (CONFIG_LOG_DEFAULT_LEVEL and CONFIG_LOG_MODE_MINIMAL) while logging is disabled:
Check these unsatisfied dependencies: (LOG || LOG) (=n)
If you go to the links referenced in the warnings you can also see that the configurations depend on CONFIG_LOG being set, see for example CONFIG_LOG_DEFAULT_LEVEL.
If you want to use logging you must set CONFIG_LOG=y in prj.conf. If you do not want to use logging then you can remove these two configurations instead.
Best regards,
Marte
Thanks Marte for your message.
I need to ask that I have added some header files and source file in section of "src" my custom project but when I opened the project in VSC I can not find those files.
I can only see those files in Explorer section. Do you know how can I see my all files?
Regards,
Divya
Hi Divya,
You need to add the files to the project. For the header files you add the directory the files are in with zephyr_library_include_directories, and for the source files you add the files themselves to target_sources, for example:
target_sources(app PRIVATE src/main.c src/<custom_file> ) zephyr_library_include_directories(src)
Where you change <custom_file> to the filename of your source file.
After you do a pristine build after adding this you should see the files in the nRF Connect extension in VS Code.
Best regards,
Marte
Hi Divya,
You need to add the files to the project. For the header files you add the directory the files are in with zephyr_library_include_directories, and for the source files you add the files themselves to target_sources, for example:
target_sources(app PRIVATE src/main.c src/<custom_file> ) zephyr_library_include_directories(src)
Where you change <custom_file> to the filename of your source file.
After you do a pristine build after adding this you should see the files in the nRF Connect extension in VS Code.
Best regards,
Marte
Thanks for the quick reply.
Actually I want to add a.cc file in the src folder and then want to call inside the main.c file.
But it is showing an error that : No Sorce given to the target: app cmake in line 418. So, what should I do to include a .cc file inside main.c file.
Does calling a C++ file inside a C is really support by Thingy?
If not then is there any possibilty to build and Flash Thingy with a C++ file like main.cc in place of main.c?
Regards,
Divya
Hi Divya,
Are you trying to include the C++ file directly or through a header file? You cannot include source files, so you must include the header file in main.c.
Also, you cannot use C++ code in C files. If you put a C function (from your C++ file) in an extern "C" block in your header file, then you can use it in your C file, but you cannot use C++ classes and many other C++ features in a C file. If you search online you will be able to find a lot of information about this, and about how to use extern "C". If you want to use C++ features then you should have your main file as a C++ file instead of C. This is for example done for Matter samples in nRF Connect SDK, so you can look there for examples (nrf/samples/matter).
Best regards,
Marte
Hello Marte,
I have followed the same solution as you have mentioned above, I will explore more about the matter example. Thank you for sharing.
Now after adding C++ header file along with other header files I am facing some issues. it seems like I am not able to add libraries from other folder.
So, I have cloned a repository inside the src directory in a separate folder named tensorflow inside "src" and it is showing me the error like:
As you mentioned earlier I can add all the extra file in the CMakelist.txt. So, I have added them like:
can you please help me why I am not able to access the header file inside the tensorflow folder? I have checked and verified that these files are at the mentioned location.
Regards,
Divya
Hello Marte,
I guess I might know the problem now but still I am confuse with adding the a folder inside src folder.
I followed the steps as mentioned in this link here:
devzone.nordicsemi.com/.../392032
but the problem is still not resolved. I can not access the folder that I have added inside the src.
Do you think writing the CMakelist like this is fine?
Regards,
Divya
Hi Divya,
You need to add the actual path to the source files and to the directory where the header file is. Additionally, you should not add the header files to target_sources, only the source files. For the header files you should add the directory they are in to zephyr_include_directories.
For example:
target_sources(app PRIVATE src/main.c src/tensorflow/lite/micro/micro_error_reporter.cc src/tensorflow/lite/micro/micro_interpreter.cc src/tensorflow/lite/schema/schema_generated.cc ) zephyr_library_include_directories( src/tensorflow/lite/micro src/tensorflow/lite/schema )
Here I have just guessed the file names and paths from your pictures to give you an example. You must use the actual file names and paths of your files.
With this you only need the filename in the #include in your main file, and not the whole path:
#include "micro_error_reporter.h"
#include "micro_interpreter.h"
etc.
Best regards,
Marte