Files
Docs/DevLogs/Day08.md
2026-01-05 18:06:08 +08:00

148 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Day 8 工作记录2025-12-03
## 今日进展
### 1. 工具链配置验证与修正 ✅
- **问题发现**README.md 提到的 `riscv32-linux-musl` 工具链路径在服务器上不存在
- **调查过程**
- 通过 `tina_files_clean.csv` 文件索引查找工具链位置
- 在服务器上验证实际目录结构
- 发现 musl 工具链仍为压缩包形式(未解压)
- 确认实际可用的是 glibc 工具链
- **最终配置**
```makefile
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 目录前先保存项目路径
```bash
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/DemuxerMP4, 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.mdv1.5,进度 95%
- 创建 project_backup_list.md备份清单
## 技术要点
### 工具链配置
```bash
# 实际路径
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 库列表 |
## 编译命令记录
```bash
# 清理
cd ~/ProgramFiles/AvaotaF1/avaota_app_demo/src
make clean
# 编译
cd ..
./build_main.sh
# 结果
build/bin/avaota_client (3.9MB)
```
## 下一步计划
1. ⏳ 部署到 Avaota F1 板子
- 通过网络或 SD 卡传输
- 运行 avaota_client
2. ⏳ 板端功能测试
- 音频采集与播放
- IMU 数据读取
- 摄像头 JPEG 捕获
- 网络通信WebSocket, UDP
3. ⏳ 性能与稳定性测试
4. ⏳ 多线程协同验证
## 成果总结
**Day 1-7** 完成了所有硬件模块的独立开发和测试
**Day 8** 完成了整体交叉编译,将所有模块集成到一个可执行文件中
**项目进度**95% → 98%(只差板端运行测试)
---
**备注**:历时 8 天(实际工作 Day1-Day8从 SDK 环境搭建到完整程序编译,所有代码汇聚成 3.9MB 的 `avaota_client` 可执行文件。这是一个重要的里程碑!🎉