106 lines
4.0 KiB
Markdown
106 lines
4.0 KiB
Markdown
# CH390 最终结论报告
|
||
|
||
## 结论
|
||
|
||
本轮循环调试的最终结论是:
|
||
|
||
1. 当前工程中的主要软件问题已经完成收敛和清理。
|
||
2. CH390D 驱动、lwIP `netif`、ARP 与 ICMP 基本链路已经在实机上打通。
|
||
3. 本轮最终根因已确认不是普通软件逻辑错误,而是 CH390D 相关供电滤波电容虚焊,导致供电不稳定。
|
||
|
||
## 已完成的软件侧工作
|
||
|
||
本轮已完成并验证的事项包括:
|
||
|
||
1. 修复 PHY 访问无超时导致的永久卡死风险。
|
||
2. 修复未初始化 IWDG 句柄刷新导致的 HardFault。
|
||
3. 清理 CH390 运行时中断屏蔽范围,消除阻塞式 SPI 访问造成的运行时假死。
|
||
4. 重构 CH390 运行时所有权,避免多层并发触达底层 SPI 路径。
|
||
5. 在 `main()` 中移除重复 CH390 复位,避免启动阶段额外复位噪声。
|
||
6. 清理已确认 warning 来源,避免无效变量继续污染构建结果。
|
||
7. 增加 CH390 identity gate,避免在无效寄存器读回前继续执行默认配置和 PHY 初始化。
|
||
8. 曾增加 bit-bang 诊断读用于快速隔离问题,该临时调试路径已在当前代码中移除。
|
||
|
||
## 实机关键证据
|
||
|
||
### 1. MCU 自身正常工作
|
||
|
||
已验证:
|
||
|
||
1. RTT 正常输出。
|
||
2. 主循环正常运行。
|
||
3. `TIM4` 心跳正常。
|
||
4. 运行期不再出现此前已修复的 HardFault 和“长时间假死”症状。
|
||
|
||
### 2. 最终硬件根因已定位
|
||
|
||
最终实板排查结果:
|
||
|
||
1. 板载一颗 CH390D 供电相关滤波电容存在虚焊。
|
||
2. 该问题导致 CH390D 供电不稳定,表现为寄存器读写、链路状态和报文收发在调试过程中不一致。
|
||
3. 修复硬件后,实机已观察到:
|
||
- `VID=0x1C00`、`PID=0x9151`、`REV=0x2B`
|
||
- PHY 寄存器稳定可读
|
||
- `lwIP netif` 能进入 `LINK_UP`
|
||
- 设备可接收 ARP request 并发出 ARP reply
|
||
- 设备可接收 ICMP Echo Request 并发出 Echo Reply
|
||
|
||
### 3. 历史 bit-bang 对照结果(已归档)
|
||
|
||
在早期调试中,曾绕过 STM32 硬件 SPI 外设、直接用 GPIO 软件时序读取 `VIDL/VIDH/PIDL/PIDH/CHIPR`,RTT 输出为:
|
||
|
||
```text
|
||
CH390 bitbang VIDL=0xFF VIDH=0xFF PIDL=0xFF PIDH=0xFF CHIPR=0xFF
|
||
```
|
||
|
||
该历史证据用于定位阶段,当前仅保留结论,不再保留对应代码路径。它说明:
|
||
|
||
1. 在硬件未修复前,单看软件现象会误导排查方向。
|
||
2. 电源完整性问题会放大为看似“SPI/IRQ/RX/TX 都可疑”的复合症状。
|
||
|
||
## 外部参考对结论的支撑
|
||
|
||
对公开 CH390 / DM9051 实现的对照结果表明:
|
||
|
||
1. CH390 SPI 访问时序、模式选择和 RX SRAM 连续事务仍然值得严格对照参考实现。
|
||
2. 但本项目最终问题并非“参考实现缺失”,而是硬件供电缺陷放大了调试噪声。
|
||
3. 外部参考对软件排查有帮助,但不能替代板级供电与焊接检查。
|
||
|
||
## 当前最可信判断
|
||
|
||
最终确认的板级问题为:
|
||
|
||
1. CH390D 供电滤波电容虚焊。
|
||
2. 该虚焊导致供电稳定性不足,从而引出不稳定的寄存器读写、链路与收发行为。
|
||
|
||
## 版本库状态
|
||
|
||
本轮已创建一个阶段性 checkpoint commit:
|
||
|
||
1. `1808f99` `fix: harden CH390 bring-up diagnostics`
|
||
|
||
该提交记录了:
|
||
|
||
1. warning 清理
|
||
2. 移除重复复位
|
||
3. CH390 早期 identity gate
|
||
4. 链路变化稳定等待
|
||
|
||
## 推荐的下一步
|
||
|
||
后续更高价值的工作不再是继续怀疑 CH390 是否“完全不通”,而是:
|
||
|
||
1. 在硬件问题修复后补充长时间稳定性测试。
|
||
2. 验证 TCP Server / TCP Client 业务流量与桥接逻辑在修复硬件后的行为。
|
||
3. 保持驱动层日志最小化,仅在重新排障时按需开启详细 RTT。
|
||
|
||
## 收尾说明
|
||
|
||
本轮循环的退出条件已经满足:软件主路径已验证,且硬件根因已定位。
|
||
|
||
因此当前最合理的结论是:
|
||
|
||
1. CH390D 驱动、lwIP `netif`、ARP 和 ICMP 基本链路已在实机打通。
|
||
2. 本轮真正拦路的不是普通软件逻辑,而是板级供电滤波电容虚焊。
|
||
3. 后续应在硬件修复后的稳定板卡上继续推进应用层联调与文档收口。
|