<?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%A3%B8%E6%9C%BA%E5%BC%80%E5%8F%91/</link>
		<description>Recent content in 裸机开发 on 软件开发大郭的技术博客</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<lastBuildDate>Fri, 11 Sep 2026 09:41:45 +0800</lastBuildDate>
		
			<atom:link href="https://blog.grabbyte.com/tags/%E8%A3%B8%E6%9C%BA%E5%BC%80%E5%8F%91/index.xml" rel="self" type="application/rss+xml" />
			<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>自制工业控制系统：图形系统实战——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>自制工业控制系统：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>
	</channel>
</rss>
