<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>自制工业控制系统 on 软件开发大郭的技术博客</title>
		<link>https://blog.grabbyte.com/tags/%E8%87%AA%E5%88%B6%E5%B7%A5%E4%B8%9A%E6%8E%A7%E5%88%B6%E7%B3%BB%E7%BB%9F/</link>
		<description>Recent content in 自制工业控制系统 on 软件开发大郭的技术博客</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<lastBuildDate>Fri, 11 Sep 2026 17:12:00 +0800</lastBuildDate>
		
			<atom:link href="https://blog.grabbyte.com/tags/%E8%87%AA%E5%88%B6%E5%B7%A5%E4%B8%9A%E6%8E%A7%E5%88%B6%E7%B3%BB%E7%BB%9F/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>自制工业控制系统：中文输入法——音节切分、三层码表与候选窗</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1712.html</link>
				<pubDate>Fri, 11 Sep 2026 17:12:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1712.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;汉字进机器，是一道比机床数控更老的难题。机械时代的中国打字机拖着一块两千多常用字的大字盘，拣字锤在盘面上跑，熟练工一分钟二十来字，比手写快不了多少；林语堂 1947 年的明快打字机想换思路——几十个键配一套机械索引机构，按上下形检字，从七千字里调字，样机造出来了，赔进去的是他半生的版税。更早的 1871 年，丹麦大北电报公司在上海敷设海缆，汉字被编成四位数字一字的电码本，收发两头的译电员&amp;quot;数字进、汉字出&amp;quot;——那份码本就是&amp;quot;码表&amp;quot;这个词的老祖宗：输入的从来不是字本身，是查表的键。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：3D切割过程模拟——直纹面重构、弧长配对与三维仿真屏</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1608.html</link>
				<pubDate>Fri, 11 Sep 2026 16:08:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1608.html</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1105.html&#34;&gt;界面篇&lt;/a&gt;立仿真屏的时候留了一句实话：轨迹描画是二维的。平切的活这样够用——轮廓画出来对着图纸肉眼核对，尺寸、过切、切入位置，一张图说尽。锥形切割一进来，这张二维图开始答非所问：上下两条轨迹各自都画得对，中间切出来的面长什么样？摆角会不会顶到线架行程？天圆地方的活图纸只给上下两个轮廓，中间的过渡腔连设计的人都只靠想象——车间里交这种活，编程的人自己心里都没底，只能切个试件用真金白银买确定。&lt;/p&gt;&#xA;&lt;p&gt;用图形先验再上机，是数控的老传统。APT 年代刀位数据先上绘图仪画一遍（CLFILE 出图，人眼查刀路），车间&amp;quot;先描图、后切件&amp;quot;的习惯是这个传统的民间版；商品化的切削验证软件八十年代末出现——CGTech 1988 年成立，头号产品 VERICUT 干的就是验刀路、防碰撞、防过切，至今还是铣削领域的主力；线切割控制系统则跟着显示硬件降价一路走：字符终端、二维轨迹图、三维线框，到今天 Sodick 这类厂商的系统里 3D 模拟是标配屏。我们自研系统的仿真屏从二维升三维，是把同一条曲线重走一遍——好在走起来便宜，原因见下。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：锥形切割实战——锥度几何、切点漂移与UV轨迹生成</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1451.html</link>
				<pubDate>Fri, 11 Sep 2026 14:51:27 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1451.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1357.html&#34;&gt;插补篇&lt;/a&gt;把段表变成了脉冲，但那套段表还是纯二维的——X/Y 走轨迹，丝始终竖着，切出来的东西上下一样大。模具行业第一个不答应：冲裁模的凹模刃口要带斜度，落料才漏得下去；塑料模的型腔要拔模斜度，件才取得出来；挤压模干脆要上下两个形状的过渡腔（天圆地方这类）。这些活的共同名字叫锥形切割：丝要会歪。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：插补实战——逐点比较法、偏差递推与脉冲节拍</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1357.html</link>
				<pubDate>Fri, 11 Sep 2026 13:57:50 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1357.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;三线合拢了：几何侧的&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1209.html&#34;&gt;逐点比较法&lt;/a&gt;在详解篇讲过来历，执行侧的脉冲和电机在&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1227.html&#34;&gt;电机篇&lt;/a&gt;备好了合同，速度侧的变频入口在&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1346.html&#34;&gt;放电篇&lt;/a&gt;通了——这篇写插补本体，把&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1153.html&#34;&gt;段表&lt;/a&gt;变成脉冲。插补这个词本身是什么、为什么非有它不可，前置的&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1350.html&#34;&gt;插补基础&lt;/a&gt;一篇已从零垫平（问题、三笔账、记分牌直觉），这里不再重复铺概念，直接进算法。&lt;/p&gt;&#xA;&lt;p&gt;插补是个带着年代味的问题：数字计算机还没便宜下来的时候，怎么让一台机床走出不是直角折线的轨迹？五十年代的硬接线数控柜给出的答案是把轨迹问题化成&amp;quot;每步走一个脉冲当量、每步判一次方向&amp;quot;——逐点比较法。七十年代国产线切割的数控柜用分立元件实现了它，3B 纸带上的五个字段（X、Y、J、G、Z）就是这套硬件逻辑的寄存器投影：J 是计数器、G 是判终轴、Z 是象限查表的索引。同一时期，IBM 的 Bresenham 为绘图仪独立推导出同一套数学——两个世界互不知晓，得到同一条偏差递推。HF 时代用 x86 汇编把同一算法第三次写进软件；我们用 Rust 加 ISR 加 FPGA 第四次重写，每次重写，时代给的条件都在变：硬件时代的门电路按个数算，今天的乘法器在 GHz 面前近乎免费——这次的改法就藏在这个变化里，第二节见。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：插补基础——从一段几何到一串脉冲，机床是怎么走出一条斜线的</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1350.html</link>
				<pubDate>Fri, 11 Sep 2026 13:50:00 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1350.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;写&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1357.html&#34;&gt;插补实战&lt;/a&gt;的时候发现一个缺口：那篇默认读者已经知道插补是什么，一上来就是偏差函数和递推。可&amp;quot;插补&amp;quot;恰恰是数控黑话里对开发者最不友好的一类词——两个字都认识，连起来不知道在说什么；教科书讲它之前先铺了一百页机床结构，厂商手册更干脆，一句&amp;quot;支持直线/圆弧插补&amp;quot;就翻篇。系列的规矩是不留知识黑洞，而插补是整个数控最中央的概念——&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1153.html&#34;&gt;解析器&lt;/a&gt;交出的段表、&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1227.html&#34;&gt;电机篇&lt;/a&gt;备好的脉冲、&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1346.html&#34;&gt;放电篇&lt;/a&gt;留的变频入口，最后全部汇到它身上。所以实战篇之前单开这篇，把概念从零垫平：插补是什么、为什么非有它不可、它站在系统哪一环。只假设两件事：你写过代码，并且知道步进电机来一个脉冲走一步。&lt;/p&gt;&#xA;&lt;p&gt;这个词的来历就是答案的一半。interpolation 在数学里是&amp;quot;插值&amp;quot;：已知两个点，把中间的点补出来。1952 年 MIT 改造的那台首台数控铣床面对的正是这道题——纸带上打的只有端点，起点到终点之间无穷多个中间位置，纸带打不起也存不下，必须由机床自己补出来。&amp;ldquo;插补&amp;quot;由此成了数控的专有动词，干的就是字面意思的事：在程序给的点之间，把中间的路一步步补出来。补路的角色叫插补器（interpolator），最早是控制柜里一抽屉门电路，后来是软件里的一个状态机——补路的家伙换了四代，题目没换过。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：放电加工与高频电源——电蚀物理、规准与间隙伺服的来历</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1346.html</link>
				<pubDate>Fri, 11 Sep 2026 13:46:09 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1346.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1227.html&#34;&gt;电机篇&lt;/a&gt;结尾留了个口子：切割中的进给频率由放电状态实时调，&amp;ldquo;变频&amp;quot;那只手落在哪，没讲。这只手背后是整台机床最核心的物理过程——放电加工本身。&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1216.html&#34;&gt;上一篇来历&lt;/a&gt;讲了它是谁发明的、走丝怎么分出快慢两条路；这篇下到物理层：一次放电到底发生什么、高频电源在干什么活、&amp;ldquo;规准&amp;quot;两个字到底指什么、间隙伺服怎么闭环。这层不透，插补的变频入口、放电模块的统计上报、运行屏的平均电流和短路率，全是悬空的概念——工控软件做不好用，多半就是写软件的人没在这层下过车间。&lt;/p&gt;&#xA;&lt;p&gt;先把三个词钉住，全篇都在用：&lt;strong&gt;间隙&lt;/strong&gt;是丝和工件之间那条几微米到几十微米的缝；&lt;strong&gt;蚀除&lt;/strong&gt;是每个脉冲从工件上炸掉的那点金属；&lt;strong&gt;伺服&lt;/strong&gt;在这里不是电机篇的伺服电机，是&amp;quot;让间隙保持在放电区&amp;quot;的控制手艺——这台机器真正的伺服对象是放电间隙，电机只是执行器。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：电机驱动基础——步进与伺服、脉冲方向接口与加减速的来历</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1227.html</link>
				<pubDate>Fri, 11 Sep 2026 12:27:01 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1227.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1153.html&#34;&gt;解析器&lt;/a&gt;交出了段表，往下就该写插补了——但插补的输出是什么？是一串脉冲，发给电机驱动器。脉冲长什么样、一拍对应几微米、多快会丢、停不住会怎样，这层不讲透，插补写出来就是知识黑洞：代码在算轨迹，机器在丢步，两边对不上账。这篇把电机这层填掉——步进电机怎么走、驱动器在中间干什么活、脉冲+方向接口和加减速曲线从哪儿来。插补的几个关键参数（最高频率、加减速时间、脉冲当量）全部从这层的物理来，跳过它直接写软件，就是脱离实际想当然。&lt;/p&gt;&#xA;&lt;p&gt;电机这层比数控古老。&amp;ldquo;给一个电信号、走一个固定角度&amp;quot;的想法，1891 年就商业化了的 Strowger 自动电话交换机是老祖宗——那位堪萨斯城的殡葬商怀疑话务员把他的生意电话转给了竞争对手，一怒之下发明了不要话务员的交换机，选线器就是个电磁棘轮，来一个脉冲走一步。数控元年则是 1952 年 MIT 在空军项目里改造的那台辛辛那提铣床：程序在打孔纸带上，伺服是液压的——当年的电力拖动力矩密度不够，只能让液压先顶着。步进电机在六十年代定型混合式结构，随后在打印机、磁盘机这些办公设备里练出一身便宜耐造的本事；中国的线切割在八十年代选了它，一用四十年。于是今天的机床上，PUL/DIR 两根信号线的接口从电子管后期一路用到现在没换过样子——硬件换了四代，接口不换，原因后面讲：它把控制器和驱动技术解耦了，这个遗产直接便宜了我们自研系统。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：电火花线切割的来历——发明往事、快慢走丝分岔与切削CNC对比</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1216.html</link>
				<pubDate>Fri, 11 Sep 2026 12:16:16 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1216.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;应用篇往下写，要开始碰机床的几大件了——运动控制卡、放电、走丝、工作液。每碰一件都会撞见&amp;quot;行业里就这么干&amp;quot;的习惯：为什么丝要往复走、为什么工作液用乳化液、为什么程序是 3B、为什么脉冲参数叫规准。这些习惯多数没有文档，老工程师张口就来；问他为什么，多半答&amp;quot;一直这样&amp;quot;。但每个&amp;quot;一直这样&amp;quot;背后都有一段来历——一次事故、一个约束、一笔账。这个系列要做的正是把设计意图的源头挖出来：不光知道怎么做，还知道为什么要这么做。这篇先把整台机器本身的来历交代清楚：电火花是谁把一次电气事故变成一门工艺的，走丝怎么分出快慢两条路，为什么这种机床在中国遍地开花。这是系列最底下那层地基，&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/10.html&#34;&gt;立项篇&lt;/a&gt;交代过三句，这里展开讲透。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：G代码与3B代码详解——两代线切割程序语言的来历、格式与方言</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1209.html</link>
				<pubDate>Fri, 11 Sep 2026 12:09:47 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1209.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1153.html&#34;&gt;解析篇&lt;/a&gt;贴着实现写：词法、模态、象限重建。但留了一堆&amp;quot;是什么&amp;quot;没讲——为什么 3B 长成 &lt;code&gt;B X B Y B J G Z&lt;/code&gt; 这个怪样子，为什么坐标不带符号，为什么 G 代码要搞模态续效，线切割的 G 和铣床的 G 到底差在哪。这些问题在行业里待久了会当成理所当然，新人对着格式表背规则却不知道每条规则背后是什么约束。这篇把两代程序语言的来历、格式细节和方言地图摊开——也是给自己写解析器补的一课：看得懂格式的人多，说得清&amp;quot;为什么&amp;quot;的人少，而说不清为什么的时候，设计决定就只能拍脑袋。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：G代码与3B解析实战——模态状态机、象限重建与段表生成</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1153.html</link>
				<pubDate>Fri, 11 Sep 2026 11:53:11 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1153.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1105.html&#34;&gt;机床界面篇&lt;/a&gt;定了编程屏和仿真屏，两块屏吃的是同一样东西：段表——直线和圆弧排成的几何清单，仿真渲染它，插补执行它，运行屏显示&amp;quot;当前执行第几段&amp;quot;查的还是它。段表从哪儿来，就是这篇的事：把程序文本变成段表。&lt;/p&gt;&#xA;&lt;p&gt;程序文本有两代，都得吃。老厂里流通的存量几乎全是 3B——HF 时代三十年攒下来的程序，老师傅图纸柜里的 U 盘拷出来的全是它；新 CAD/CAM 后处理吐出来的又是 G 代码。只吃一样，机器要么接不上行业存量，要么对不上新工具。这两代语言各自的来历——3B 为什么五个字段全无符号、G 代码的模态为什么存在——单独开了一篇：&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1209.html&#34;&gt;G代码与3B代码详解&lt;/a&gt;。解析器还是应用篇里少数不依赖运动控制卡手册就能动工的模块：输入文本、输出段表，纯函数，没有硬件依赖——顺手把它做成全系统第一个能在开发机上跑 &lt;code&gt;cargo test&lt;/code&gt; 的模块，测试向量当回归资产攒起来。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：机床界面实战——从启动LOGO到锁定解锁的七块屏</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1105.html</link>
				<pubDate>Fri, 11 Sep 2026 11:05:03 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1105.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;基础篇收官时，图形系统那篇留下的东西是&amp;quot;零件&amp;quot;：渲染原语、点阵字库、控件、事件分发。但操作工坐在机床前面对的不是零件，是一块块整屏：开机看到什么、程序在哪儿编、怎么在屏幕里先走一遍、切割时盯什么、参数谁改、维护看哪儿、锁住了怎么办。这篇把应用层的界面定下来——七块屏：启动 LOGO、编程、仿真、运行、设置、维护、锁定/解锁。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：实时性验证实战——TSC延迟测量、抖动直方图与烤机准则</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1043.html</link>
				<pubDate>Fri, 11 Sep 2026 10:43:56 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1043.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;调度篇把话说出去了：硬实时层的确定性来自中断优先级和 ISR 的有界执行。话说出去要拿数据兑——客户验收、产线抽检、自己晚上睡得着，靠的都是一份测出来的延迟分布，不是&amp;quot;应该没问题&amp;quot;。测量这行的老家伙是示波器和逻辑分析仪——中断响应多少微秒，示波器一触发一目了然，就是费机器费人；软件自打点（TSC 加直方图）是嵌入式圈的长期实践，便宜、能长期挂着跑，代价是要自己证明打点本身不扰动系统。&amp;ldquo;平均值会说谎&amp;quot;这句话，服务器圈是 Google 2013 年那篇尾延迟论文点破的，工控圈不用论文点——废一个件就懂了。基础篇最后这篇就干这一件事：把&amp;quot;实时&amp;quot;两个字变成一页纸的数字。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：合规与安全控制实战——GPS地域锁、授权码体系与4G远程管控</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1041.html</link>
				<pubDate>Fri, 11 Sep 2026 10:41:21 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1041.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;机床这个行业，全款现货是理想情况。现实里大量机器是分期付款卖出去的，还有整批打包给二级经销商、经销商再租给终端客户的。机器在别人手里、钱还没收完，厂里和经销商手里就得有控制手段：GPS 知道机器在哪，授权码决定机器能干什么、能干到哪天，4G 通道把这两样送回来。这套手段没有一样是机床行业发明的：GPS 是 1973 年美国国防部立的军用项目，1995 年全面运行之后民用一发不可收拾，模块便宜到几十块钱一颗；远程锁机则是在挖掘机按揭市场先成熟的——工程机械租赁干了十几年，GPS 锁机是标配，机床照搬的是一条被验证过的路。这也是当初坚持自研&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-0951.html&#34;&gt;网络协议栈&lt;/a&gt;的原因之一——这些能力全踩在自己的 TCP/IP 上，不依赖任何第三方系统。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：国际化实战——UTF-8内码、多语言字库与locale区域设置</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1032.html</link>
				<pubDate>Fri, 11 Sep 2026 10:32:34 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1032.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;系统要卖到国外，第一屏就体现产品气质：操作工看到的是母语还是一门外语，决定他对这台机床的第一印象，也决定报警文本他能不能读懂——读不懂的报警等于没有报警。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：开机自检与固件更新实战——POST报告、A/B双槽与版本回滚</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1031.html</link>
				<pubDate>Fri, 11 Sep 2026 10:31:08 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1031.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;十五年生命周期的机器，出厂那天固件就是旧的——升级是必然，升级变砖是事故。这篇讲两件让机器活得久的事：开机自检（POST，排障第一屏）与 A/B 双槽固件更新（升级不停产）。升级入口两条：U 盘（现场，操作员插盘点确认）和网络 OTA（含 4G 远程推送，&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1041.html&#34;&gt;合规篇&lt;/a&gt;里 4G 通道复用这条路）；外加恢复出厂固件的兜底。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：参数系统与断电恢复实战——双副本参数表与加工现场快照</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1029.html</link>
				<pubDate>Fri, 11 Sep 2026 10:29:30 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1029.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;机床参数丢了意味着什么，干这行的都见过：丝筒参数不对飞车、坐标丢了对不了刀、一屋子机床挨个重新校。断电恢复是另一半：加工到一半停电，来电之后这台件是报废、续切还是回退，得是系统说了算，不是运气。&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1027.html&#34;&gt;日志系统&lt;/a&gt;解决&amp;quot;发生了什么&amp;quot;，这篇解决&amp;quot;配置与现场丢没丢&amp;quot;。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：日志系统实战——无锁环形缓冲、分级输出与断电安全落盘</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1027.html</link>
				<pubDate>Fri, 11 Sep 2026 10:27:57 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1027.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;到目前为止每篇文章的&amp;quot;跑通标志&amp;quot;都靠串口 printf 亲眼盯着——工程上这不可持续。工业系统要的是：出事后能还原现场。这篇把散落各篇的&amp;quot;记日志&amp;quot;统一成一个系统：分级、双通道（串口+盘）、ISR 可写、崩溃可救。这也是合规审计的地基——&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1041.html&#34;&gt;合规篇&lt;/a&gt;的授权解锁、所有权转移、参数修改，全都要在这里留痕。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：U盘驱动实战——USB大容量存储SCSI命令与块设备接入</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1026.html</link>
				<pubDate>Fri, 11 Sep 2026 10:26:24 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1026.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;立项清单里&amp;quot;读取 U 盘&amp;quot;是明确需求：现场拷加工程序、导出加工报表、&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-1031.html&#34;&gt;固件升级&lt;/a&gt;的入口都是它。U 盘的命令集是借来的：SCSI 的前身 SASI 是 1979 年 Shugart 给磁盘驱动器定的接口，1986 年标准化成 SCSI，在企业存储里摸爬了十几年；USB 大容量存储类没有另起炉灶，把 SCSI 命令装进 CBW/CSW 信封走批量传输——所以驱动一个 U 盘，实际写的是一套打了折的 SCSI 主机。&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-0948.html&#34;&gt;USB 协议详解&lt;/a&gt;把 CBW/CSW 的理论讲完了，&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-0941.html&#34;&gt;EHCI 篇&lt;/a&gt;有了批量传输的队列机制，&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-0943.html&#34;&gt;NVMe 篇&lt;/a&gt;立了 BlockDevice 抽象——这篇把三样东西拧起来：一个真的能挂 exFAT 的 U 盘驱动。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：内存管理器实战——物理页帧分配器、内核堆与DMA内存池</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-1023.html</link>
				<pubDate>Fri, 11 Sep 2026 10:23:35 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-1023.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;系列里&amp;quot;从内存映射里划一块&amp;quot;&amp;ldquo;DMA 池&amp;quot;&amp;ldquo;后备缓冲&amp;quot;这类说法出现过无数次，但那根负责&amp;quot;划&amp;quot;的手指——分配器本身——一直没有正面写过。这是基础篇里最大的一块地基：没有它，&lt;code&gt;Vec&lt;/code&gt;/&lt;code&gt;Box&lt;/code&gt; 用不了，网络包缓冲、字体资源、文件目录列表全都没有出处。这篇补上：从 &lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11.html&#34;&gt;UEFI 内存映射&lt;/a&gt;出发做一个物理页帧分配器，在其上搭内核堆，再划出 DMA 专用池，最后说清楚实时层为什么一分钱内存都不能现场要。这门手艺本身没有新东西可发明：位图、空闲链、伙伴系统全是六十年前就定型的方法，Knuth 的《计算机程序设计艺术》第一卷 1968 年就把这摊事讲透了；DMA 必须低地址连续内存的执念则来自 IBM PC 的 8237 控制器——24 位地址线顶到 16MB，&amp;ldquo;设备只认低地址&amp;quot;这个约束一路遗传到今天的 PCIe 设备。功夫全花在选哪门老手艺最配这台机器。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：CPU信息与多核实战——CPUID、INIT-SIPI-SIPI唤醒与双核分工</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-0954.html</link>
				<pubDate>Fri, 11 Sep 2026 09:54:06 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-0954.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;工控主板上插的是多核 CPU，我们的系统到现在只用了一颗核——固件唤醒的 BSP，第二颗核从开机起就在那儿睡觉。这篇干两件事：一是把 CPUID 用起来，CPU 什么型号、几个核、缓存多大、支持哪些指令，一条指令全问出来——自检页要显示的 CPU 信息、页帧分配器要的物理地址宽度，数据源都是它；二是把第二颗核叫醒干活，INIT-SIPI-SIPI 唤醒、每核自己的自举，然后给两颗核分好工——Core0 跑实时、Core1 跑服务，物理上的隔离比任何软件优先级方案都硬。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：平台管理实战——电源控制、风扇调速与内存信息获取</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-0953.html</link>
				<pubDate>Fri, 11 Sep 2026 09:53:04 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-0953.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;远程运维的机床，晚上加工完要能自己关机省电；风扇卡了转速掉零，报警得比冒烟早；客户报修，第一句先问&amp;quot;机器里是什么内存条&amp;quot;。这三件事落到系统上就是三个问题：电源怎么控制（软关机/重启到底写了什么寄存器）、风扇转速怎么读怎么控、内存容量和条目信息从哪来。教材不讲、教程跳过，这篇把账一次算清。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：网络驱动与协议栈实战——e1000有线网卡、USB无线路径与自研TCP/IP</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-0951.html</link>
				<pubDate>Fri, 11 Sep 2026 09:51:11 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-0951.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;盘能读写、U 盘能交换之后，还缺一条跟外界说话的路：程序下发、参数上传、车间 MES 对接、NTP 校时，后面合规篇的 4G 远程管控，载体全是网。要自研的这套东西年纪都不小：以太网是 Metcalfe 1973 年在 Xerox PARC 写进备忘录的实验，1980 年 DIX 三家（DEC/Intel/Xerox）把它定成标准；TCP/IP 是 Cerf 和 Kahn 1974 年的论文，1983 年 1 月 ARPANET 整网切换换来一战成名。半个世纪过去骨架没换，换的只是速度——自研协议栈要实现的正是这套稳定了几十年的骨架。这篇分三块：&lt;strong&gt;有线网卡驱动&lt;/strong&gt;（PCIe 以太网控制器，寄存器级）、&lt;strong&gt;无线的现实路径&lt;/strong&gt;（USB Wi-Fi 的坑与替代方案）、以及之上的&lt;strong&gt;自研 TCP/IP 协议栈&lt;/strong&gt;——延续零依赖原则，一个字节的外部代码都不引。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：显示子系统深入——EDID、模式协商、显存与品牌信息的获取</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-0949.html</link>
				<pubDate>Fri, 11 Sep 2026 09:49:04 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-0949.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;显卡实战篇（《&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/11-0936.html&#34;&gt;从GOP帧缓冲接管显示输出&lt;/a&gt;》）解决的是&amp;quot;接管帧缓冲自己画像素&amp;quot;，但顺着往下还有一串问题躲不掉：高分辨率是靠什么实现的？系统怎么&amp;quot;自动适配&amp;quot;显示器？显示器支持哪些模式从哪查？显卡的显存容量、品牌型号从哪读？——&amp;ldquo;从哪查&amp;quot;这问的标准答案是 EDID，1994 年 VESA 定的规矩：让显示器在 DDC 线上自报家门，交出 128 字节的&amp;quot;我能干什么&amp;rdquo;（后来扩到 256 字节 E-EDID）。动机很朴素：VGA 时代显示器是哑巴，刷新率给高了轻则黑屏重则伤机器，显卡只能瞎猜。这篇把这些信息问题逐个落到可操作的层面——涉及三块东西：EDID、模式协商、PCI 配置空间。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：USB协议详解——设备类、四种传输与键鼠U盘的数据通路</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-0948.html</link>
				<pubDate>Fri, 11 Sep 2026 09:48:04 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-0948.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;系列里 EHCI 篇讲了&amp;quot;怎么驱动主机控制器&amp;quot;，键鼠篇讲了&amp;quot;怎么解析报表&amp;quot;——中间那层&amp;quot;USB 协议本身怎么运作&amp;quot;一直是背景板。这层的性格全写在出身上：九十年代中期 Intel、微软、康柏这批厂商要终结&amp;quot;装机开机箱拨跳线&amp;quot;的日子，定下的却是一条 Host 主导的主从总线——设备永远被动应答、时间切固定帧，后文的规矩几乎都能从这两条推出来。这篇把它拉到前台单独讲清：设备类是什么、四种传输类型各管什么、Host 与 Device 谁说话、鼠标的坐标和键盘的键值到底是怎么一步步传回来的、U 盘的读写又是一套什么机制。这层想通了，EHCI 和键鼠两篇的代码为什么那么写、U 盘驱动为什么长那个结构，自己就能对上号。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：exFAT文件系统实战——引导扇区、目录项与掉电一致性</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-0944.html</link>
				<pubDate>Fri, 11 Sep 2026 09:44:49 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-0944.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;块设备之上要有文件系统——G 代码程序、加工参数、日志、长时间数据记录都要落在盘上，还要和 U 盘交换。这一族是 1977 年写成、随 DOS 发扬光大的：FAT 的簇链表结构简单到软盘都跑得动，1996 年的 FAT32 把分区撑到 2TB，单文件却从此卡死在 4GB——长录像、大数据记录面前的硬墙。微软 2006 年为闪存和 SD 卡设计的 exFAT 就是来拆这堵墙的，簇链的骨架留着，其余按大容量闪存重画。选 exFAT：U 盘出厂普遍格式、规范公开（微软 2019 年公开完整规范并加入 OIN 向 Linux 生态开放相关专利，自实现的授权风险显著降低；商业产品如有顾虑可让法务复核一遍专利边界）。这篇从引导扇区讲到读写路径，能给表的全给表。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：NVMe固态硬盘驱动实战——队列、PRP与块设备抽象</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-0943.html</link>
				<pubDate>Fri, 11 Sep 2026 09:43:48 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-0943.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;固态盘驱动是基础篇的倒数第二块。NVMe 名声吓人，裸机视角其实是最干净的存储协议：没有端口 IO、没有 ATAPI 历史包袱，一切都是 MMIO 寄存器和内存队列。干净不是偶然：SATA 时代的命令协议 AHCI 是 2004 年照着机械硬盘设计的，单命令队列、逐条排队，闪存根本吃不满；2011 年 Intel 牵头攒起 NVMe 联盟，直接按 SSD 的并行性重新设计——多队列、深队列、寄存器直达，机械时代的包袱一样没背。这篇从 BAR0 一直写到块设备抽象，寄存器表和命令格式全给。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：键盘与鼠标驱动实战——USB HID Boot协议解析与输入事件管道</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-0942.html</link>
				<pubDate>Fri, 11 Sep 2026 09:42:46 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-0942.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;EHCI 立起来之后，这篇写键盘和鼠标的驱动——USB HID class 实战。键鼠对工控系统不是小事：没有它们就没有参数输入和菜单操作。这两样东西的历史也比 USB 长：1987 年 IBM 在 PS/2 机型上把键盘鼠标定成中断驱动的扫描码接口，驱动几十行就写完；USB 时代它们变成通用总线上的一个设备类，为了描述千奇百怪的输入设备，HID 规范设计了自描述的报表描述符——通用性的代价是把解析器变成一个小型语言实现。这篇走的是&lt;strong&gt;Boot Protocol 路线&lt;/strong&gt;：绕开报表描述符解析，把 HID 驱动从&amp;quot;大工程&amp;quot;变&amp;quot;小函数&amp;quot;。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：USB 2.0主机控制器实战——EHCI驱动、传输队列与设备枚举</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-0941.html</link>
				<pubDate>Fri, 11 Sep 2026 09:41:45 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-0941.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;键盘、鼠标、U 盘都骑在 USB 上，这条&amp;quot;骑得上去&amp;quot;的路是 1996 年修的：Intel、微软、康柏那批公司受够了插个外设要开机箱拨跳线，联手定了 USB；2000 年 USB 2.0 把速度抬到 480Mbps，主机控制器规范 EHCI 由 Intel 主导，全速低速留给伴手的 UHCI/OHCI——这个分工就是下面那个矛盾的前传。这篇啃 USB 栈的地基——主机控制器驱动。先说清一个绕不开的事实：&lt;strong&gt;USB 2.0 的主机控制器规范是 EHCI，但 EHCI 只管高速（480Mbps）设备&lt;/strong&gt;；键盘鼠标偏偏是低速（1.5Mbps）/全速（12Mbps）设备，这个矛盾得先解决。照例给到寄存器级。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：PCIe总线枚举实战——ECAM配置空间、BAR探测与MSI配置</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-0938.html</link>
				<pubDate>Fri, 11 Sep 2026 09:38:46 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-0938.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;自研的 GD32F4+FPGA 运动控制卡和 NVMe 固态盘都挂在 PCIe 总线上，用之前得先把它们找出来。PCIe 本身就是&amp;quot;被逼出来&amp;quot;的总线：1992 年的 PCI 是共享并行总线，设备一多频率就上不去，2003 年 PCI-SIG 用串行点对点加交换结构把它整个重做——今天枚举的这棵树就是那场重做的遗产。枚举用的两件工具也各有来历：老配置空间访问走 CF8/CFC 端口，天生 256 条总线的天花板，PCI 固件规范为此补了内存映射的 ECAM；MSI 是 PCI 2.2 引入的消息式中断，设备写一笔内存就算发中断，比拉物理中断线省引脚也好扩展。这篇做 PCIe 枚举：从 MCFG 拿 ECAM 基址、深度优先走拓扑、探测 BAR、使能设备、配好 MSI。枚举产物是一张设备清单，后面 NVMe 驱动和运动控制卡驱动都从这里起步。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：图形系统实战——2D渲染、中文点阵字体、控件与事件分发</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-0937.html</link>
				<pubDate>Fri, 11 Sep 2026 09:37:45 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-0937.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;画布（&lt;code&gt;Screen&lt;/code&gt;）之上没有任何 UI 基础设施——没有窗口系统、没有字体、没有控件库，全部自己建。要建的东西里最老的两样各有来历：画斜线的 Bresenham 算法是 1962 年 Jack Bresenham 在绘图仪时代发明的，整数增量、零浮点——那年头浮点运算贵得要用在刀刃上；中文显示走点阵则踩着 1980 年代国产微机汉卡的老路，当年在几百 KB 内存里显示汉字，点阵是唯一现实的选择。这篇把图形系统搭起来：2D 渲染原语、中文点阵字体、控件模型、事件分发，全部跑在协作式主循环里。目标界面在写代码前就该想清楚：一块坐标/进度区、一排规准与状态灯、一条报警栏、几个按钮和编辑框——就这些，没有窗口拖拽没有多层叠加。工业界面长什么样，决定这套系统长什么样：中文、高对比、状态一目了然。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：Intel集成显卡实战——从GOP帧缓冲接管显示输出</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-0936.html</link>
				<pubDate>Fri, 11 Sep 2026 09:36:43 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-0936.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;工控机上电，操作工看到的第一样东西是画面。这篇记录的就是显示输出怎么接手。接手用的 GOP 有来历：UEFI 接 BIOS 班时，把实模式 INT 10h/VBE 那套点亮屏幕的调用换成了结构体加函数指针的图形输出协议，帧缓冲地址和模式信息从它手里直接拿。对面的 Intel 核显同样有故事——2010 年前后（Arrandale/Clarkdale 起）显示单元并进了 CPU 封装，从此在 Intel 平台长期占着 bus0:dev2:func0 的固定座位。固件用 GOP 把屏幕点亮、谈好模式，把帧缓冲的物理地址交出来；固件退场之后，显示引擎的 pipe/plane/PLL 配置原样留着继续扫描，Intel 核显在我们这儿就是一个&lt;strong&gt;已经点亮的扫描输出引擎&lt;/strong&gt;，配置一行不用碰。剩下的活看着只有一件——往那块内存里写像素——但真写稳了才知道，像素格式、行距、这块内存的来路、为什么慢、怎么变快，一个都绕不过去。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：APIC定时器与系统时间实战——寄存器级配置、HPET校准与RTC读写</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-0935.html</link>
				<pubDate>Fri, 11 Sep 2026 09:34:46 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-0935.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;调度篇（&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/10-1743.html&#34;&gt;中断驱动的硬实时层与协作式主循环&lt;/a&gt;）承诺&amp;quot;硬实时层的确定性来自中断优先级&amp;quot;，这篇兑现它：屏蔽 PIC、启用 APIC、配置定时器、校准频率，最后加上工业系统天天要用的&lt;strong&gt;系统时间读写&lt;/strong&gt;（RTC/CMOS 实操）。全部给到寄存器级。这条时间线上的每个部件都有来历：8259A 是 Intel 1976 年给 8080 配的中断控制器，PC/AT 上两片级联管 15 路中断一用四十年；APIC 体系是九十年代为多处理器机器生的，最早是主板上的外置 82489DX，Pentium 起把 Local APIC 塞进 CPU，多核时代每核一份；HPET 是 Intel 和微软 2000 年代联手定的规范，接 1981 年 IBM PC 那颗 8253/8254 PIT 的班——DOS 时代 18.2Hz 的系统节拍就是 PIT 传下来的祖制；RTC 则从 PC/AT（1984）起蹲在 CMOS 里，靠纽扣电池活到今天。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：CPU自举实战——重建GDT/IDT、TSS专用栈与中断框架</title>
				<link>https://blog.grabbyte.com/p/2026/09/11-0934.html</link>
				<pubDate>Fri, 11 Sep 2026 09:34:45 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11-0934.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;上一篇拿齐家产、退出了启动服务，但 GDT/IDT 还是固件的——住在&amp;quot;别人留下的房子&amp;quot;里，位置内容不受控，指向的内存随时可能被复用。这篇接管 CPU 底层机制：重建 GDT、给安全中断配专用栈、装上自己的 IDT 和异常处理。这一篇做完，调度篇定义的 &lt;code&gt;isr_safety&lt;/code&gt;/&lt;code&gt;isr_discharge&lt;/code&gt;/&lt;code&gt;isr_motion&lt;/code&gt; 才有地方挂。照例，细节讲到可以直接抄的程度。要重建的这几张表没有一样是新鲜东西，全是八十年代的层积：分段和描述符表是 80286 保护模式的遗产，386 引入分页后段机制退居幕后，x86-64 长模式干脆把基址和限长拍平，只留 FS/GS 还在干线程局部存储这类杂活；中断向量表从 8086 固定在地址 0 处的 1KB IVT，进化成 80286 起可以挪窝的 IDT；TSS 生来是硬件任务切换的载体，后来没有人真用硬件切任务，只剩 IST 专用栈这一个功能还在服役。重建它们不是因为它们好用，是 CPU 上电就只认这几张表。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：UEFI固件层实战——手写FFI绑定与ExitBootServices权力交接</title>
				<link>https://blog.grabbyte.com/p/2026/09/11.html</link>
				<pubDate>Fri, 11 Sep 2026 09:34:44 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/11.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;《&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/10.html&#34;&gt;自制工业控制系统：从UEFI到内核&lt;/a&gt;》定下了路线：零外部 Cargo 依赖，与固件打交道的这一层参考 &lt;code&gt;r-efi&lt;/code&gt; 手写 FFI 绑定，代码全部 vendor 进自己的仓库。这篇把这个系列真正的第一步展开：从 UEFI 应用入口写起，拿齐所有&amp;quot;过了这村没这店&amp;quot;的资源，最后调用 &lt;code&gt;ExitBootServices()&lt;/code&gt; 完成固件到系统的权力交接。这一篇的目标是：照着做就能跑。权力交接为什么长这个样子，有段来历：BIOS 是 1981 年 IBM PC 的遗产，16 位实模式加 1MB 地址空间的假设，靠 INT 10h/13h 这类软中断服务往后缝缝补补撑了近二十年；九十年代末 Intel 给 64 位安腾平台做启动方案，发现这套底子实在撑不住，1998 年立项 EFI 推倒重来，2005 年捐给 UEFI 论坛变成开放标准——今天的主板固件几乎清一色是它。我们手写 FFI 对接的不是某家厂商的私有接口，是这份二十多年没换过骨架的行业标准。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：中断驱动的硬实时层与协作式主循环——两级调度模型设计</title>
				<link>https://blog.grabbyte.com/p/2026/09/10-1743.html</link>
				<pubDate>Thu, 10 Sep 2026 17:43:37 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/10-1743.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;《&lt;a href=&#34;https://blog.grabbyte.com/p/2026/09/10.html&#34;&gt;自制工业控制系统：从UEFI到内核，为线切割机全自研专用系统的立项与技术选型&lt;/a&gt;》定了整体方向——用现代技术栈做一个不受第三方系统限制、又不用做得那么复杂的专用工业系统。调度模型是这个系统里最容易被想得过于复杂的一块：一提到&amp;quot;操作系统调度&amp;quot;，很容易联想到 Linux CFS 那种复杂的多级反馈队列，或者实时操作系统教科书里一整套优先级继承、优先级天花板协议。这套东西对一台专用机床控制系统来说，大部分是不需要的负担。优先级继承和天花板协议是上世纪八十年代 RTOS 研究为治互斥锁上的优先级反转发明的药，1997 年火星探路者栽在这病上（低优先级的气象任务卡住高优先级的总线任务，整机被看门狗复位）之后才广为人知——可见药再好，病根是&amp;quot;任务共享锁&amp;quot;这个前提本身。工控行业自己还有一支更朴素的血统：前后台系统，主循环转着干杂活、中断干要紧事，DOS 时代 HF 那类线切割控制柜跑了几十年就是这个结构。这篇定下这台线切割机控制系统实际要用的调度模型：&lt;strong&gt;不是纯抢占式也不是纯协作式，是按任务的实时性要求分成两级，各自用最简单够用的机制&lt;/strong&gt;——把那支老血统在现代硬件上重新讲一遍。&lt;/p&gt;</description>
			</item>
			<item>
				<title>自制工业控制系统：从UEFI到内核，为线切割机全自研专用系统的立项与技术选型</title>
				<link>https://blog.grabbyte.com/p/2026/09/10.html</link>
				<pubDate>Thu, 10 Sep 2026 14:09:47 +0800</pubDate>
				<guid>https://blog.grabbyte.com/p/2026/09/10.html</guid>
				<description>&lt;h1 id=&#34;起因&#34;&gt;起因&lt;/h1&gt;&#xA;&lt;p&gt;前两篇整理了现代 UEFI 平台的真实工作方式，讲清楚了固件自己怎么跑起来、GOP/PCIe/NVMe 这些设备怎么被固件认出来。写完之后决定往前走一步：把这套认知真正落地成一个能用的东西——&lt;strong&gt;从 UEFI 到内核全部自己写的线切割机工业控制系统&lt;/strong&gt;。这个系列从这篇开始，记录整个项目从立项到落地的技术决策和实现细节。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
