<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Sigrok on MoRiv447</title><link>https://moriv447.github.io/tags/sigrok/</link><description>Recent content in Sigrok on MoRiv447</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Tue, 01 Sep 2026 22:30:00 +0800</lastBuildDate><atom:link href="https://moriv447.github.io/tags/sigrok/index.xml" rel="self" type="application/rss+xml"/><item><title>用逻辑分析仪给 AI Agent 当地面真值</title><link>https://moriv447.github.io/posts/logic-analyzer-ground-truth/</link><pubDate>Tue, 01 Sep 2026 22:30:00 +0800</pubDate><guid>https://moriv447.github.io/posts/logic-analyzer-ground-truth/</guid><description>让 AI 判断『这条 UART 真的是 115200 吗』，不能靠它看串口助手的截图，得靠波形测出来。记录 Firment 里 la 工具的几个设计取舍。</description><content:encoded><![CDATA[<p>AI agent 做固件，最难的不是写代码，是<strong>让它知道自己写对了没有</strong>。运行级证据（串口日志）能覆盖一部分，但很多物理事实——PWM 频率对不对、SPI 时序、总线上真实跑的字节——日志里看不到。逻辑分析仪就是补这一层的。</p>
<p>Firment 的 <code>la</code> 工具接的是 sigrok-cli。几个值得记的设计取舍：</p>
<h2 id="1-外部子进程绝不链接-libsigrok">1. 外部子进程，绝不链接 libsigrok</h2>
<p>sigrok/libsigrok 是 GPL。链接进一个 MIT 程序会传染许可证。所以 <code>la</code> 把 sigrok-cli 当<strong>外部二进制</strong>用 argv 数组调用（和 probe-rs 同一模式），跨进程边界读 stdout，GPL 传染不到。代价是要自己处理进程生命周期，换来的是干净 + 覆盖面广（fx2lafw 克隆机、Saleae、几十种设备走同一驱动层）。</p>
<h2 id="2-频率只给区间不给伪精确值">2. 频率只给区间，不给伪精确值</h2>
<p>边沿只能定位到 ±1 个采样，所以周期带 ±2 采样的误差。报一个 <code>1.33 Hz</code> 是假精确。<code>la measure</code> 一律输出 <code>hz_low .. hz_high</code> 区间，且欠采样（每周期 &lt;4 采样）时降到低置信度。</p>
<h2 id="3-读回设备真实采样率而不是你请求的那个">3. 读回设备真实采样率，而不是你请求的那个</h2>
<p>fx2lafw 这类只支持离散采样率（6/12/24/48 MHz），你请求 8m 它可能跳到 12m。如果用请求值算频率会系统性偏差。所以采集后跑一次 <code>--show</code> 把<strong>真实采样率和通道数</strong>读回来写进元数据。</p>
<h2 id="4-通道名要按-sigrok-的现实来">4. 通道名要按 sigrok 的现实来</h2>
<p>sigrok-cli 按<strong>通道名</strong>匹配，主流驱动叫 <code>D0..D7</code> 不是 <code>0..7</code>。我一开始按索引写示例，真机上直接 <code>unknown channel</code>。这种坑只有对着 sigrok 源码或上板才发现得了。</p>
<h2 id="5-半截数据比报错更糟">5. 半截数据比报错更糟</h2>
<p>采集导出成原始位流时，如果进程被超时/取消打断，可能留下一个写了一半的 <code>.bin</code>。测量层必须查 <code>has_binary</code> + 尺寸校验，宁可报错也不能拿截断波形算出一个自信的假频率。</p>
<h2 id="6-挂进证据阶梯">6. 挂进证据阶梯</h2>
<p>HIL 里 <code>kind = &quot;la&quot;</code> 步骤可以断言 <code>expect_frequency_hz</code> / <code>expect_duty</code> / <code>expect_edges</code> / <code>expect_decoded</code>，规则和其它物理观测一致：<strong>低置信度永远过不了断言</strong>，dry-run 强制 FAIL。</p>
<p>一句话：把「波形测出来」变成 agent 能消费、且<strong>不会说谎</strong>的证据。</p>
]]></content:encoded></item></channel></rss>