Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01QYuExfgyYa6DzRRcUso8M8
51 行
2.9 KiB
Markdown
51 行
2.9 KiB
Markdown
# 交接
|
||
更新:2026-09-06 完成任务包 **A1**(工程骨架)
|
||
|
||
## 一句话现状
|
||
`firmware/` 骨架立起来了:同一份 `main/` 源码在**宿主机(cygwin gcc + CTest + Unity)**
|
||
和 **ESP-IDF v5.4 / esp32s3** 两个目标下都编得过,两条验收命令都是绿的。
|
||
|
||
## 下一步
|
||
**A2**:HAL 接口(i2c / gpio / pwm / time)+ `sim` 实现。
|
||
新增的 `.c` 要**同时**登记到 `main/CMakeLists.txt` 的 `SRCS` 和
|
||
`host/CMakeLists.txt` 的 `PHONERAIL_CORE_SRCS`(两处,漏一处就是「宿主机绿了但上板编不过」)。
|
||
|
||
## 本次新增/修改的文件
|
||
- `CMakeLists.txt`、`sdkconfig.defaults` — IDF 工程根,目标 esp32s3 / 8 MB flash
|
||
- `main/phonerail.h`、`main/version.c` — 版本号与通道数,两个目标共享
|
||
- `main/app_main.c` — ESP 专用入口(宿主机构建**不含**此文件)
|
||
- `main/CMakeLists.txt` — IDF main 组件
|
||
- `host/CMakeLists.txt` — 宿主机根工程:`phonerail_core` + `unity` + `test/test_*.c` 自动成 ctest
|
||
- `host/test.sh` — 宿主机验收一条命令
|
||
- `build_idf.ps1` — 目标验收一条命令(钉死 v5.4、关 ccache)
|
||
- `test/test_version.c` — A1 的假测试(A2 起有真逻辑后可删)
|
||
- `third_party/unity/` — 从 IDF v5.4 原样复制的 Unity(上板测试同一套框架)
|
||
- `../固件开发计划.md` §10 — 钉死了 IDF 版本与测试框架两个待定项
|
||
|
||
## 验收命令与结果
|
||
```
|
||
$ bash host/test.sh
|
||
100% tests passed, 0 tests failed out of 1
|
||
|
||
$ .\build_idf.ps1 # PowerShell
|
||
phonerail.bin binary size 0x32520 bytes. ... 0xcdae0 bytes (80%) free.
|
||
Project build complete.
|
||
```
|
||
|
||
## 踩到的坑(只写会再犯的)
|
||
- **宿主机必须用 cygwin 那套 cmake/ctest/gcc**(`/c/cygwin64/bin/`)。
|
||
Windows 版 CMake(`C:\Program Files\CMake`)配 cygwin gcc 会认错平台。
|
||
- **cygwin cmake 只认 `/cygdrive/...`**:喂它 `D:/...` 会报
|
||
`Found relative path while evaluating include directories`。
|
||
所以 `host/test.sh` 先 `cd` 再全用相对路径,不传绝对路径。
|
||
同理 `-DCMAKE_C_COMPILER=/c/...` 会被 Git Bash 的路径转换搞坏,改用 `export CC=gcc`。
|
||
- **`IDF_CCACHE_ENABLE=0`**:开着 ccache 时 IDF 自带的 `esp_lcd_panel_rgb.c`
|
||
编出过一次编译器 segfault(ICE),关掉就过。已写进 `build_idf.ps1`。
|
||
- **PowerShell 5.1 + `$ErrorActionPreference="Stop"` 会把 `export.ps1` 的正常 stderr
|
||
当成终止错误**("Activating ESP-IDF 5.4" 就报红)。`build_idf.ps1` 已去掉它,改用 `exit $LASTEXITCODE`。
|
||
- 机器上有四个 IDF(v5.3.1 / **v5.4** / v5.5 / v5.5.1 / v6.0-rc1)。
|
||
PATH 上的是 `D:\Users\35138\esp\v5.4`,本工程就钉这个。
|
||
- **git 仓库已建**(`D:\DCDC`,分支 `main`,初始提交 `7a85df9`)。
|
||
`.gitattributes` 默认 `* -text`(不重写行尾),只有 `*.sh` 强制 LF。
|
||
`build/`、`host/build/`、`sdkconfig` 已被忽略,别硬 `git add -f` 进去。
|