- 固件
- 嵌入式
- 操作系统
- 驱动开发
【免费下载链接】coreboot
Read-only mirror of https://review.coreboot.org/coreboot.git. Synced every hour. We don't handle Pull Requests.
本文基于 coreboot 官方文档 Documentation/mainboard/hp/compaq_pro_6300_series.md 及其在仓库中的主板移植代码,系统梳理 HP Compaq Pro 6300 系列(Microtower 与 Small Form Factor 两种形态)在 coreboot 下的支持现状、硬件平台构成、构建要点以及从原厂固件刷入 coreboot 的完整操作方法。读完本文,你将了解该机型的可用硬件功能边界,掌握基于 flashrom 的内部/外部刷写流程(包括 FDO 跳线解除写保护等关键细节),并能结合仓库源码理解该移植背后的设备树与 SuperIO 配置。
一、机型概述:两种形态,同一块主板
HP Compaq Pro 6300 系列是 HP 面向商用市场的桌面机,分为Microtower(MT)与Small Form Factor(SFF)两个版本,二者共享同一块主板的维护与维修指南。依据文档记录:
- 主板编号:657239-001
- 维护与服务指南编号:690362-003 / c04034127
- 该 coreboot 移植在SFF 机型上完成了实测验证
在仓库的 Kconfig 中,该机型对应的配置项为BOARD_HP_COMPAQ_PRO_6300(描述为 "Compaq Pro 6300 SFF/MT",见 src/mainboard/hp/snb_ivb_desktops/Kconfig.name),发布年份 2012(见 variants/compaq_pro_6300/board_info.txt)。它属于snb_ivb_desktops(Sandy Bridge / Ivy Bridge 桌面平台)家族,与 Compaq 8200/8300 Elite、Z220 工作站共享同一套公共移植代码。
二、功能支持矩阵:可用、未测与不可用
该移植在 SFF 机型上实测验证了相当广泛的硬件功能,文档明确列出的支持项包括:
- CPU:i3-3220、e3-1225v2(Sandy Bridge / Ivy Bridge 系列)
- Payload:SeaBIOS(rel-1.16.3-0-ga6ed6b70)、EDK2(MrChromebox/2502)
- 操作系统引导:Fedora-mate(Linux 内核 6.11.4、6.13.6)、KDE neon(Linux 内核 6.8.0 / 6.11.0)
- 内存:从单条 4GB 到总计 24GB 的混合配置,兼容 1.35v 与 1.5v 内存条
- 板载设备:集成以太网、串口、PS/2 键盘鼠标、集成显卡(DisplayPort 与 VGA 输出)
- 显示初始化:libgfxinit 文本模式(SeaBIOS)与 framebuffer 模式(EDK2)
- 独立显卡:通过 SeaBIOS / EDK2 可显示引导画面(需启用
LOAD_OPTION_ROMS=TRUE) - 存储与扩展:全部 SATA 端口、全部 USB2/USB3 端口、PCI 插槽(实测 Realtek RTL8169 GbE 网卡)、PCIe 3.0 x16(实测 Intel X540-AT2 10GbE、nVidia GeForce 6200 LE / GT640-2GD3)、PCIe 2.0 x1(实测 Realtek RTL8125 2.5GbE、Intel 82574L 1GbE)
- 音频:板载内置扬声器(操作系统内可正常播放音乐)、前面板音频口(前置耳机口会覆盖内置扬声器;TRRS 二合一插头仅麦克风可用)、背板音频口
- 传感器:CPU 温度传感器及 4 条 DIMM 槽上的 jc42-i2c 温度传感器
- 系统功能:USB / SATA(HDD/DVD)引导、硬盘与电源 LED(挂起时闪烁)、关机/重启/挂起/唤醒(USB 键盘与 LAN 唤醒)
- 安全:精简 Intel ME/TXE 固件并隐藏 MEI 设备(相关做法可参考 Documentation/northbridge/intel/sandybridge/me_cleaner.md)
尚未测试:并行端口(Parallel port)。值得注意的是,仓库的 devicetree.cb 中已将 NPCD378 SuperIO 的 LDN1(并行端口)配置为启用状态(I/O 基址 0x378、IRQ 7、DMA 1),说明固件侧配置已就绪,仅缺少实机验证结论。
确认不可用:集成显卡与独立显卡的同时使用。文档未记录其余已知故障。
三、技术平台:Sandy Bridge 世代硬件组合
文档给出的 Technology 表描述了该机型的硬件平台构成:
| 部件 | 型号/实现 |
|---|---|
| Northbridge | Intel Sandy Bridge(对应文档 Documentation/northbridge/intel/sandybridge/index.md) |
| Southbridge | bd82x6x(Q75,Intel C216 芯片组) |
| CPU | model_206ax(Sandy Bridge / Ivy Bridge 微架构) |
| SuperIO | Nuvoton NPCD379(注:代码中实际使用 NPCD378 驱动) |
| EC | 无 |
| Coprocessor | Intel ME |
这里有一个值得注意的细节:主板文档的 Technology 表将 SuperIO 标注为NPCD379,而仓库代码实际接入的是NPCD378驱动(SUPERIO_NUVOTON_NPCD378,见 Kconfig),对应的 SuperIO 文档为 Documentation/superio/nuvoton/npcd378.md。可以推断 NPCD379 与 NPCD378 在寄存器层面高度兼容,移植中直接复用了后者经逆向工程的驱动。该文档同时指出,NPCD378 广泛出现在各类 HP 主板上,且由于没有公开数据手册,其多数功能是逆向工程得出的,可能存在不准确之处。
在构建配置层面(Kconfig),该机型继承BOARD_HP_SNB_IVB_DESKTOPS_COMMON,并额外选择:
BOARD_ROMSIZE_KB_16384:固件 ROM 16 MiBSOUTHBRIDGE_INTEL_C216:对应 Q75/C216 南桥(不同于同系列 8200 Elite 使用的 BD82X6X 与 8 MiB ROM)
公共配置还启用了USE_NATIVE_RAMINIT(原生内存初始化,不经 FSP/原厂 MRC)、MAINBOARD_HAS_LIBGFXINIT(libgfxinit 图形初始化)、MEMORY_MAPPED_TPM与MAINBOARD_HAS_TPM1(内存映射 TPM)、HAVE_ACPI_TABLES/HAVE_ACPI_RESUME、INTEL_GMA_HAVE_VBT等。
3.1 设备树中的关键配置
变体 overridetree.cb 记录了该机型具体的板载资源映射:
- SATA:
sata_port_map = "0x17"表示实现端口 0(蓝色)、1(白色 #1)、2(白色 #2)、4(黑色 eSATA),端口 3、5 未实现;sata_hotplug_map = "0x10"为端口 4 启用了热插拔。 - USB:
superspeed_capable_ports = "0xf"与xhci_switchable_ports = "0xf",并给出 14 个usb_port_config条目(含各端口 OC 引脚与位置编号),对应"全部 USB2/USB3 端口可用"的实测结论。 - 子系统 ID:
subsystemid 0x103c 0x339a inherit(HP 厂商 ID 0x103c)。
基板 devicetree.cb 则定义了全局资源,包括 Sandy Bridge 北桥的 SPD 地址映射(0x53, 0x52, 0x51, 0x50,BTX 主板的反向映射)、PCH 的 LPC 译码窗口、SATA 速度支持(0x3)、SPI 读写状态寄存器配置(spi_lvscc/spi_uvscc = "0x2005"),以及 NPCD378 SuperIO 的完整 LDN 配置:
- LDN1(并行端口):I/O 0x378
- LDN2(COM1):I/O 0x2f8
- LDN3(COM2/IR):I/O 0x3f8
- LDN4(LED 与电源按钮控制):I/O 0x600/0x610,其中 IOBASE[0h] bit0 控制 LED 红/绿、bit1-4 为 LED PWM 占空比(这正是文档 TODO 中"高级 LED 控制"尚未实现的基础设施)
- LDN5/LDN6(PS/2 鼠标、键盘)
- LDN7(WDT):I/O 0x620
- LDN8(HWM 硬件监控):I/O 0x800
- LDN 0xf / 0x15 / 0x1c / 0x1e(GPIO、I2C、挂起控制等):多个经逆向推断的功能块
SuperIO 的 LDN 分工可对照 Documentation/superio/nuvoton/npcd378.md 中的 LDN 表理解。
3.2 早期初始化、GPIO 与音频
- early_init.c 在 bootblock 阶段通过 NPCD378 的 SP2 逻辑设备(
PNP_DEV(0x2e, NPCD378_SP2))启用串口,仅在CONFIG(CONSOLE_SERIAL)开启时生效——这是文档"串口可用"的底层来源。 - gpio.c 定义了 PCH 三组 GPIO(Set1/Set2/Set3)的模式、方向、电平与反相配置,覆盖 75 个引脚,用于引导早期完成板载信号初始化。
- hda_verb.c 提供两段 HDA verb:Realtek ALC221(0x10ec0221,子系统 0x103c339a)与 Intel HDMI 音频(0x80862806),对应文档中"内置扬声器与前后面板音频"的实测结果。
- mainboard.c 安装了 Intel VGA int15 handler,并在启用 SMBIOS 时为设备写入 type 38(IPMI 设备信息)记录。
- cmos.default 给出了该机型的默认 CMOS 选项:
sata_mode=AHCI、gfx_uma_size=32M、hyper_threading=Enable、nmi=Enable、boot_option=Fallback等。
四、固件刷写:从原厂 BIOS 切换到 coreboot
4.1 闪存芯片参数
该机型的 SPI 闪存规格如下(此信息同样记录在 board_info.txt 中):
| 参数 | 值 |
|---|---|
| Socketed flash(可插拔) | 否 |
| 型号 | MT25Q128A |
| 容量 | 16 MiB |
| In-circuit flashing(在板刷写) | 支持 |
| 封装 | SOIC-16 |
| 写保护 | 有 |
| Dual BIOS | 无 |
| 内部刷写 | 支持 |
16 MiB 的 ROM 大小与 Kconfig 中BOARD_ROMSIZE_KB_16384完全对应。
4.2 内部刷写:FDO 跳线解除写保护
文档确认该机型支持内部刷写:使用 flashrom 即可访问 SPI 闪存,但在原厂固件环境下存在写保护。关键操作步骤是:
- 在主板上靠近后置 USB3 端口的位置找到 FDO(Flash Descriptor Override)引脚;
- 使用跳线帽短接 FDO 引脚,临时禁用写保护;
- 在原厂固件下用 flashrom 刷入 coreboot 镜像;
- coreboot 安装完成后取下跳线帽。
参考通用 flashrom 内部刷写用法(具体命令以实际 flashrom 版本与总线检测结果为准):
$ flashrom -p internal -w coreboot.rom注意:原厂固件对 BIOS 区域通常还有 SPI 保护范围限制。若遇到区域级写保护,可能需要先借助 IFD(Flash Descriptor)相关手段调整布局;同系列 Compaq 8200 SFF 的文档(Documentation/mainboard/hp/compaq_8200_sff.md)详细记录了利用 IFD 缩小 ME 区域、移动 BIOS 区域的"两阶段刷写"流程,可作为操作参照。
4.3 外部刷写:SPI 编程器与 Pomona 夹
如果内部刷写受限,也可以采用外部编程器方案。文档给出两条重要提示:
- 供电余量:外部编程器会同时给整个南桥复合体供电,因此编程适配器必须能提供足够的电流,否则刷写过程中可能因供电不足而失败。
- 空间限制:若使用 SOIC Pomona 测试夹(test clip)夹持闪存,必须切除第二条 DRAM DIMM 插槽的支架,否则闪存附近空间不足、夹具无法就位。该操作具有物理破坏性,动手前需确认自己能够接受这一改动。
外部刷写示例(编程器型号与 flashrom 的 programmer 参数需按实际硬件填写):
$ flashrom -p <programmer> -c MT25Q128A -w coreboot.rom其中<programmer>按你所用的 SPI 适配器选择,如linux_spi、buspirate_spi、ch341a_spi等,-c指定芯片型号为 MT25Q128A。更多 flashrom 用法可参考仓库 util/cbfstool 等固件工具链资料。
五、已知不足与后续工作(TODO)
文档明确列出该移植仍缺失的功能,也是社区后续贡献的切入点:
- 扩展硬件监控上报(Extended HWM reporting):NPCD378 的 HWM 空间(LDN8,I/O 0x800)支持 16 个页面,但目前仅逆向确认了极少数寄存器(如 Page 1 偏移 0x98 的 PSU 风扇 PWM,见 Documentation/superio/nuvoton/npcd378.md),大量寄存器仍未知;
- 高级 LED 控制:LDN4 已暴露 LED 红/绿切换与 PWM 占空比寄存器(见 devicetree.cb 中 0x600/0x610 的注释),但尚未实现完整的控制逻辑;
- S3 中的高级电源配置:挂起/唤醒已可用,但更细粒度的 S3 电源策略尚未实现。
六、总结
HP Compaq Pro 6300 系列是 coreboot 对 Sandy Bridge 世代 HP 商用桌面机支持较为完善的移植之一:绝大多数板载功能(存储、USB、音频、传感器、独立显卡引导、ME 精简等)均已实测可用,仅剩并口未验证、集显独显无法同用,以及若干"锦上添花"的高级功能待社区补全。刷写路径上,内部 FDO 跳线法与外部 SPI 编程器法均有明确操作指引,唯一需要留意的是写保护解除与供电余量两个细节。若你手头正好有一台 SFF 形态的 Compaq Pro 6300,按照本文第三节的构建配置与第四节刷写流程即可完成 coreboot 迁移,并在 SeaBIOS 或 EDK2 下获得完整的开源固件体验。
- 固件
- 嵌入式
- 操作系统
- 驱动开发
【免费下载链接】coreboot
Read-only mirror of https://review.coreboot.org/coreboot.git. Synced every hour. We don't handle Pull Requests.
相关推荐
HP Compaq Elite 8300 USDT 刷写 coreboot 实战指南:Sandy Bridge 平台移植、刷写与固件细节解析
HP Compaq Elite 8300 USDT 刷写 coreboot 实战指南:Sandy Bridge 平台移植、刷写与固件细节解析 导读 :本文以 c
固件嵌入式操作系统驱动开发coreboot 刷机实战:HP Compaq 8200 Elite SFF 移植与固件烧录完全指南
coreboot 刷机实战:HP Compaq 8200 Elite SFF 移植与固件烧录完全指南 本篇技术指南以 coreboot 官方移植文档为主体,讲解
固件嵌入式操作系统驱动开发coreboot 移植指南:在 HP Pro 3400 / 3500 系列台式机上刷写与运行 coreboot
coreboot 移植指南:在 HP Pro 3400 / 3500 系列台式机上刷写与运行 coreboot 本篇指南以 Documentation/main
固件嵌入式操作系统驱动开发
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考