espressif / esp-va-sdk

Espressif's Voice Assistant SDK: Alexa, Google Voice Assistant, Google DialogFlow
Other
291 stars 82 forks source link

The instructions and installation for the The ESP32-Vaquita-DSPG Development Board is FUBAR #147

Open HowardHonig opened 3 years ago

HowardHonig commented 3 years ago

Can't get this dm thing to compile, let alone to load. I have tried everything except using nix. The problems keep coming up one after another. Once one problem is solved there is another. For example, the instructions given seem to be for *nix and doesn't translate to Windows. For something like this, one would think there would be separate and verifiable instructions for this operating system considering this thing is suppose to work with the three main OS's.
Even after getting around the instructions and translating, it fails badly for PowerShell with one problem after another. The Command Prompt is a little better but problems keep cropping up. I can't tell if the problems are the instructions can't keep up with the espressive changes in the tools or they are truly FUBAR'd beyond belief. For example, the problem with "Error caused due to -> multiple definition of `set_xpd_sar'". There is absolutely no excuse for this kind of error. I swear it was starting to compile but now I'm getting an error:

CMake Error at C:/Users/howar/Documents/Alexa/iot/exp-vaquita/esp-idf/tools/cmake/project.cmake:394 (target_link_libraries): Cannot specify link libraries for target "aia.elf" which is not built by this project. Call Stack (most recent call first): CMakeLists.txt:79 (project)

There is NO excuse that the instructions and the downloads shouldn't work the first time if the company did their job. This whole thing is horrible. Wish I tried microchip's version or one of the many other versions and there are many. I've deleted and installed so many times thinking the d/l was incorrect but still have the problems. I'm going to try getting the money back for this thing from espressif (edit), although I 'm sure that is a fool errand. Failing that, a lawsuit would be in order.

Let me be clear, espressif made some breakthrough products and because they as supported by other tools and libraries they have been very useful. But if they put out a product they need to make sure it works based on the legal rule of warranty of merchantability or risk the consequences.

just-jason commented 3 years ago

Be sure to spell the name right when you file that lawsuit. It is Espressif and not espressive.

chiragatal commented 3 years ago

Regarding the set_xpd_sar issue, this was caused by a change in IDF a while back. Could you try this and see if it works: https://github.com/espressif/esp-va-sdk/issues/132#issuecomment-806482366

Regarding the link libraries issue, can you provide the full log from the console so we can analyse?

FYI, we are also making a major release this week which includes a number of additional features and fixes.

HowardHonig commented 3 years ago

Okay, as I hope it helps someone else out....

Summary: I can't get past the idf.py flash monitor step. If I run it without changing the project.cmake file I get plenty of undefined references to the (what I think) is the audio card. If I put in the recommended change in the instructions I get the "Cannot specify link libraries for target "aia.elf" which is not built by this project." Also, the idf.py menuconfig fails with that change in, which took too long time to discover. Error printouts are below in just the sections that I believe can help identify the problem. BTW, line 394 in the project.cmake file is where I added the recommended line as per the instructions. Finally, I made the changes in the app_wifi.c file outlined above, but this made no difference in the problem below.

