自制工业控制系统:Intel集成显卡实战——从GOP帧缓冲接管显示输出
起因
工控机上电,操作工看到的第一样东西是画面。这篇记录的就是显示输出怎么接手。接手用的 GOP 有来历:UEFI 接 BIOS 班时,把实模式 INT 10h/VBE 那套点亮屏幕的调用换成了结构体加函数指针的图形输出协议,帧缓冲地址和模式信息从它手里直接拿。对面的 Intel 核显同样有故事——2010 年前后(Arrandale/Clarkdale 起)显示单元并进了 CPU 封装,从此在 Intel 平台长期占着 bus0:dev2:func0 的固定座位。固件用 GOP 把屏幕点亮、谈好模式,把帧缓冲的物理地址交出来;固件退场之后,显示引擎的 pipe/plane/PLL 配置原样留着继续扫描,Intel 核显在我们这儿就是一个已经点亮的扫描输出引擎,配置一行不用碰。剩下的活看着只有一件——往那块内存里写像素——但真写稳了才知道,像素格式、行距、这块内存的来路、为什么慢、怎么变快,一个都绕不过去。