diff --git a/README.md b/README.md index cc90349..1635850 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,7 @@ # linux_smart_speaker_sdk ``` -目录说明 -dep/ 存放第二方,或者第三方需要编译的代码 -lib/ 编译好的依赖库,通过 -sh/ 工程编译打包部署等相关脚本 -env/ 应用程序运行环境 -build/ 应用程序编译目录 +# 此工程基于 https://iflytop1.feishu.cn/wiki/wikcnO8wSlckAFUfY6VvZHFsgIc 实现 ``` ## 编译RK3328 diff --git a/TODO.md b/TODO.md index 045dcf5..8162e92 100644 --- a/TODO.md +++ b/TODO.md @@ -7,13 +7,13 @@ 6. 完善aiui_service库 OK 7. 将aiui的配置,设备ID的配置,唤醒词的配置,是否记录语音的配置导出,通过config.hpp进行配置 OK - -8. 使用最新的黑板进行测试 -9. 烧录stm32程序,测试主机和stm32之间的通信 -10. 重构工程的Cmake文件,和iflytool.sh文件 +10. 重构工程的Cmake文件,和iflytool.sh文件 OK 11. 将AIUI的配置写活,在飞书中添加相关第三方服务使用说明手册和注意事项 OK 12. 创建一个aiui的项目,专门用于工程中的测试代码使用,并修改其配置,添加注释,写好使用时应该参考的文档。 OK + +8. 使用最新的黑板进行测试 +9. 烧录stm32程序,测试主机和stm32之间的通信 13. 编写内核编译说明,和具体项目的内核编译说明 14. 打包最终包操作系统,为其增加自动保存网卡的功能,去掉内核中的这个功能。 15. 编写导出文件系统方案和注意事项。 diff --git a/sh/boardinit.sh b/sh/boardinit.sh new file mode 100755 index 0000000..9b4d1af --- /dev/null +++ b/sh/boardinit.sh @@ -0,0 +1,110 @@ +#!/bin/bash + +function fixmac() { + #!/bin/bash + if [ $# -ne 1 ]; then + echo "Usage: $0 netcardname" + exit 1 + fi + + netcardname=$1 + + linkfilename=/etc/systemd/network/20-fixedmac-${netcardname}.link + + mac=$(ifconfig ${netcardname} | grep ether | awk '{print $2}') + + echo "[Match]" >${linkfilename} + echo "OriginalName=${netcardname}" >>${linkfilename} + echo "" >>${linkfilename} + echo "[Link]" >>${linkfilename} + echo "MACAddress=${mac}" >>${linkfilename} + + echo "++++++++++ create ${linkfilename} ++++++++++" + cat ${linkfilename} + echo "" +} + +function generate_device_info() { + # + # /etc/device_info.env + # DEVICE_ID=IFLYTOP_UNINITIALIZED + # FRP_SERVER_ADDR=127.0.0.1 + # + + # 判断DEVICE_ID和FRP_SERVER_ADDR是否为空 + if [ -z "$DEVICE_ID" ]; then + echo "DEVICE_ID is empty" + exit 1 + fi + + if [ -z "$FTP_SERVER_ADDR" ]; then + echo "FTP_SERVER_ADDR is empty" + exit 1 + fi + + echo "DEVICE_ID=${DEVICE_ID}" >/etc/device_info.env + echo "FRP_SERVER_ADDR=${FTP_SERVER_ADDR}" >>/etc/device_info.env + + echo "+++++++++ create /etc/device_info.env +++++++++" + cat /etc/device_info.env + echo "" + +} + +set -e +DEVICE_ID="" +FTP_SERVER_ADDR="" +FIX_MAC="" +PARAMETERS=$@ +EXEC_IN_BOARD=false + +for i in "$@"; do + case $i in + --deviceId) + shift + DEVICE_ID=$1 + shift + ;; + --ftpserver) + shift + FTP_SERVER_ADDR=$1 + shift + ;; + --fixmac) + shift + FIX_MAC=$1 + shift + ;; + --exec_in_board) + shift + EXEC_IN_BOARD=$1 + shift + ;; + --ip) + shift + IP=$1 + shift + ;; + *) + # unknown option + ;; + esac +done + +## 如果EXEC_IN_BOARD为空,则将自身拷贝到目标设备再次执行 +if [ "$EXEC_IN_BOARD" != "true" ]; then + echo "scp ./sh/boardinit.sh root@$IP:/tmp" + scp ./sh/boardinit.sh root@$IP:/tmp + echo "ssh root@$IP \"/tmp/boardinit.sh $PARAMETERS --exec_in_board true\"" + echo "" + ssh root@$IP "/tmp/boardinit.sh $PARAMETERS --exec_in_board true" + exit 0 +fi + +## 固化网卡 + +if [ "$FIX_MAC" == "true" ]; then + fixmac eth0 +fi + +generate_device_info