4.3 KiB
4.3 KiB
Day 8 工作记录(2025-12-03)
今日进展
1. 工具链配置验证与修正 ✅
- 问题发现:README.md 提到的
riscv32-linux-musl工具链路径在服务器上不存在 - 调查过程:
- 通过
tina_files_clean.csv文件索引查找工具链位置 - 在服务器上验证实际目录结构
- 发现 musl 工具链仍为压缩包形式(未解压)
- 确认实际可用的是 glibc 工具链
- 通过
- 最终配置:
TOOLCHAIN_DIR := $(SDK_ROOT)/out/toolchain/nds32le-linux-glibc-v5d/bin CROSS_COMPILE := riscv32-unknown-linux- - 编译器验证:
riscv32-unknown-linux-g++(符号链接指向riscv32-linux-g++)
2. 构建脚本修复 ✅
build_main.sh 路径问题
- 问题:脚本在
source build/envsetup.sh后,当前目录变成 SDK 目录,导致找不到项目 src 目录 - 解决:在进入 SDK 目录前先保存项目路径
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SDK_ROOT" source build/envsetup.sh # ... 后续使用 $PROJECT_DIR
3. Makefile 链接库补充 ✅
链接错误
undefined reference to `CDC_LOG_LEVEL_NAME'
undefined reference to `CDC_GLOBAL_LOG_LEVEL'
解决方案
在主程序 Makefile 中添加完整的 Cedar 多媒体库链接:
- 音频处理库(decoder, resample, AGC, AEC, ANS)
- Muxer/Demuxer(MP4, AAC, MP3, WAV, TS)
- 视频解码器(MJPEG)
- 配置解析库(PluginMpp, IniParserMpp)
- Cedar 核心库(
libcdc_base.a,libcdx_base.a)- 包含缺失的符号 - 显示库(hwdisplay, cedarxrender)
- 系统动态库(glog, log, rt, dl, z)
4. 编译成功 🎉
编译产物
build/bin/avaota_client: ELF 32-bit LSB executable, UCB RISC-V
文件大小: 3.9MB
状态: stripped(已优化)
集成模块
- ✅ 音频采集(麦克风 - ALSA)
- ✅ 音频播放(扬声器 - MAX98357A)
- ✅ IMU 传感器(ICM-42688-P - SPI)
- ✅ 摄像头(GC2083 - MPP/JPEG)
- ✅ WebSocket 客户端
- ✅ UDP 发送器
- ✅ HTTP 客户端
- ✅ 日志系统
5. 文档更新 ✅
- 更新 Day7.md(工具链配置说明)
- 更新 README.md(工具链实际情况)
- 更新 task_complete.md(添加 Day7 任务,进度 95%)
- 更新 implementation_plan_complete.md(v1.5,进度 95%)
- 创建 project_backup_list.md(备份清单)
技术要点
工具链配置
# 实际路径
out/toolchain/nds32le-linux-glibc-v5d/bin/
# 编译器
riscv32-unknown-linux-gcc
riscv32-unknown-linux-g++ -> riscv32-linux-g++ (符号链接)
# C库
glibc (不是 musl)
# GCC版本
10.4.0
关键库依赖
主程序链接了 60+ 个静态库,包括:
- MPP 框架(aw_mpp, media_utils)
- ISP 图像处理(12个库)
- 视频编解码(vencoder, vdecoder)
- 音频处理(adecoder, aencoder, AGC, AEC)
- Cedar 核心(cdc_base, cdx_base)
- 文件格式(muxers, demuxer, parser)
遇到的问题与解决
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 工具链路径不存在 | README 描述的是未来目标 | 通过 CSV 索引找到实际路径 |
| build_main.sh 找不到 src | source SDK 后目录改变 | 预先保存项目路径 |
| CDC_LOG_LEVEL_NAME 未定义 | 缺少 libcdc_base.a | 添加完整 Cedar 库列表 |
编译命令记录
# 清理
cd ~/ProgramFiles/AvaotaF1/avaota_app_demo/src
make clean
# 编译
cd ..
./build_main.sh
# 结果
build/bin/avaota_client (3.9MB)
下一步计划
- ⏳ 部署到 Avaota F1 板子
- 通过网络或 SD 卡传输
- 运行 avaota_client
- ⏳ 板端功能测试
- 音频采集与播放
- IMU 数据读取
- 摄像头 JPEG 捕获
- 网络通信(WebSocket, UDP)
- ⏳ 性能与稳定性测试
- ⏳ 多线程协同验证
成果总结
Day 1-7 完成了所有硬件模块的独立开发和测试
Day 8 完成了整体交叉编译,将所有模块集成到一个可执行文件中
项目进度:95% → 98%(只差板端运行测试)
备注:历时 8 天(实际工作 Day1-Day8),从 SDK 环境搭建到完整程序编译,所有代码汇聚成 3.9MB 的 avaota_client 可执行文件。这是一个重要的里程碑!🎉