Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01QYuExfgyYa6DzRRcUso8M8
2.9 KiB
2.9 KiB
交接
更新: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 flashmain/phonerail.h、main/version.c— 版本号与通道数,两个目标共享main/app_main.c— ESP 专用入口(宿主机构建不含此文件)main/CMakeLists.txt— IDF main 组件host/CMakeLists.txt— 宿主机根工程:phonerail_core+unity+test/test_*.c自动成 ctesthost/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进去。