Arm Mbed OS support forum

Cannot find the mbed tools directory

Hello, I trying to compile project: https://github.com/ARM-software/ML-KWS-for-MCU/tree/master/Deployment, which was created by mbed. I worked with kws_realtime_test project for STM32F746NG board. I m trying to compile on Windows7 machine in command line.

I made step by step everything by the attached README.md file, from an above mentioned project.

When I call mbed deploy, than I get a warning message:

[mbed] WARNING: Cannot find the mbed tools directory in “D:\KWDetectOn746Dev_v00\Deploy\kws_realtime_test”

And when I try to compile than I get an error:

[mbed] ERROR: The mbed tools were not found in “D:\KWDetectOn746Dev_v00\Deploy\kws_realtime_test”.
You can run “mbed deploy” to install dependencies and tools.

On some forum I read, that I need to add mbed-os to my project
Link: https://os.mbed.com/questions/81212/warning-The-mbed-tools-were-not-found-in/

When I add that, I can deploy the project without any warning, but I have an error after compile:

Include
[ERROR] Library name ‘platform’ is not unique (defined in ‘D:\KWDetectOn746Dev_v00\Deploy\kws_realtime_test\mbed\65be27845400\TARGET_DISCO_F746NG\TOOLCHAIN_GCC_ARM\mbed_lib.json’ and ‘D:\KWDetectOn746Dev_v00\Deploy\kws_realtime_test\mbed-os\platform\mbed_lib.json’)
[mbed] Working path “”

I tried to remove one of .json files, and the compilation finally can start, but after 10% I get many compiler errors. My compiler cant compile source files from mbed-os directory. Im using GNU GCC compiler.

Part of error messages:

Compile [ 11.6%]: AUDIO_DISCO_F746NG.cpp
[Error] c++0x_warning.h@32,2: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
[Warning] Kernel.h@87,5: identifier ‘constexpr’ is a keyword in C++11 [-Wc++11-compat]
[Warning] mstd_new@43,1: identifier ‘noexcept’ is a keyword in C++11 [-Wc++11-compat]
[Warning] mstd_new@45,5: identifier ‘static_assert’ is a keyword in C++11 [-Wc++11-compat]
[Warning] mstd_type_traits@327,22: identifier ‘decltype’ is a keyword in C++11 [-Wc++11-compat]
[Warning] Callback.h@203,5: identifier ‘nullptr’ is a keyword in C++11 [-Wc++11-compat]
[Warning] Kernel.h@74,15: defaulted and deleted functions only available with ‘-std=c++11’ or ‘-std=gnu++11’
[Error] Kernel.h@76,11: expected nested-name-specifier before ‘duration’
[Error] Kernel.h@77,11: expected nested-name-specifier before ‘rep’
[Error] Kernel.h@78,11: expected nested-name-specifier before ‘period’
[Error] Kernel.h@80,11: expected nested-name-specifier before ‘time_point’
[Error] Kernel.h@87,12: ‘constexpr’ does not name a type
[Error] Kernel.h@88,12: ‘time_point’ does not name a type
[Error] Kernel.h@95,11: expected nested-name-specifier before ‘duration_u32’
[Error] Kernel.h@114,1: ‘constexpr’ does not name a type
[Error] Kernel.h@120,1: ‘constexpr’ does not name a type

  • So how can I compile that project?
  • Why I need mbed-os to my project? It is not mentioned in readme file. Is it not enough to install mbed-tools, and no whole mbed-os? I think my project do not use any OS functionality.

I 'm working on a compilation of a simple project few days, and is going to be a really nightmare for me.

Are there any simpler way to precompile this project?

Hello Béla,

The KWS project site suggests to create a simple KWS interface program by running the command:

mbed new kws_simple_test --mbedlib 

According to the mbed-cli documentation the --mbedlib option is used when creating a mbed os 2 program.

  • Unfortunately, ARM doesn’t support mbed os 2 anymore and the --mbedlib option has no effect. Consequently, no mbed library is downloaded to the kws_simple_test folder by such command. You have to do that manually from https://github.com/ARMmbed/mbed-dev. Copy the downloaded .zip file to the kws_simple_test folder and unzip. Then rename the mbed-dev-master folder to mbed and issue the mbed deploy command (from the kws_simple_test folder) to install the mbed tools into the mbed folder.

  • Another option is to create a mbed bare-metal project (mbed os 6 without os) rather than a mbed os 2. For more info have a look at https://os.mbed.com/docs/mbed-os/v6.1/bare-metal/index.html.

Best regards, Zoltán

1 Like

Hello Zoltán,

Mine main plan was to compile the: kws_realtime_test not the kws_simple_test.

But I tried to compile the kws_simple_test proj, too. After project creating with

mbed new kws_simple_test --mbedlib

this automatically downloads the mbed library, but I think it was not complete. When I compare it by a web resource: https://os.mbed.com/users/mbed_official/code/mbed/, than I cant found the drivers, hal and platform folders and the mbed.h file, too. So I copy them manually, and than I can compile the project.

With the same method I can compile the realtime version, too.

With the downloaded mbed-dev library I cant compile the project, but it is already not important for me.

So thanks for help.