原理图/PCB 已在 EasyEDA 里做到 12 页跨页 0 漏接,固件刚完成骨架包 A1。 这次是把已有的一切一次性纳入版本控制,没有改动任何设计内容。 纳入: - 设计与需求文档、PROGRESS.md、小米8 参考原理图 PDF 与追脚脚本 - .claude/ 下的 EasyEDA 桥接工具链与几何/网表缓存(eda-parts.json、 pcb-parts.json、pcb-pads.json、p2-ch1.json 等,是重画各页的唯一事实来源) - 117 张验证截图(本项目所有方向问题都是靠人眼看截图发现的,属于证据不是垃圾) - firmware/ 的 A1 骨架与 site/ 文档站源码 .gitignore 排除:构建产物(firmware/build、host/build、sdkconfig)、 site/node_modules、__pycache__、桥接日志 _bridge.log、脚本自标的 *.stale。 .gitattributes 默认 `* -text`:现有 .py/.json 大多是 CRLF,原样存, 不让 git 重写行尾。唯一例外是 *.sh 强制 LF —— 带 \r 的 shell 脚本 bash 跑不了。 Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01QYuExfgyYa6DzRRcUso8M8
2.8 KiB
2.8 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,本工程就钉这个。 firmware/目前不在 git 仓库里(D:\DCDC不是 git repo)。 按计划 §3.2「历史留在 git log 里」,这块还欠一次git init。