docs+log: 撤销"PA10 未接线"结论,ORE 机理改为"RX 使能却不读 DR"
用户反馈:PA10 这个端口是接线的,当年那个分析应该是错的。 核查确认:console_log.c(文件头与 con_uart_reinit() 注释)和 控制台单写者日志设计说明.md 12 节里的"PA10 悬空 / 未接线"是 2026-10-02 的 归因推断,不是实测,且与用户确认的接线状态相反。 ORE 的充分条件本来就不依赖引脚悬空:RX 使能了却从不读 DR, 线上任意一个字节或一个噪声沿使 RXNE 置位后无人读,下一个事件即锁存 ORE (常伴 NE/FE/PE);而 ORE 只能靠"先读 SR 再读 DR"清除,所以永不自愈。 引脚悬空只影响发生率,不是必要条件。 当年那场风暴的真因仍待定:接线正常时更常见的是对端波特率不匹配 (适配器不是 115200)或适配器 TX 在 USB 掉线时浮空。下次复现先量 适配器 TX 的空闲电平与波特率,不要再默认"引脚悬空"。 改动: - console_log.c:函数注释改按正确机理表述;修改记录加 2026-10-28 一条 说明归因更正。纯注释,Code 236456 B 与上版一致,@build 0/0。 - 控制台单写者日志设计说明.md 12 节:机理段后加更正块,写明观察与缓解 措施仍成立、只有归因需要改写。 - 产品需求文档:4.2 表 USART1 行改为"PA10 双向均已接线";5.16.2 的 "PA10 没接线"警示块整段重写为"旧结论已撤销 + 真正机理 + 两条硬要求" (屏板链路必须消费 DR 并在错误回调清 ORE;新日志口仍设 UART_MODE_TX); 9.13 前置阻塞由"两条物理前置"改为"一条物理前置 + 一条实现纪律"; 12 节加 v1.9。 - 屏板链路规划:0 章第 2 行标为已撤销、执行顺序去掉"接 PA10"; 批 0 由 4 项减为 3 项;批 1 第 3 项判据补"拔插 TX 线制造噪声后能自动 恢复";风险表把"PA10 没接"换成"一次噪声后链路永久静默"。 - 任务规划 README 独立轨道行同步为两条前置。 体积凭证随索引刷新(scripts/size_attestation.json),数字未变。
This commit is contained in:
+15
-4
@@ -62,6 +62,13 @@
|
||||
* 三本账分开(docs §13-O2):新增 dbg_console_tx_timeout(),dropped 只记
|
||||
* 真丢的,tx_fault 仍只记软复位自愈次数;[ERR] dropped 行改为"发成功才
|
||||
* 销账",通道不可用期间不再把丢弃证据一起冲掉。
|
||||
* 2026-10-28 王建锋 **根因归因更正(纯注释,无行为变更)**:原注释把 ORE 锁存
|
||||
* 写成"PA10 悬空 / 未接线",用户确认 PA10 **一直是接线的**,该归因不成立。
|
||||
* 真正的充分条件是"**RX 使能了却从不读 DR**"——线上任意一个字节或一个
|
||||
* 噪声沿使 RXNE 置位后无人读,下一个事件即锁存 ORE(ORE 只能靠"先读 SR
|
||||
* 再读 DR"清除 ⇒ 永不自愈);引脚悬空只影响发生率,不是必要条件。
|
||||
* 缓解措施与结论不变,仅改注释;机制详见
|
||||
* docs/子系统设计/控制台单写者日志设计说明.md §12。
|
||||
*/
|
||||
|
||||
#include "console_log.h"
|
||||
@@ -467,10 +474,14 @@ uint8_t dbg_console_writer_ready(void) {
|
||||
|
||||
/*
|
||||
* 函数功能:USART1 僵尸通道自愈(清错误锁存 + 整外设重初始化)
|
||||
* 函数说明:RX 悬空噪声(PA10 未接线)锁存的 ORE/NE/FE/PE 使 HAL 轮询 TX 恒快速失败
|
||||
* (控制台静默、系统不复位);发送器卡死状态则使 TXE 等待耗满超时(冻结唯一
|
||||
* 写者 → 看门狗误复位,2026-10-02 台架实证)。外设软复位清锁存与卡死状态后
|
||||
* 重新初始化,故障时间被单块超时限定
|
||||
* 函数说明:**RX 使能了却从不读 DR** → 线上任意一个字节或一个噪声沿使 RXNE 置位后无人读,
|
||||
* 下一个事件即锁存 ORE(常伴 NE/FE/PE);ORE 只能靠"先读 SR 再读 DR"清除 ⇒ 永不自愈。
|
||||
* 锁存后 HAL 轮询 TX 恒快速失败(控制台静默、系统不复位);发送器卡死状态则使 TXE
|
||||
* 等待耗满超时(冻结唯一写者 → 看门狗误复位,2026-10-02 台架实证)。外设软复位清锁存与卡死状态后
|
||||
* 重新初始化,故障时间被单块超时限定。
|
||||
* ⚠ 2026-10-28 更正:原注释把根因写成"PA10 未接线 / 悬空",用户确认 PA10 一直是接线的;
|
||||
* 充分条件是"RX 使能却不消费 DR",与引脚是否悬空无关
|
||||
* (详见 docs/子系统设计/控制台单写者日志设计说明.md §12)。
|
||||
*/
|
||||
static void con_uart_reinit(void) {
|
||||
__NVIC_ClearPendingIRQ(USART1_IRQn);
|
||||
|
||||
Reference in New Issue
Block a user