docs(screenlink): 验证状态收敛为未闭环清单,销项四条
屏板链路设计.md §9 由「已验证 + 未闭环」两小节收敛为单一「未闭环」: - 删除 §9.1 已验证整表(九行历史台账),验证结论不再在文档中留档。 - 销项:剖析对照(画面静止 1 min、35 个 [PROF] 样本 uil min 10937 / med 10999 / max 11024 us,等于 osDelay(10 ms) + 切换 开销,屏板链路每拍开销填不满一拍)、屏板排针收发脚方向(屏板方已 确认以丝印为准)、目视项(7 键 + 状态灯逐位 + 主动拔插用户台架 确认)、uiTask 拥塞面(太难测,取消,有问题再说)。 - §3.1 接线口径改写:排针方向以丝印 RX/TX 为准,网表 PA2/PA3 与 实物排针不是一回事;实操验收口径仍是看主机 rx 计数涨不涨。 - §9 现只剩两条:按键通路(真机未验过,现网日志 keys=0)、 键 9/10 语义(产品侧未定)。 连带修正三处失效引用: - 产品需求设计文档 §5.16 的「屏板出图 = 端到端证据」改指屏板链路 设计.md §4(帧 B 结构所在节),原指向已删的 §9.1。 - 参考产品复刻明细 第三批状态:未闭环项例子(2 h 长稳、仪器项) 均已销项,改为直指 §9。 - 屏板链路设计.md 坑账本第 4 条 CH340 引用 §3.3 -> §3.2(§3 重编号 后 PC 顶替屏板已是 3.2)。 验证:check_doc_links --sections-strict 通过;pre-commit 48 钩子 全 Passed。
This commit is contained in:
@@ -840,7 +840,7 @@ CRC-16/MODBUS(多项式 `0xA001` 反转式、初值 `0xFFFF`、查表法),
|
||||
> ⚠ **帧长以代码为准:4208 B**(屏板 readme 与 `BMP_LEN` 写的"3208 字节"不作准):接收侧实参是
|
||||
> `Check_CRC(DR, UART_RX_LEN)`,`UART_RX_LEN = 4208` → CRC 取 `DR[4206]/DR[4207]`、覆盖 `DR[0..4205]`。
|
||||
> 有效载荷只有前 3208 B,其后 998 B 为凑齐 CRC 窗口的填充;**主机只发 3210 B 时屏板会在
|
||||
> `DR[4206]` 读到陈旧字节,CRC 必失败并静默丢弃**。**已台架与真屏板实测固化**(屏板出图 = 端到端证据,`docs/子系统设计/屏板链路设计.md` §9.1)。
|
||||
> `DR[4206]` 读到陈旧字节,CRC 必失败并静默丢弃**。**已台架与真屏板实测固化**(屏板出图 = 端到端证据,见 `docs/子系统设计/屏板链路设计.md` §4)。
|
||||
|
||||
> ⚠ **应答帧不是合法 Modbus RTU 响应**:没有地址、没有功能码、没有字节数域,是一段裸二进制块。
|
||||
> 因此**不能套用现成 Modbus 从站栈**,只能按上表手工组帧。
|
||||
|
||||
@@ -788,7 +788,7 @@ tTimer_NoUI 无压无流判据(CN_
|
||||
>
|
||||
> **第三批状态**:串口通道(第 10~14、16 条)主机侧已实现并经台架与真屏板验收,屏板实物已上台架;
|
||||
> 帧长**已固化 4208 B**(代码实参为准,屏板 readme 的 3208 B 不作数——真屏板出图为端到端证据)。
|
||||
> 未闭环项(2 h 长稳、仪器项等)见 `docs/子系统设计/屏板链路设计.md` §9.2;**网络通道(第 2~9 条)未开工**。
|
||||
> 未闭环项见 `docs/子系统设计/屏板链路设计.md` §9;**网络通道(第 2~9 条)未开工**。
|
||||
>
|
||||
> **一条物理前置(已完成 2026-10-29)+ 一条实现纪律**:
|
||||
> ① **台架串口线已挪位**——日志口迁到 RS-232 侧后,台架那根线改接 CN1 的 RS232#1 端子
|
||||
|
||||
+7
-24
@@ -68,9 +68,9 @@ flowchart TB
|
||||
| 板地 `CGND`(或任一 GND 脚) | 屏板 `GND` | **两板各自供电必须接第三根共地线**,浮地的形态同样是彻底收不到 |
|
||||
|
||||
- 丝印 `TX/RX` 是**屏板自己发出/接收的视角**,所以主机侧**交叉同名接**:主机 TX 接丝印 `RX`、主机 RX 接丝印 `TX`。
|
||||
- 屏板排针收发脚与屏板网表(PA2=发 / PA3=收)的对应关系未经屏板方确认(实测按网表接不通、对调才通)。
|
||||
**唯一实操验收口径 = 接完看主机 `rx` 计数涨不涨**(涨 = 方向对,与帧内容无关),不涨当场对调两根信号线;
|
||||
产品线束定版前向屏板方核实实际收发脚。**不要按屏板 readme 与"TX 对 TX"直连**——同边对接两端都静默且无任何报错可看。
|
||||
- 排针方向**以丝印为准**:屏板方已确认丝印 `RX` = 屏板收、丝印 `TX` = 屏板发(网表标注的 PA2=发 / PA3=收
|
||||
与实物排针不是一回事,照网表接两端都静默)。接完的实操验收口径仍是看主机 `rx` 计数涨不涨
|
||||
(涨 = 方向对,与帧内容无关),不涨就对调两根信号线。**不要按屏板 readme 与"TX 对 TX"直连**。
|
||||
- **别去 CN1 找 USART1 端子**:`ST_TX0` / `ST_RX0` 在网表里只连 `U5.A10` / `U5.B10` 与 MCU 101/102 脚;
|
||||
CN1 上的 `RS232_*` 是 UART5 / USART2 经收发器之后的电平。同一个 `U5` 上还挂着 USART3 的 `ST_TX2` / `ST_RX2`
|
||||
(`U5.C7` / `U5.C6`),别抓错针。3.3 V TTL 直连,不串电阻,没有方向控制脚可接。
|
||||
@@ -214,29 +214,12 @@ flowchart TB
|
||||
| `sb_link_get_stats(&st)` | 任意上下文 | 计数快照(rx/ok/crc/len/fmt/keys/tx/done/drop/fb/bad/us/off/dfok/dfold…) |
|
||||
| `sb_crc16` / `sb_frame_a_parse` / `sb_frame_b_build_image` / `sb_frame_b_verify` | 纯逻辑 | 协议层四件套,主机单测可回归 |
|
||||
|
||||
## 9. 验证状态
|
||||
|
||||
### 9.1 已验证
|
||||
|
||||
| 层级 | 证据(计数名 = 台架/真机日志 `[SBLINK]` 行字段) |
|
||||
|---|---|
|
||||
| 主机单测 | `test/host/sb_proto/` **59/59**(屏板实测向量、CRC 表与屏板查表逐字节交叉验证);`test/host/sb_link/` **164/164**(ORE 的 SR→DR 顺序在桩里真执行、非阻塞错误不得重挂、busy 期间帧缓冲逐字节冻结、帧 B 逐字段、周期→µs 换算、离线 9.999 s/10 s 边界与恢复、按键 FIFO 与溢出丢新;2026-10-30 延迟应答 +18:不立刻起发/凭据放行新帧/140 ms 截止保底旧帧/忙时不留扣件/陈旧凭据不放行/首帧未备同旧丢单);`test/host/sb_led_map/` **17/17** |
|
||||
| 台架(PC + USB 转 TTL 顶替屏板) | `rx == 发送帧数`、`ok == rx`、`crc=0 len=0 size=6`;错波特率灌 64 B 垃圾后**自动恢复**(`rearm=0`,一次都没真失败);杜邦线噪声形态 `bits=0x02`(NE)每帧 ~1.3 次但数据零错;激励停止 10 s 准点 OFFLINE |
|
||||
| 真屏板冒烟(2026-10-29) | 5 s ≈18 帧 → 278 ms/帧,与屏板 280 ms 节拍吻合;`tx==done`、一召一答无双发;**屏板出图(用户目视确认)**——屏板收帧只有"CRC 过 → 刷屏 / 不过 → 静默丢弃"两种结局且无报错通道,**出图 = 屏板亲手端到端验收了帧长 4208、CRC 覆盖 `[0,4205]`、低字节在前、1 bpp 20 B/行 MSB 在前的布局**,这是任何主机侧计数都给不出的一条证据 |
|
||||
| 真屏板 10 min 连续(2026-10-29) | `rx=4258 ok=4258 crc=0 len=0 fmt=0 err=0 bits=0x00 rearm=0`(**连错误中断都没进过**);`tx=4249 done=4248`(`drop=9` 全在开机头两秒帧未就绪期,窗口内零新增);`keys=53 kq=0`(逐键必到、零丢弃);`fb=902 bad=0`(每帧自校验通过);组帧峰值 `us=687 max=812` < 1 ms 预算 |
|
||||
| 双通道并发(2026-10-30,真屏板在线) | 7003 侧 `test/host/remolcd_pull_test.py` INIT→LCDMEM 10 Hz 重压两轮 **1500/1500 + 700/700**、CRC 错 0、超时 0,往返 min 35 / avg 63 / max 131 ms;屏板侧 60 s 隔离窗口 rx +233 全收、**每召必答**、`drop` 零新增、`off=0`;画面一致性由"两出口同一份活显存"机制保证 |
|
||||
| 长稳(串口日志实测,2026-11-13 18:31 → 2026-11-15 21:43) | 单次上电连续运行 **51.2 h**:`rx=658262 ok=658262`、`crc=0 len=0 fmt=0 err=0 bits=0x00 rearm=0`、`drop=7`(仅启动期)、`kerr=0 abor=0 bad=0`,**全程 `off=0` 零误判离线**;跨屏板自复位(≈5000 s 周期)自动续上 |
|
||||
| 离线与恢复 | 断接期间 `off=1`,恢复后 `off=0`——`offline` 标志**只有**恢复分支会清,1→0 的转变即恢复路径执行过的证明(全程未重启主机) |
|
||||
|
||||
### 9.2 未闭环
|
||||
## 9. 未闭环
|
||||
|
||||
| 项 | 内容 |
|
||||
|---|---|
|
||||
| uiTask 拥塞面 | 制造 7003/netTask 拥塞(客户端不读、对时 relisten 突发),屏板侧应零超时、画面停最后一帧——"起发不在任务态"的直接证据 |
|
||||
| 按键通路 | 延迟应答(扣件 / 凭据放行 / 140 ms 截止保底)与按键注键环(`ui_port` 8 深,满挤最旧)**尚未在有按键流量的真机上验过**——51.2 h 长稳日志 `keys=0 kq=0 dfok=0 dfold=0`,即整段运行零按键,该路径只有主机单测 `TC-SBLINK-030~033` 覆盖。验证法:接屏板按键连按,看 `keys`/`dfok` 涨、`dfold` 保持 0 |
|
||||
| 目视项 | 7 个物理键逐个按、动作对照 `docs/产品需求/产品需求设计文档.md` §8.2 菜单树 + 键 9 出 `unmapped` 日志;状态灯逐位(bit1 肉眼即见;bit3 挂 104 主站看亮灭;bit4 拔采样前端;bit2/bit5 见 §6 闭锁提示);主动拔插回归(含 7003 并发面) |
|
||||
| 剖析对照 | 画面静止 1 min,开屏板链路前后对比 `[PROF] uiw`(memcmp ~20 µs 成本判据) |
|
||||
| 待确认 | 屏板排针实际收发脚方向(向屏板方,线束定版前);键 9/10 语义(产品侧) |
|
||||
| 按键通路 | 延迟应答(扣件 / 凭据放行 / 140 ms 截止保底)与按键注键环(`ui_port` 8 深,满挤最旧)尚未在有按键流量的真机上验过——现网日志 `keys=0 kq=0 dfok=0 dfold=0`,该路径只有主机单测 `TC-SBLINK-030~033` 覆盖。验证法:接屏板按键连按,看 `keys`/`dfok` 涨、`dfold` 保持 0 |
|
||||
| 键 9/10 语义 | 产品侧未定 |
|
||||
|
||||
## 10. 坑账本
|
||||
|
||||
@@ -245,7 +228,7 @@ flowchart TB
|
||||
2. **`ReceiveToIdle_IT` 是一次性的**:漏重挂 = 链路永久静默,且没有任何报错;ORE 不自己清,一次噪声打死接收。
|
||||
3. **NE/FE 非阻塞、ORE 阻塞**:重挂判据用 `RxState == READY` 而不是错误位;台架"NE 每帧出现 + `rx_ok` 照涨"
|
||||
= 能用的告警,**不是**故障(无屏蔽杜邦线常态);真故障形态是 ORE(`bits=0x08`),本链路 6 B/280 ms 不该出现。
|
||||
4. **CH340 收不了 700 kbaud 全帧**(§3.3)——收不全 ≠ 固件没发,`tx == done` 自证,别据此改固件。
|
||||
4. **CH340 收不了 700 kbaud 全帧**(§3.2)——收不全 ≠ 固件没发,`tx == done` 自证,别据此改固件。
|
||||
5. **`.ioc` 不保存 UART 波特率**:改波特率只能在 `USER CODE` 区覆盖 `Init` 后重调 `HAL_UART_Init`(§2)。
|
||||
6. **全局 UART 回调是工程单例**:新通道只在 `rs485.c` 加转发行、不自写一份(§2)——"中断进来了但没人处理"
|
||||
的表象是"屏板一直超时",极易误判成协议错。
|
||||
|
||||
Reference in New Issue
Block a user