Running the idf.py flash monitor step, the error are: inja: no work to do. [3/4] Linking CXX executable aia.elf FAILED: aia.elf cmd.exe /C "cd . && C:\Users\howar.espressif\tools\xtensa-esp32-elf\esp-2020r3-8.4.0\xtensa-esp32-elf\bin\xtensa-esp32-elf-g++.exe -mlongcalls -Wno-frame-address -nostdlib @CMakeFiles\aia.elf.rsp -o aia.elf && cd ." c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/esp_wifi/libesp_wifi.a(wifi_init.c.obj): in function set_xpd_sar': C:/Users/howar/Documents/Alexa/iot/exp-vaquita/esp-idf/components/esp_wifi/src/wifi_init.c:219: multiple definition ofset_xpd_sar'; esp-idf/common/libcommon.a(app_wifi.c.obj):C:/Users/howar/Documents/Alexa/iot/exp-vaquita/esp-va-sdk/examples/common/app_wifi.c:185: first defined here c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/basic_player/libbasic_player.a(basic_player.c.obj):(.literal.basic_player_stop+0x0): undefined reference to audio_stream_stop' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/basic_player/libbasic_player.a(basic_player.c.obj):(.literal.basic_player_play+0x8): undefined reference tohttp_playback_stream_set_config' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/basic_player/libbasic_player.a(basic_player.c.obj):(.literal.basic_player_play+0xc): undefined reference to audio_stream_start' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/basic_player/libbasic_player.a(basic_player.c.obj):(.literal.basic_player_destroy+0x0): undefined reference toaudio_stream_destroy' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/basic_player/libbasic_player.a(basic_player.c.obj):(.literal.basic_player_destroy+0x4): undefined reference to http_playback_stream_destroy' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/basic_player/libbasic_player.a(basic_player.c.obj):(.literal.basic_player_create+0x4c): undefined reference tohttp_playback_stream_create_reader' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/basic_player/libbasic_player.a(basic_player.c.obj):(.literal.basic_player_create+0x50): undefined reference to http_playback_stream_set_stack_size' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/basic_player/libbasic_player.a(basic_player.c.obj):(.literal.basic_player_create+0x54): undefined reference toaudio_stream_init' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/basic_player/libbasic_player.a(basic_player.c.obj): in function basic_player_stop': C:/Users/howar/Documents/Alexa/iot/exp-vaquita/esp-va-sdk/components/basic_player/basic_player.c:198: undefined reference toaudio_stream_stop' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/basic_player/libbasic_player.a(basic_player.c.obj): in function basic_player_play': C:/Users/howar/Documents/Alexa/iot/exp-vaquita/esp-va-sdk/components/basic_player/basic_player.c:176: undefined reference tohttp_playback_stream_set_config' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:/Users/howar/Documents/Alexa/iot/exp-vaquita/esp-va-sdk/components/basic_player/basic_player.c:176: undefined reference to audio_stream_start' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/basic_player/libbasic_player.a(basic_player.c.obj): in functionbasic_player_destroy': C:/Users/howar/Documents/Alexa/iot/exp-vaquita/esp-va-sdk/components/basic_player/basic_player.c:610: undefined reference to audio_stream_destroy' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:/Users/howar/Documents/Alexa/iot/exp-vaquita/esp-va-sdk/components/basic_player/basic_player.c:611: undefined reference tohttp_playback_stream_destroy' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: esp-idf/basic_player/libbasic_player.a(basic_player.c.obj): in function basic_player_create': C:/Users/howar/Documents/Alexa/iot/exp-vaquita/esp-va-sdk/components/basic_player/basic_player.c:571: undefined reference tohttp_playback_stream_create_reader' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:/Users/howar/Documents/Alexa/iot/exp-vaquita/esp-va-sdk/components/basic_player/basic_player.c:577: undefined reference to http_playback_stream_set_stack_size' c:/users/howar/.espressif/tools/xtensa-esp32-elf/esp-2020r3-8.4.0/xtensa-esp32-elf/bin/../lib/gcc/xtensa-esp32-elf/8.4.0/../../../../xtensa-esp32-elf/bin/ld.exe: C:/Users/howar/Documents/Alexa/iot/exp-vaquita/esp-va-sdk/components/basic_player/basic_player.c:580: undefined reference toaudio_stream_init' collect2.exe: error: ld returned 1 exit status ninja: build stopped: subcommand failed. ninja failed with exit code 1

To correct this, as indicated in the build instruction, adding the line: as per the instructions:

"*the below line in esp-idf/tools/cmake/project.cmake:394 target_link_libraries(${project_elf} "-Wl,--start-group")"

Results are:

-- Configuring incomplete, errors occurred! See also "C:/Users/howar/Documents/Alexa/iot/exp-vaquita/esp-va-sdk/examples/amazon_aia/build/CMakeFiles/CMakeOutput.log". FAILED: build.ninja C:\Users\howar.espressif\tools\cmake\3.13.4\bin\cmake.exe -SC:\Users\howar\Documents\Alexa\iot\exp-vaquita\esp-va-sdk\examples\amazon_aia -BC:\Users\howar\Documents\Alexa\iot\exp-vaquita\esp-va-sdk\examples\amazon_aia\build ninja: error: rebuilding 'build.ninja': subcommand failed ninja failed with exit code 1

HowardHonig commented 3 years ago

Ok, figured it out. It is now working and after 1 week of effort I can begin to start doing what I had planned a week ago.

The problem was putting in the line, as the instructions suggest: target_link_libraries(${project_elf} "-Wl,--start-group") at line esp-idf/tools/cmake/project.cmake:394

The line should be added after line 398 NOT 394. This cleared the linking issue. The rest was pretty straight forward. It's amazing that such a little fix can cause so many issues.

chiragatal commented 3 years ago

Good to hear that it is working now. Hopefully such patches won't be required with the next release.

danielhendrickson commented 3 years ago

I am having a similar problem. Would you mind posting a screenshot of your cmake file around line 398 so I can compare it to mine?

HowardHonig commented 3 years ago

Sure. Here it is after project.cmake: line 389. The added line is *'d.

# Create a dummy file to work around CMake requirement of having a source
# file while adding an executable
set(project_elf_src ${CMAKE_BINARY_DIR}/project_elf_src.c)

add_custom_command(OUTPUT ${project_elf_src}
    COMMAND ${CMAKE_COMMAND} -E touch ${project_elf_src}
    VERBATIM)
add_custom_target(_project_elf_src DEPENDS "${project_elf_src}")
add_executable(${project_elf} "${project_elf_src}")
add_dependencies(${project_elf} _project_elf_src)

# ************* added hlh *************************#
target_link_libraries(${project_elf} "-Wl,--start-group")

if(test_components)