045ca7f688
把 archify 出的交互架构图落回仓内可复现形态,避免 docs/ 里出现「没有生成器的 SVG」: - 新生成器 tools/arch_diagram/gen_arch_endtoend_svg.py → docs/images/架构总览_ 端到端链路.svg(42 框 / 37 边 / 5 条纵带,线型分数据·命令·屏障心跳三类); 数据全部内嵌在 .py 里(generated-fresh 只把单个 gen_*.py 拷进临时目录重跑, 外部 JSON 输入会 rc≠0 假红),SVG 内不含时间戳/commit/绝对路径 - docs/架构设计/项目架构总览.md 新增 §1.3 挂图并写清与 §1 分层图的分工 (那张答「谁在哪一层」,这张答「一条数据走到底穿过谁」;纵带只是列分组, 依赖方向仍以 §1.1 表与 layer-deps 门禁为准),版本 v1.2 → v1.3 - 两处生成器清单登记:tools/arch_diagram/README.md 脚本一览、 docs/架构设计/图形绘制流程.md 的选型表与产物对照表 - draw-diagram skill 新增 §三b(大图碰撞审计判据 + 两条几何纪律)+ reference/svg-collision-audit.py(拷进 ci-artifacts 用,刻意不进 tools/) 本窗实测(都已写进 skill):42 框 37 边的图缩略目检看着干净,解析式审计一眼 报出 23 条——边标签文字盒压到节点框会被后画的节点白底吃掉半个字(「串行执行」 渲染成「行执行」);根因是同行两框走了「同轴加一段走廊」的通用规则,产出退化 四点折线,把标签落点推到第一半中点。修法:同轴且已对齐直接返回两点线,标签 落点改按总弧长取 50%。 零余量第二遍(用生成器自己的 Box/route/label_at 真值扫,框不膨胀不内缩)又抓到 两处近失:「TRGO 触发」「帧 B 下发」与相邻框只剩 0.7px / 1.5px,缩成「TRGO」 「帧 B」后最紧余量升到 3.5px;同一遍还纠正了审计器自己的错——`hi > y0` 误写成 `hi > x0` 凭空报 3 条穿框,差点重排三条边的走线,所以判据里加了「先验审计器 本身再信 0 条」。 自查:连跑两次产物 sha1 不变;scripts/check_generated_fresh.py rc=0(25 生成器 / 21 一致 / 4 在只减不增基线内);碰撞审计 rc=0(0 条);生成器无 OVERFLOW; doc-links --sections-strict 逐篇 rc=0;mermaid-syntax / nested-comment / skill-size / bom-drift 无新发;改动文件字节体检干净;/keil-build 0 错 0 警。
285 lines
46 KiB
XML
285 lines
46 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" width="1192" height="1042" viewBox="0 0 1192 1042" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif">
|
||
<defs><marker id="ar-d" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0 0 L10 5 L0 10 z" fill="#334155"/></marker><marker id="ar-c" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0 0 L10 5 L0 10 z" fill="#64748b"/></marker><marker id="ar-e" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0 0 L10 5 L0 10 z" fill="#7c3aed"/></marker></defs>
|
||
<rect x="0" y="0" width="1192" height="1042" fill="#ffffff"/>
|
||
<text x="34.0" y="34.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="20" fill="#0f172a" text-anchor="start" font-weight="bold">STM32F407ZGTx 工业 DTU 平台 · 端到端链路总览</text>
|
||
<text x="34.0" y="55.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="12.5" fill="#475569" text-anchor="start" font-weight="normal">一个电气量从引脚到 104 报文 / 显存 / 记录文件穿过的框,与「谁在什么时候被谁唤醒」;分层归属与层内模块清单见 项目架构总览.svg,本图只画链路与握手</text>
|
||
<rect x="34.0" y="104.0" width="174.0" height="874.0" rx="10" fill="#f1f5f9" stroke="#475569" stroke-width="1.1" fill-opacity="0.50"/>
|
||
<text x="44.0" y="123.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="13.5" fill="#475569" text-anchor="start" font-weight="bold">片外硬件</text>
|
||
<text x="44.0" y="137.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="10.5" fill="#475569" text-anchor="start" font-weight="normal" fill-opacity="0.85">板级器件 · 不走软件分层</text>
|
||
<rect x="230.0" y="104.0" width="174.0" height="874.0" rx="10" fill="#fffbeb" stroke="#d97706" stroke-width="1.1" fill-opacity="0.50"/>
|
||
<text x="240.0" y="123.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="13.5" fill="#d97706" text-anchor="start" font-weight="bold">驱动层 Drivers/BSP</text>
|
||
<text x="240.0" y="137.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="10.5" fill="#d97706" text-anchor="start" font-weight="normal" fill-opacity="0.85">手写芯片驱动与总线</text>
|
||
<rect x="426.0" y="104.0" width="174.0" height="874.0" rx="10" fill="#f0fdf4" stroke="#16a34a" stroke-width="1.1" fill-opacity="0.50"/>
|
||
<text x="436.0" y="123.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="13.5" fill="#16a34a" text-anchor="start" font-weight="bold">中间件与算法</text>
|
||
<text x="436.0" y="137.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="10.5" fill="#16a34a" text-anchor="start" font-weight="normal" fill-opacity="0.85">取数 → 相量 → 快照</text>
|
||
<rect x="622.0" y="104.0" width="174.0" height="874.0" rx="10" fill="#f0fdfa" stroke="#0d9488" stroke-width="1.1" fill-opacity="0.50"/>
|
||
<text x="632.0" y="123.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="13.5" fill="#0d9488" text-anchor="start" font-weight="bold">任务编排与握手</text>
|
||
<text x="632.0" y="137.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="10.5" fill="#0d9488" text-anchor="start" font-weight="normal" fill-opacity="0.85">App/task · 就绪屏障</text>
|
||
<rect x="818.0" y="104.0" width="174.0" height="874.0" rx="10" fill="#fff1f2" stroke="#e11d48" stroke-width="1.1" fill-opacity="0.50"/>
|
||
<text x="828.0" y="123.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="13.5" fill="#e11d48" text-anchor="start" font-weight="bold">平台服务与数据落点</text>
|
||
<text x="828.0" y="137.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="10.5" fill="#e11d48" text-anchor="start" font-weight="normal" fill-opacity="0.85">记录 / 配置 / 网络门面</text>
|
||
<path d="M195.0 176.0 L243.0 176.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="200.5" y="168.8" width="37.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="219.0" y="179.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">8 路帧</text>
|
||
<path d="M243.0 268.0 L195.0 268.0" fill="none" stroke="#64748b" stroke-width="1.25" stroke-dasharray="5 3" marker-end="url(#ar-c)"/>
|
||
<rect x="204.5" y="260.8" width="29.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="219.0" y="271.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#64748b" text-anchor="middle">TRGO</text>
|
||
<path d="M391.0 176.0 L439.0 176.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="392.5" y="168.8" width="45.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="415.0" y="179.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">原子快照</text>
|
||
<path d="M349.6 239.0 L349.6 222.0 L480.4 222.0 L480.4 205.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="386.2" y="214.8" width="57.5" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="415.0" y="225.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">DMA 双缓冲</text>
|
||
<path d="M513.0 205.0 L513.0 239.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="490.5" y="214.8" width="45.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="513.0" y="225.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">语义通道</text>
|
||
<path d="M513.0 297.0 L513.0 331.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="500.0" y="306.8" width="26.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="513.0" y="317.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">相量</text>
|
||
<path d="M709.0 205.0 L709.0 239.0" fill="none" stroke="#64748b" stroke-width="1.25" stroke-dasharray="5 3" marker-end="url(#ar-c)"/>
|
||
<rect x="667.7" y="214.8" width="82.6" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="709.0" y="225.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#64748b" text-anchor="middle">1 kHz → 20 ms</text>
|
||
<path d="M483.4 389.0 L483.4 413.0 L709.0 413.0 L709.0 423.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="566.7" y="405.8" width="45.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="589.2" y="416.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">同一上游</text>
|
||
<path d="M685.3 331.0 L685.3 297.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="672.3" y="306.8" width="26.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="685.3" y="317.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">定值</text>
|
||
<path d="M735.6 423.0 L735.6 389.0" fill="none" stroke="#64748b" stroke-width="1.25" stroke-dasharray="5 3" marker-end="url(#ar-c)"/>
|
||
<rect x="714.4" y="398.8" width="42.5" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="735.6" y="409.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#64748b" text-anchor="middle">YK 请求</text>
|
||
<path d="M783.0 452.0 L831.0 452.0" fill="none" stroke="#64748b" stroke-width="1.25" stroke-dasharray="5 3" marker-end="url(#ar-c)"/>
|
||
<rect x="794.0" y="444.8" width="26.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="807.0" y="455.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#64748b" text-anchor="middle">脏段</text>
|
||
<path d="M783.0 268.0 L831.0 268.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="784.5" y="260.8" width="45.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="807.0" y="271.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">边沿投递</text>
|
||
<path d="M783.0 636.0 L831.0 636.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="784.5" y="628.8" width="45.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="807.0" y="639.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">唯一写者</text>
|
||
<path d="M762.3 665.0 L762.3 682.0 L869.5 682.0 L869.5 699.0" fill="none" stroke="#64748b" stroke-width="1.25" stroke-dasharray="5 3" marker-end="url(#ar-c)"/>
|
||
<rect x="791.9" y="674.8" width="48.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="815.9" y="685.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#64748b" text-anchor="middle">try 语义</text>
|
||
<path d="M195.0 544.0 L243.0 544.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="195.0" y="536.8" width="48.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="219.0" y="547.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">SPI 事务</text>
|
||
<path d="M391.0 544.0 L439.0 544.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="392.5" y="536.8" width="45.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="415.0" y="547.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">集中读清</text>
|
||
<path d="M587.0 544.0 L635.0 544.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="588.5" y="536.8" width="45.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="611.0" y="547.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">串行执行</text>
|
||
<path d="M783.0 544.0 L831.0 544.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="789.2" y="536.8" width="35.5" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="807.0" y="547.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">单连接</text>
|
||
<path d="M979.0 530.1 L1115.8 530.1 L1115.8 481.0" fill="none" stroke="#64748b" stroke-width="1.25" stroke-dasharray="5 3" marker-end="url(#ar-c)"/>
|
||
<rect x="1047.9" y="522.8" width="48.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="1071.9" y="533.5" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#64748b" text-anchor="middle">TCP 对端</text>
|
||
<path d="M195.0 636.0 L243.0 636.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="201.2" y="628.8" width="35.5" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="219.0" y="639.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">页读写</text>
|
||
<path d="M391.0 636.0 L439.0 636.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="397.2" y="628.8" width="35.5" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="415.0" y="639.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">逻辑块</text>
|
||
<path d="M587.0 636.0 L635.0 636.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="598.0" y="628.8" width="26.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="611.0" y="639.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">挂载</text>
|
||
<path d="M195.0 728.0 L243.0 728.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="204.5" y="720.8" width="29.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="219.0" y="731.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">I2C1</text>
|
||
<path d="M391.0 728.0 L439.0 728.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="402.0" y="720.8" width="26.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="415.0" y="731.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">墙钟</text>
|
||
<path d="M635.0 728.0 L587.0 728.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="588.5" y="720.8" width="45.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="611.0" y="731.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">收包对时</text>
|
||
<path d="M439.0 820.0 L391.0 820.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="401.2" y="812.8" width="27.5" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="415.0" y="823.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">帧 B</text>
|
||
<path d="M635.0 820.0 L587.0 820.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="598.0" y="812.8" width="26.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="611.0" y="823.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">灌数</text>
|
||
<path d="M783.0 820.0 L831.0 820.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="784.5" y="812.8" width="45.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="807.0" y="823.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">同一显存</text>
|
||
<path d="M243.0 820.0 L195.0 820.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="199.0" y="812.8" width="40.1" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="219.0" y="823.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">700000</text>
|
||
<path d="M673.5 849.0 L673.5 861.0 L486.4 861.0 L486.4 883.0" fill="none" stroke="#64748b" stroke-width="1.25" stroke-dasharray="5 3" marker-end="url(#ar-c)"/>
|
||
<rect x="537.9" y="853.8" width="74.1" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="574.9" y="864.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#64748b" text-anchor="middle">100 ms 喂心跳</text>
|
||
<path d="M726.8 849.0 L726.8 866.0 L709.0 866.0 L709.0 883.0" fill="none" stroke="#64748b" stroke-width="1.25" stroke-dasharray="5 3" marker-end="url(#ar-c)"/>
|
||
<rect x="700.1" y="858.8" width="35.5" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="717.9" y="869.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#64748b" text-anchor="middle">等就绪</text>
|
||
<path d="M783.0 912.0 L831.0 912.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="784.2" y="904.8" width="45.6" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="807.0" y="915.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">WaitAll</text>
|
||
<path d="M979.0 820.0 L1027.0 820.0" fill="none" stroke="#7c3aed" stroke-width="1.25" stroke-dasharray="1.5 3" marker-end="url(#ar-e)"/>
|
||
<rect x="980.5" y="812.8" width="45.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="1003.0" y="823.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#7c3aed" text-anchor="middle">同源像素</text>
|
||
<path d="M560.4 389.0 L560.4 400.0 L1118.8 400.0 L1118.8 389.0" fill="none" stroke="#7c3aed" stroke-width="1.25" stroke-dasharray="1.5 3" marker-end="url(#ar-e)"/>
|
||
<rect x="812.3" y="392.8" width="54.5" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="839.6" y="403.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#7c3aed" text-anchor="middle">纯逻辑直跑</text>
|
||
<path d="M709.0 941.0 L709.0 954.0 L317.0 954.0 L317.0 941.0" fill="none" stroke="#7c3aed" stroke-width="1.25" stroke-dasharray="1.5 3" marker-end="url(#ar-e)"/>
|
||
<rect x="490.5" y="946.8" width="45.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="513.0" y="957.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#7c3aed" text-anchor="middle">唤醒发送</text>
|
||
<path d="M979.0 464.8 L1008.8 464.8 L1008.8 636.0 L979.0 636.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="981.5" y="543.1" width="54.5" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="1008.8" y="553.8" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">唯一落盘者</text>
|
||
<path d="M88.4 883.0 L88.4 861.0 L284.4 861.0 L284.4 849.0" fill="none" stroke="#334155" stroke-width="1.35" marker-end="url(#ar-d)"/>
|
||
<rect x="158.9" y="853.8" width="45.0" height="14.5" rx="3" fill="#ffffff" fill-opacity="0.94"/><text x="181.4" y="864.4" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="middle">回调宿主</text>
|
||
<rect x="47.0" y="147.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#475569" stroke-width="1.3"/>
|
||
<rect x="47.0" y="147.0" width="3.5" height="58.0" rx="1.75" fill="#475569" stroke="#475569" stroke-width="0"/>
|
||
<text x="58.0" y="171.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">TPAFE5160 前端</text>
|
||
<text x="58.0" y="187.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">并行总线 · 8 路</text>
|
||
<rect x="47.0" y="239.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#475569" stroke-width="1.3"/>
|
||
<rect x="47.0" y="239.0" width="3.5" height="58.0" rx="1.75" fill="#475569" stroke="#475569" stroke-width="0"/>
|
||
<text x="58.0" y="263.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">片内 ADC1 + DMA</text>
|
||
<text x="58.0" y="279.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">TIM3 TRGO 乒乓</text>
|
||
<rect x="47.0" y="515.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#475569" stroke-width="1.3"/>
|
||
<rect x="47.0" y="515.0" width="3.5" height="58.0" rx="1.75" fill="#475569" stroke="#475569" stroke-width="0"/>
|
||
<text x="58.0" y="539.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">CH395F 以太网</text>
|
||
<text x="58.0" y="555.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">SPI 串行化</text>
|
||
<rect x="47.0" y="607.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#475569" stroke-width="1.3"/>
|
||
<rect x="47.0" y="607.0" width="3.5" height="58.0" rx="1.75" fill="#475569" stroke="#475569" stroke-width="0"/>
|
||
<text x="58.0" y="631.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">GD5F SPI NAND</text>
|
||
<text x="58.0" y="647.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">2 KB 页 · ECC</text>
|
||
<rect x="47.0" y="699.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#475569" stroke-width="1.3"/>
|
||
<rect x="47.0" y="699.0" width="3.5" height="58.0" rx="1.75" fill="#475569" stroke="#475569" stroke-width="0"/>
|
||
<text x="58.0" y="723.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">SD2506 RTC</text>
|
||
<text x="58.0" y="739.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">I2C1 硬件亚秒</text>
|
||
<rect x="47.0" y="791.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#475569" stroke-width="1.3"/>
|
||
<rect x="47.0" y="791.0" width="3.5" height="58.0" rx="1.75" fill="#475569" stroke="#475569" stroke-width="0"/>
|
||
<text x="58.0" y="815.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">屏板 160×160</text>
|
||
<text x="58.0" y="831.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">USART1 700000</text>
|
||
<rect x="47.0" y="883.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#475569" stroke-width="1.3"/>
|
||
<rect x="47.0" y="883.0" width="3.5" height="58.0" rx="1.75" fill="#475569" stroke="#475569" stroke-width="0"/>
|
||
<text x="58.0" y="907.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">RS-485 总线</text>
|
||
<text x="58.0" y="923.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">UART4 · 未接线(暂缓)</text>
|
||
<rect x="243.0" y="147.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#d97706" stroke-width="1.3"/>
|
||
<rect x="243.0" y="147.0" width="3.5" height="58.0" rx="1.75" fill="#d97706" stroke="#d97706" stroke-width="0"/>
|
||
<text x="254.0" y="171.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">TPAFE 驱动</text>
|
||
<text x="254.0" y="187.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">原子快照 snapshot</text>
|
||
<rect x="243.0" y="239.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#d97706" stroke-width="1.3"/>
|
||
<rect x="243.0" y="239.0" width="3.5" height="58.0" rx="1.75" fill="#d97706" stroke="#d97706" stroke-width="0"/>
|
||
<text x="254.0" y="263.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">ADC · TIM3 · DMA</text>
|
||
<text x="254.0" y="279.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">手写上电自校准</text>
|
||
<rect x="243.0" y="515.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#d97706" stroke-width="1.3"/>
|
||
<rect x="243.0" y="515.0" width="3.5" height="58.0" rx="1.75" fill="#d97706" stroke="#d97706" stroke-width="0"/>
|
||
<text x="254.0" y="539.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">CH395F 驱动</text>
|
||
<text x="254.0" y="555.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">中断集中读清</text>
|
||
<rect x="243.0" y="607.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#d97706" stroke-width="1.3"/>
|
||
<rect x="243.0" y="607.0" width="3.5" height="58.0" rx="1.75" fill="#d97706" stroke="#d97706" stroke-width="0"/>
|
||
<text x="254.0" y="631.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">NAND 驱动 + FTL</text>
|
||
<text x="254.0" y="647.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">ECC · BBT</text>
|
||
<rect x="243.0" y="699.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#d97706" stroke-width="1.3"/>
|
||
<rect x="243.0" y="699.0" width="3.5" height="58.0" rx="1.75" fill="#d97706" stroke="#d97706" stroke-width="0"/>
|
||
<text x="254.0" y="723.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">RTC 驱动 + 墙钟</text>
|
||
<text x="254.0" y="739.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">sys_clock epoch</text>
|
||
<rect x="243.0" y="791.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#d97706" stroke-width="1.3"/>
|
||
<rect x="243.0" y="791.0" width="3.5" height="58.0" rx="1.75" fill="#d97706" stroke="#d97706" stroke-width="0"/>
|
||
<text x="254.0" y="815.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">屏板链路驱动</text>
|
||
<text x="254.0" y="831.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">借道 RS485</text>
|
||
<rect x="243.0" y="883.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#d97706" stroke-width="1.3"/>
|
||
<rect x="243.0" y="883.0" width="3.5" height="58.0" rx="1.75" fill="#d97706" stroke="#d97706" stroke-width="0"/>
|
||
<text x="254.0" y="907.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">控制台 UART5</text>
|
||
<text x="254.0" y="923.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">4 KB 环形</text>
|
||
<rect x="439.0" y="147.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#16a34a" stroke-width="1.3"/>
|
||
<rect x="439.0" y="147.0" width="3.5" height="58.0" rx="1.75" fill="#16a34a" stroke="#16a34a" stroke-width="0"/>
|
||
<text x="450.0" y="171.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">语义取数层</text>
|
||
<text x="450.0" y="187.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">有效性 · 标定</text>
|
||
<rect x="439.0" y="239.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#16a34a" stroke-width="1.3"/>
|
||
<rect x="439.0" y="239.0" width="3.5" height="58.0" rx="1.75" fill="#16a34a" stroke="#16a34a" stroke-width="0"/>
|
||
<text x="450.0" y="263.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">全周傅氏相量</text>
|
||
<text x="450.0" y="279.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">ring → phasor</text>
|
||
<rect x="439.0" y="331.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#16a34a" stroke-width="1.3"/>
|
||
<rect x="439.0" y="331.0" width="3.5" height="58.0" rx="1.75" fill="#16a34a" stroke="#16a34a" stroke-width="0"/>
|
||
<text x="450.0" y="355.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">遥测快照双区</text>
|
||
<text x="450.0" y="371.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">测频 200 ms</text>
|
||
<rect x="439.0" y="515.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#16a34a" stroke-width="1.3"/>
|
||
<rect x="439.0" y="515.0" width="3.5" height="58.0" rx="1.75" fill="#16a34a" stroke="#16a34a" stroke-width="0"/>
|
||
<text x="450.0" y="539.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">NET 中间件</text>
|
||
<text x="450.0" y="555.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">socket · 挂起</text>
|
||
<rect x="439.0" y="607.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#16a34a" stroke-width="1.3"/>
|
||
<rect x="439.0" y="607.0" width="3.5" height="58.0" rx="1.75" fill="#16a34a" stroke="#16a34a" stroke-width="0"/>
|
||
<text x="450.0" y="631.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">FTL + FatFs</text>
|
||
<text x="450.0" y="647.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">dhara · 8.3 短名</text>
|
||
<rect x="439.0" y="699.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#16a34a" stroke-width="1.3"/>
|
||
<rect x="439.0" y="699.0" width="3.5" height="58.0" rx="1.75" fill="#16a34a" stroke="#16a34a" stroke-width="0"/>
|
||
<text x="450.0" y="723.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">对时协议</text>
|
||
<text x="450.0" y="739.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">推送写 RTC</text>
|
||
<rect x="439.0" y="791.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#16a34a" stroke-width="1.3"/>
|
||
<rect x="439.0" y="791.0" width="3.5" height="58.0" rx="1.75" fill="#16a34a" stroke="#16a34a" stroke-width="0"/>
|
||
<text x="450.0" y="815.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">LVGL + ui_port</text>
|
||
<text x="450.0" y="831.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">160×160 1bpp</text>
|
||
<rect x="439.0" y="883.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#16a34a" stroke-width="1.3"/>
|
||
<rect x="439.0" y="883.0" width="3.5" height="58.0" rx="1.75" fill="#16a34a" stroke="#16a34a" stroke-width="0"/>
|
||
<text x="450.0" y="907.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">IWDG + Fault</text>
|
||
<text x="450.0" y="923.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">心跳掩码</text>
|
||
<rect x="635.0" y="147.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#0d9488" stroke-width="1.3"/>
|
||
<rect x="635.0" y="147.0" width="3.5" height="58.0" rx="1.75" fill="#0d9488" stroke="#0d9488" stroke-width="0"/>
|
||
<text x="646.0" y="171.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">adcTask</text>
|
||
<text x="646.0" y="187.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">1 kHz 消费者</text>
|
||
<rect x="635.0" y="239.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#0d9488" stroke-width="1.3"/>
|
||
<rect x="635.0" y="239.0" width="3.5" height="58.0" rx="1.75" fill="#0d9488" stroke="#0d9488" stroke-width="0"/>
|
||
<text x="646.0" y="263.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">protectTask</text>
|
||
<text x="646.0" y="279.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">20 ms 判据</text>
|
||
<rect x="635.0" y="331.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#0d9488" stroke-width="1.3"/>
|
||
<rect x="635.0" y="331.0" width="3.5" height="58.0" rx="1.75" fill="#0d9488" stroke="#0d9488" stroke-width="0"/>
|
||
<text x="646.0" y="355.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">定值层</text>
|
||
<text x="646.0" y="371.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">prot_set 校验</text>
|
||
<rect x="635.0" y="423.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#0d9488" stroke-width="1.3"/>
|
||
<rect x="635.0" y="423.0" width="3.5" height="58.0" rx="1.75" fill="#0d9488" stroke="#0d9488" stroke-width="0"/>
|
||
<text x="646.0" y="447.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">iec104Task</text>
|
||
<text x="646.0" y="463.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">100 ms · :2404</text>
|
||
<rect x="635.0" y="515.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#0d9488" stroke-width="1.3"/>
|
||
<rect x="635.0" y="515.0" width="3.5" height="58.0" rx="1.75" fill="#0d9488" stroke="#0d9488" stroke-width="0"/>
|
||
<text x="646.0" y="539.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">netTask</text>
|
||
<text x="646.0" y="555.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">MsgQueue 深 8</text>
|
||
<rect x="635.0" y="607.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#0d9488" stroke-width="1.3"/>
|
||
<rect x="635.0" y="607.0" width="3.5" height="58.0" rx="1.75" fill="#0d9488" stroke="#0d9488" stroke-width="0"/>
|
||
<text x="646.0" y="631.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">defaultTask</text>
|
||
<text x="646.0" y="647.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">记录唯一写者</text>
|
||
<rect x="635.0" y="699.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#0d9488" stroke-width="1.3"/>
|
||
<rect x="635.0" y="699.0" width="3.5" height="58.0" rx="1.75" fill="#0d9488" stroke="#0d9488" stroke-width="0"/>
|
||
<text x="646.0" y="723.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">timeSyncTask</text>
|
||
<text x="646.0" y="739.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">等 NET_READY</text>
|
||
<rect x="635.0" y="791.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#0d9488" stroke-width="1.3"/>
|
||
<rect x="635.0" y="791.0" width="3.5" height="58.0" rx="1.75" fill="#0d9488" stroke="#0d9488" stroke-width="0"/>
|
||
<text x="646.0" y="815.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">uiTask</text>
|
||
<text x="646.0" y="831.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">唯一写侧</text>
|
||
<rect x="635.0" y="883.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#0d9488" stroke-width="1.3"/>
|
||
<rect x="635.0" y="883.0" width="3.5" height="58.0" rx="1.75" fill="#0d9488" stroke="#0d9488" stroke-width="0"/>
|
||
<text x="646.0" y="907.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">就绪屏障</text>
|
||
<text x="646.0" y="923.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">位组 · NoClear</text>
|
||
<rect x="831.0" y="239.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#e11d48" stroke-width="1.3"/>
|
||
<rect x="831.0" y="239.0" width="3.5" height="58.0" rx="1.75" fill="#e11d48" stroke="#e11d48" stroke-width="0"/>
|
||
<text x="842.0" y="263.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">SOE 事件</text>
|
||
<text x="842.0" y="279.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">soe.log 定长</text>
|
||
<rect x="831.0" y="331.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#e11d48" stroke-width="1.3"/>
|
||
<rect x="831.0" y="331.0" width="3.5" height="58.0" rx="1.75" fill="#e11d48" stroke="#e11d48" stroke-width="0"/>
|
||
<text x="842.0" y="355.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">定值落盘</text>
|
||
<text x="842.0" y="371.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">/prot_set.bin</text>
|
||
<rect x="831.0" y="423.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#e11d48" stroke-width="1.3"/>
|
||
<rect x="831.0" y="423.0" width="3.5" height="58.0" rx="1.75" fill="#e11d48" stroke="#e11d48" stroke-width="0"/>
|
||
<text x="842.0" y="447.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">配置引擎</text>
|
||
<text x="842.0" y="463.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">net_cfg · ftp_cfg</text>
|
||
<rect x="831.0" y="515.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#e11d48" stroke-width="1.3"/>
|
||
<rect x="831.0" y="515.0" width="3.5" height="58.0" rx="1.75" fill="#e11d48" stroke="#e11d48" stroke-width="0"/>
|
||
<text x="842.0" y="539.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">TCP 服务面</text>
|
||
<text x="842.0" y="555.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">:21 / :2404</text>
|
||
<rect x="831.0" y="607.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#e11d48" stroke-width="1.3"/>
|
||
<rect x="831.0" y="607.0" width="3.5" height="58.0" rx="1.75" fill="#e11d48" stroke="#e11d48" stroke-width="0"/>
|
||
<text x="842.0" y="631.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">文件系统落点</text>
|
||
<text x="842.0" y="647.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">/log · /wave</text>
|
||
<rect x="831.0" y="699.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#e11d48" stroke-width="1.3"/>
|
||
<rect x="831.0" y="699.0" width="3.5" height="58.0" rx="1.75" fill="#e11d48" stroke="#e11d48" stroke-width="0"/>
|
||
<text x="842.0" y="723.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">卷锁 + 账本</text>
|
||
<text x="842.0" y="739.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">三路 try 协定</text>
|
||
<rect x="831.0" y="791.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#e11d48" stroke-width="1.3"/>
|
||
<rect x="831.0" y="791.0" width="3.5" height="58.0" rx="1.75" fill="#e11d48" stroke="#e11d48" stroke-width="0"/>
|
||
<text x="842.0" y="815.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">一份显存三出</text>
|
||
<text x="842.0" y="831.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">屏板 · :7003</text>
|
||
<rect x="831.0" y="883.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#e11d48" stroke-width="1.3"/>
|
||
<rect x="831.0" y="883.0" width="3.5" height="58.0" rx="1.75" fill="#e11d48" stroke="#e11d48" stroke-width="0"/>
|
||
<text x="842.0" y="907.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">ftpTask</text>
|
||
<text x="842.0" y="923.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">lftpd 根 :21</text>
|
||
<rect x="1027.0" y="331.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#2563eb" stroke-width="1.3"/>
|
||
<rect x="1027.0" y="331.0" width="3.5" height="58.0" rx="1.75" fill="#2563eb" stroke="#2563eb" stroke-width="0"/>
|
||
<text x="1038.0" y="355.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">主机侧第三端</text>
|
||
<text x="1038.0" y="371.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">直打生产 .c</text>
|
||
<rect x="1027.0" y="423.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#2563eb" stroke-width="1.3"/>
|
||
<rect x="1027.0" y="423.0" width="3.5" height="58.0" rx="1.75" fill="#2563eb" stroke="#2563eb" stroke-width="0"/>
|
||
<text x="1038.0" y="447.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">上位侧对端</text>
|
||
<text x="1038.0" y="463.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">104 主站</text>
|
||
<rect x="1027.0" y="791.0" width="148.0" height="58.0" rx="7" fill="#ffffff" stroke="#2563eb" stroke-width="1.3"/>
|
||
<rect x="1027.0" y="791.0" width="3.5" height="58.0" rx="1.75" fill="#2563eb" stroke="#2563eb" stroke-width="0"/>
|
||
<text x="1038.0" y="815.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="11.5" fill="#0f172a" text-anchor="start" font-weight="bold">PC 模拟器</text>
|
||
<text x="1038.0" y="831.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#475569" text-anchor="start" font-weight="normal">SDL2 同源码</text>
|
||
<line x1="34" y1="994.0" x2="1162" y2="994.0" stroke="#cbd5e1" stroke-width="1"/>
|
||
<line x1="34.0" y1="997.0" x2="60.0" y2="997.0" stroke="#334155" stroke-width="1.35"/>
|
||
<text x="65.0" y="1001.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="start" font-weight="normal">数据 / 读写</text>
|
||
<line x1="143.5" y1="997.0" x2="169.5" y2="997.0" stroke="#64748b" stroke-width="1.35" stroke-dasharray="5 3"/>
|
||
<text x="174.5" y="1001.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="start" font-weight="normal">命令 · 请求 · 配置</text>
|
||
<line x1="296.6" y1="997.0" x2="322.6" y2="997.0" stroke="#7c3aed" stroke-width="1.35" stroke-dasharray="1.5 3"/>
|
||
<text x="327.6" y="1001.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="start" font-weight="normal">屏障位 · 心跳 · 同源镜像</text>
|
||
<rect x="478.1" y="991.0" width="11.0" height="11.0" rx="2.5" fill="#ffffff" stroke="#475569" stroke-width="1.2"/>
|
||
<text x="493.1" y="1001.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="start" font-weight="normal">片外硬件</text>
|
||
<rect x="547.1" y="991.0" width="11.0" height="11.0" rx="2.5" fill="#ffffff" stroke="#d97706" stroke-width="1.2"/>
|
||
<text x="562.1" y="1001.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="start" font-weight="normal">驱动</text>
|
||
<rect x="597.1" y="991.0" width="11.0" height="11.0" rx="2.5" fill="#ffffff" stroke="#16a34a" stroke-width="1.2"/>
|
||
<text x="612.1" y="1001.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="start" font-weight="normal">中间件与算法</text>
|
||
<rect x="685.1" y="991.0" width="11.0" height="11.0" rx="2.5" fill="#ffffff" stroke="#0d9488" stroke-width="1.2"/>
|
||
<text x="700.1" y="1001.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="start" font-weight="normal">任务与握手</text>
|
||
<rect x="763.6" y="991.0" width="11.0" height="11.0" rx="2.5" fill="#ffffff" stroke="#e11d48" stroke-width="1.2"/>
|
||
<text x="778.6" y="1001.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="start" font-weight="normal">服务与落点</text>
|
||
<rect x="842.1" y="991.0" width="11.0" height="11.0" rx="2.5" fill="#ffffff" stroke="#2563eb" stroke-width="1.2"/>
|
||
<text x="857.1" y="1001.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#334155" text-anchor="start" font-weight="normal">对外 / 同构端</text>
|
||
<text x="34.0" y="1016.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#64748b" text-anchor="start" font-weight="normal">口径:AGENTS.md「数据主线」+ docs/架构设计/项目架构总览.md(行号级证据在那份文档与代码里)。RS-485 采集未接线:rs485_task 有实现但不建任务,接线后数据进语义取数层;其余行为条件(未标定闭锁 / 就绪位 NoClear / CH395F 单连接 / V0.</text>
|
||
<text x="34.0" y="1028.0" font-family="Microsoft YaHei, Segoe UI, PingFang SC, sans-serif" font-size="9.5" fill="#64748b" text-anchor="start" font-weight="normal">1 双转换器无共同采样触发)见正文,它们只改变判据与端口、不改变本图的框与连线。</text>
|
||
</svg>
|