From b42ab83388ac38e2c62063cefee9a9a89be250ad Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 18 Mar 2023 21:59:48 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=A1=B9=E7=9B=AE=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 66 +++++++++++++++-------------------------------- CMakeListsAARCH64.cmake | 35 +++++++++++++++++++++++++ CMakeListsPC.cmake | 7 +++++ TODO.md | 25 +++++++++--------- buildtools | 2 +- cmakepc.cmake | 64 ---------------------------------------------- sh/envsetup.sh | 33 ++++-------------------- sh/envsetuppc.sh | 11 -------- sh/packet.sh | 68 +++---------------------------------------------- 9 files changed, 85 insertions(+), 226 deletions(-) create mode 100644 CMakeListsAARCH64.cmake create mode 100644 CMakeListsPC.cmake delete mode 100644 cmakepc.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 1979d5f..5446af4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,21 +5,13 @@ set(CMAKE_BUILD_TYPE Debug) set(CMAKE_SKIP_BUILD_RPATH FALSE) set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) -set(CMAKE_INSTALL_PREFIX "./") - +set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR}/) include(zcmake/zcmake.cmake) project(app) - # 设置ccache加速C++编译速度 set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) -# 如何 BUILD_FOR_TEST_ON_PC == true, 则include cmakepc.cmake -if(BUILD_FOR_TEST_ON_PC) - include(cmakepc.cmake) - return() -endif() - # 设置通用编译选项 set(C_CPP_FLAGS "${C_CPP_FLAGS} ") set(C_CPP_FLAGS @@ -77,40 +69,24 @@ set(DEP_LINK_LIBRARIES # # curlpp curl ) -# set(PUBLIC_INCLUDE_DIRECTORIES ${PUBLIC_INCLUDE_DIRECTORIES} -# ./libs/curlpp/include) set(PUBLIC_LINK_DIRECTORIES ${PUBLIC_LINK_DIRECTORIES} -# ./libs/curlpp/lib) - -# 添加编译的目标文件 -zadd_executable_simple( - TARGET - app.out - SRC - src/main.cpp - src/service/device_io_service.cpp - src/service/device_io_service_mock.cpp - src/service/main_control_service.cpp - src/service/light_control_service.cpp - src/service/report_service.cpp - src/service/voiceprocess/beforeasr_voiceprocesser.cpp - src/service/voiceprocess/beforewakeup_voiceprocesser.cpp - src/service/voiceprocess/wakeup_processer.cpp - src/service/voiceprocess/audio_recoder_service.cpp - src/service/voiceprocess/audio_logging_service.cpp - # aiui -) +# 设置当前工程依赖的头文件路径和链接的库文件 +set(DEP_LINK_LIBRARIES ${DEP_LINK_LIBRARIES} pthread) +# 设置头文件路径 +set(PUBLIC_INCLUDE_DIRECTORIES ${PUBLIC_INCLUDE_DIRECTORIES}) +# 设置链接库路径 +set(PUBLIC_LINK_DIRECTORIES ${PUBLIC_LINK_DIRECTORIES}) +# 如何 BUILD_FOR_TEST_ON_PC == true, 则include cmakepc.cmake +if(BUILD_FOR_TEST_ON_PC) + # + # 编译PC版本的相关测试代码,具体使用参考README.md + # + include(CMakeListsPC.cmake) + return() +else() + # + # 编译嵌入式版本的相关代码,具体使用参考README.md + # + include(CMakeListsAARCH64.cmake) + return() +endif() -zadd_executable_simple(TARGET alsaplayer_main.out SRC - dep/zlinuxcomponents/alsaplayer/test_alsaplayer_main.cpp) -zadd_executable_simple(TARGET audio_recorder_main.out SRC - dep/zlinuxcomponents/audio/audio_recorder_main.cpp) -zadd_executable_simple(TARGET test_asr_main.out SRC - dep/zlinuxcomponents/aiui_ws/aiui_main.c) -zadd_executable_simple( - TARGET test_smart_soundbox_player.out SRC - dep/zlinuxcomponents/alsaplayer/test_smart_soundbox_player.cpp) - -zadd_executable_simple( - TARGET test_H8922S_gps_info_reader.out SRC - src/test/test_H8922S_gps_info_reader.cpp - src/service/H8922S_gps_Info_reader.cpp) diff --git a/CMakeListsAARCH64.cmake b/CMakeListsAARCH64.cmake new file mode 100644 index 0000000..2a4ee2f --- /dev/null +++ b/CMakeListsAARCH64.cmake @@ -0,0 +1,35 @@ + + +# 添加编译的目标文件 +zadd_executable_simple( + TARGET + app.out + SRC + src/main.cpp + src/service/device_io_service.cpp + src/service/device_io_service_mock.cpp + src/service/main_control_service.cpp + src/service/light_control_service.cpp + src/service/report_service.cpp + src/service/voiceprocess/beforeasr_voiceprocesser.cpp + src/service/voiceprocess/beforewakeup_voiceprocesser.cpp + src/service/voiceprocess/wakeup_processer.cpp + src/service/voiceprocess/audio_recoder_service.cpp + src/service/voiceprocess/audio_logging_service.cpp + # aiui +) + +zadd_executable_simple(TARGET alsaplayer_main.out SRC + dep/zlinuxcomponents/alsaplayer/test_alsaplayer_main.cpp) +zadd_executable_simple(TARGET audio_recorder_main.out SRC + dep/zlinuxcomponents/audio/audio_recorder_main.cpp) +zadd_executable_simple(TARGET test_asr_main.out SRC + dep/zlinuxcomponents/aiui_ws/aiui_main.c) +zadd_executable_simple( + TARGET test_smart_soundbox_player.out SRC + dep/zlinuxcomponents/alsaplayer/test_smart_soundbox_player.cpp) + +zadd_executable_simple( + TARGET test_H8922S_gps_info_reader.out SRC + src/test/test_H8922S_gps_info_reader.cpp + src/service/H8922S_gps_Info_reader.cpp) diff --git a/CMakeListsPC.cmake b/CMakeListsPC.cmake new file mode 100644 index 0000000..cb9af73 --- /dev/null +++ b/CMakeListsPC.cmake @@ -0,0 +1,7 @@ +zadd_executable_simple(TARGET test_aiui_service.out SRC + dep/zlinuxcomponents/aiui_ws/test_aiui_service.cpp) + +zadd_executable_simple( + TARGET test_H8922S_gps_info_reader.out SRC + src/test/test_H8922S_gps_info_reader.cpp + src/service/H8922S_gps_Info_reader.cpp) diff --git a/TODO.md b/TODO.md index 0a08127..045dcf5 100644 --- a/TODO.md +++ b/TODO.md @@ -7,19 +7,20 @@ 6. 完善aiui_service库 OK 7. 将aiui的配置,设备ID的配置,唤醒词的配置,是否记录语音的配置导出,通过config.hpp进行配置 OK + 8. 使用最新的黑板进行测试 -5. 烧录stm32程序,测试主机和stm32之间的通信 -9. 重构工程的Cmake文件,和iflytool.sh文件 -10. 将AIUI的配置写活,在飞书中添加相关第三方服务使用说明手册和注意事项 -12. 创建一个aiui的项目,专门用于工程中的测试代码使用,并修改其配置,添加注释,写好使用时应该参考的文档。 +9. 烧录stm32程序,测试主机和stm32之间的通信 +10. 重构工程的Cmake文件,和iflytool.sh文件 +11. 将AIUI的配置写活,在飞书中添加相关第三方服务使用说明手册和注意事项 OK +12. 创建一个aiui的项目,专门用于工程中的测试代码使用,并修改其配置,添加注释,写好使用时应该参考的文档。 OK -6. 编写内核编译说明,和具体项目的内核编译说明 -1. 打包最终包操作系统,为其增加自动保存网卡的功能,去掉内核中的这个功能。 -2. 编写导出文件系统方案和注意事项。 -3. 实现一份通用的文件系统,而非灯杆项目专用文件系统。 -12. 设备开机时,自动打开 -13. 对当前这个版本的内核写应用使用说明 -14. 设备ID -15. 尝试加入降噪,AGC功能。 +13. 编写内核编译说明,和具体项目的内核编译说明 +14. 打包最终包操作系统,为其增加自动保存网卡的功能,去掉内核中的这个功能。 +15. 编写导出文件系统方案和注意事项。 +16. 实现一份通用的文件系统,而非灯杆项目专用文件系统。 +17. 设备开机时,自动打开 +18. 对当前这个版本的内核写应用使用说明 +19. 设备ID +20. 尝试加入降噪,AGC功能。 ------------------------------------------------------------------- \ No newline at end of file diff --git a/buildtools b/buildtools index 2c5fa9e..45b06ce 160000 --- a/buildtools +++ b/buildtools @@ -1 +1 @@ -Subproject commit 2c5fa9ee781af8c21d16ecaf50bfbab8ba0e137b +Subproject commit 45b06ce5325ab6528de930d9b579ae447e12c26f diff --git a/cmakepc.cmake b/cmakepc.cmake deleted file mode 100644 index 20391a9..0000000 --- a/cmakepc.cmake +++ /dev/null @@ -1,64 +0,0 @@ -# 设置通用编译选项 -set(C_CPP_FLAGS "${C_CPP_FLAGS} ") -set(C_CPP_FLAGS - "${C_CPP_FLAGS} -Wno-unused-local-typedefs -Wno-unused-but-set-variable -Wno-deprecated-declarations -Wno-unused-variable" -) -set(C_CPP_FLAGS - "${C_CPP_FLAGS} -Wno-unused-local-typedefs -Wno-unused-but-set-variable -Wno-deprecated-declarations -Wno-unused-variable" -) -set(C_CPP_FLAGS - "${C_CPP_FLAGS} -Werror=return-type -Werror=parentheses -Wfatal-errors -Wno-comment" -) -set(C_CPP_FLAGS "${C_CPP_FLAGS} -Wno-format-overflow") -set(C_CPP_FLAGS "${C_CPP_FLAGS} -O0 -g3 -fPIC -Wall") - -# 设置C编译选项 -set(CMAKE_C_FLAGS "${C_CPP_FLAGS}") -message("CMAKE_C_FLAGS : ${CMAKE_C_FLAGS}") - -# 设置CPP编译选项 -set(CMAKE_CXX_FLAGS "${C_CPP_FLAGS}") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-pessimizing-move -Wno-reorder") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") -message("CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") -message("PROJECT_NAME: ${PROJECT_NAME}") -message("PUBLIC_LINK_DIRECTORIES: ${PUBLIC_LINK_DIRECTORIES}") -message("PUBLIC_INCLUDE_DIRECTORIES: ${PUBLIC_INCLUDE_DIRECTORIES}") - -# 添加相应的依赖代码 -include(dep/iflytopcpp/module.cmake) -include(dep/asio1.12.2/module.cmake) -include(dep/websocketpp/module.cmake) -include(dep/zservice_container/module.cmake) -include(dep/zwebservice/module.cmake) -include(dep/zlinuxcomponents/alsaplayer/module.cmake) -include(dep/zlinuxcomponents/rootfs_auto_update/module.cmake) -include(dep/zlinuxcomponents/mycroft_precise/module.cmake) -include(dep/zlinuxcomponents/audio/module.cmake) -include(dep/zlinuxcomponents/aiui_ws/module.cmake) - -# 设置当前工程依赖的头文件路径和链接的库文件 -set(DEP_LINK_LIBRARIES - ${DEP_LINK_LIBRARIES} - # ffmpeg - avcodec - avdevice - avfilter - avformat - avutil - swresample - swscale - m - # sys - asound - pthread - # - # curlpp curl -) -zadd_executable_simple(TARGET test_aiui_service.out SRC - dep/zlinuxcomponents/aiui_ws/test_aiui_service.cpp) - -zadd_executable_simple( - TARGET test_H8922S_gps_info_reader.out SRC - src/test/test_H8922S_gps_info_reader.cpp - src/service/H8922S_gps_Info_reader.cpp) diff --git a/sh/envsetup.sh b/sh/envsetup.sh index 546a759..0368a4e 100755 --- a/sh/envsetup.sh +++ b/sh/envsetup.sh @@ -1,6 +1,5 @@ #!/bin/bash # 全局变量 -LIBSDIR=${PROJECT_PATH}/libs/ # Config CONFIG_SUPPORT_ALSA=true @@ -8,14 +7,6 @@ CONFIG_SUPPORT_FFMPEG=true # Code Begin cd ${PROJECT_PATH}/build - -# 下载cmake -wget -c "192.168.1.2:8021/sdk_firefly_rk3328_v2.5.1/buildtools/cmake-3.13.0-Linux-x86_64.tar.gz" -rm -rf cmake-3.13.0-Linux-x86_64 -tar -xvf cmake-3.13.0-Linux-x86_64.tar.gz -mv cmake-3.13.0-Linux-x86_64 cmake -CMAKE_BIN=${PROJECT_PATH}/build/cmake/bin/cmake - # 下载依赖库 # CONFIG_SUPPORT_ALSA @@ -25,8 +16,8 @@ if [ "$CONFIG_SUPPORT_ALSA" = true ]; then rm -rf ${LIBSDIR}/alsa rm -rf libasound2_dev1.1.3-5ubuntu0.6 - tar -xvf libasound2_dev1.1.3-5ubuntu0.6.tar.gz - tar -xvf libz.tar.gz + tar -xvf libasound2_dev1.1.3-5ubuntu0.6.tar.gz >/dev/null + tar -xvf libz.tar.gz >/dev/null mkdir -p ${LIBSDIR}/alsa/pkgconfig/ mkdir -p ${LIBSDIR}/alsa/include/sys/ @@ -48,25 +39,11 @@ fi if [ "$CONFIG_SUPPORT_FFMPEG" = true ]; then wget -c "192.168.1.2:8021/sdk_firefly_rk3328_v2.5.1/buildtools/ffmpeg-4.1.10-aarch64-20230301.tar.gz" rm -rf ${LIBSDIR}/ffmpeg - tar -xvf ffmpeg-4.1.10-aarch64-20230301.tar.gz + tar -xvf ffmpeg-4.1.10-aarch64-20230301.tar.gz >/dev/null mv ffmpeg-4.1.10-aarch64-20230301 ${LIBSDIR}/ffmpeg PUBLIC_LINK_DIRECTORIES="${PUBLIC_LINK_DIRECTORIES};${LIBSDIR}/ffmpeg/lib" PUBLIC_INCLUDE_DIRECTORIES="${PUBLIC_INCLUDE_DIRECTORIES};${LIBSDIR}/ffmpeg/include" fi -echo "PUBLIC_LINK_DIRECTORIES=${PUBLIC_LINK_DIRECTORIES}" -echo "PUBLIC_INCLUDE_DIRECTORIES=${PUBLIC_INCLUDE_DIRECTORIES}" - -# 构造build/build.sh -echo "${CMAKE_BIN} ../ \\" >${PROJECT_PATH}/build/build.sh -echo "-DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DPUBLIC_LINK_DIRECTORIES='${PUBLIC_LINK_DIRECTORIES}' \\" >>${PROJECT_PATH}/build/build.sh -echo "-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DPUBLIC_INCLUDE_DIRECTORIES='${PUBLIC_INCLUDE_DIRECTORIES}' \\" >>${PROJECT_PATH}/build/build.sh -chmod +x ${PROJECT_PATH}/build/build.sh - -# -# BUILDFORPC -# - -# 构造buildpc/build.sh -echo "${CMAKE_BIN} ../ -DBUILD_FOR_TEST_ON_PC=true \\" >${PROJECT_PATH}/buildpc/build.sh -chmod +x ${PROJECT_PATH}/buildpc/build.sh \ No newline at end of file +CROSS_TOOLCHAIN_C_COMPILER=aarch64-linux-gnu-gcc +CROSS_TOOLCHAIN_CXX_COMPILER=aarch64-linux-gnu-g++ diff --git a/sh/envsetuppc.sh b/sh/envsetuppc.sh index 59c440a..e69de29 100755 --- a/sh/envsetuppc.sh +++ b/sh/envsetuppc.sh @@ -1,11 +0,0 @@ -cd ${PROJECT_PATH}/buildpc - -wget -c "192.168.1.2:8021/sdk_firefly_rk3328_v2.5.1/buildtools/cmake-3.13.0-Linux-x86_64.tar.gz" -rm -rf cmake-3.13.0-Linux-x86_64 -tar -xvf cmake-3.13.0-Linux-x86_64.tar.gz -mv cmake-3.13.0-Linux-x86_64 cmake -CMAKE_BIN=${PROJECT_PATH}/buildpc/cmake/bin/cmake - -# 构造buildpc/build.sh -echo "${CMAKE_BIN} ../ -DBUILD_FOR_TEST_ON_PC=true " >${PROJECT_PATH}/buildpc/build.sh -chmod +x ${PROJECT_PATH}/buildpc/build.sh diff --git a/sh/packet.sh b/sh/packet.sh index 1ae8bf2..7ed7c4c 100755 --- a/sh/packet.sh +++ b/sh/packet.sh @@ -1,75 +1,13 @@ #!/bin/bash - # # wget_and_unzip 解压后的文件名 url # -function wget_and_unzip() { - # 下载压缩包,解压,并删除压缩包 - # cd $PACKET_DIR/ - mkdir -p $PROJECT_PATH/.cache - cd $PROJECT_PATH/.cache - # ftp://zftpuser:zftpzwsd@192.168.1.2/zwsd/manufacturer_mycroft/hotworld/xiaomaoxiaomao/xiaomaoxiaomao_module_20220519.tar.gz - wget -c $2 - tar -xvf $(basename $2) - mv $PROJECT_PATH/.cache/$1 $PACKET_DIR/ -} - -function wget_and_cpy() { - # 下载压缩包,解压,并删除压缩包 - # cd $PACKET_DIR/ - mkdir -p $PROJECT_PATH/.cache - cd $PROJECT_PATH/.cache - wget -c $1 - cp $PROJECT_PATH/.cache/$(basename $1) $PACKET_DIR/ -} - -set -e -set -x -export PROJECT_PATH=$(pwd) -source ${PROJECT_PATH}/build/buildenv - -#打包目录 -PACKET_DIR=$PROJECT_PATH/out/app - -# 删除打包目录,重新打包 -rm -rf ${PACKET_DIR} -mkdir -p ${PACKET_DIR} -######################################################################################## -################################根据需要修改下面的内容即可################################## -######################################################################################## - -#1. 编译 -cd $PROJECT_PATH/build -# ./build.sh && make -j8 && make install - -#2.打包APP -cp $PROJECT_PATH/build/app/*.out $PACKET_DIR/ - -#3.3 打包webapp -cp -rf $PROJECT_PATH/webapp $PACKET_DIR/ - -#4 拷贝配置文件 -cd $PROJECT_PATH/env/ && cp --path -rf ./* $PACKET_DIR/ - #################################################################### ########################打包自定义的东西############################## #################################################################### # 下载唤醒词模型 -wget_and_unzip xiaomaoxiaomao ftp://zftpuser:zftpzwsd@192.168.1.2/zwsd/manufacturer_mycroft/hotworld/xiaomaoxiaomao/xiaomaoxiaomao_module_20220609.tar.gz +wget_and_unzip_to_packet_dir xiaomaoxiaomao ftp://zftpuser:zftpzwsd@192.168.1.2/zwsd/manufacturer_mycroft/hotworld/xiaomaoxiaomao/xiaomaoxiaomao_module_20220609.tar.gz # 下载唤醒词引擎 -wget_and_unzip precise 192.168.1.2:8021/manufacturer_mycroft/mycroft-precise-release/precise-all_0.3.0_aarch64.tar.gz +wget_and_unzip_to_packet_dir precise 192.168.1.2:8021/manufacturer_mycroft/mycroft-precise-release/precise-all_0.3.0_aarch64.tar.gz # 下载唤醒词语音 -wget_and_cpy 192.168.1.2:8021/manufacturer_mycroft/hotworld/xiaomaoxiaomao/test_xiaomaoxiaomao.wav - -#################################################################### -#################################################################### - -#5 打包 -cur_date="$(date +%Y%m%d)" - -cd $PACKET_DIR/../ -tar -czvf ${PACKET_DIR}_${cur_date}.tar.gz app -cp ${PACKET_DIR}_${cur_date}.tar.gz ${PACKET_DIR}.tar.gz -echo "Brief:" -echo "generate ${PACKET_DIR}_${cur_date}.tar.gz..................." -echo "generate ${PACKET_DIR}.tar.gz..................." +wget_and_cpy_to_packet_dir 192.168.1.2:8021/manufacturer_mycroft/hotworld/xiaomaoxiaomao/test_xiaomaoxiaomao.wav