资讯动态

coreboot 移植实战:Kontron COMe-mAL10 平台的构建、刷写与硬件监控配置指南

发布时间:2026/10/14 21:06:37 来源:尧图企业网站定制
固件嵌入式操作系统驱动开发【免费下载链接】corebootRead-only mirror of https://review.coreboot.org/coreboot.git. Synced every hour. We dont handle Pull Requests.项目地址https://gitcode.com/gh_mirrors/co/coreboot点击查看免费下载本文以 coreboot 官方文档 Documentation/mainboard/kontron/mal10.md 为主体结合仓库中 src/mainboard/kontron/mal10 的完整板级源码系统讲解 Kontron COMe-mAL10 嵌入式模块在 coreboot 下的构建流程、SPI 刷写方法、NCT7802Y 硬件监控驱动配置以及 CPLD/EC 与 FSP 电源管理等底层实现细节。读完本文你将掌握如何为这块基于 Intel Atom E3900 系列的迷你 COMe 模块编译与刷写 coreboot 固件并能读懂其设备树与初始化代码的每一处关键配置。平台概述Atom E3900 驱动的迷你 COMe 模块Kontron mAL10 是一块信用卡大小的 Computer-on-ModulesCOMe平台采用 mini pin-out type 10 接口核心 SoC 为 Intel Atom 系列含 Pentium 与 Celeron 衍生型号。其完整技术规格如下表摘自原文档技术项规格COMe 类型mini pin-out type 10SoCIntel Atom x5-E39404 核GPUIntel HD Graphics 500协处理器Intel TXE 3.0RAM8GB DDR3LeMMC Flash32GB eMMC pSLCUSB3x2USB2x6SATAx2LANIntel I210IT、I211ATSuper IO/ECKontron CPLD/ECHWMNCT7802板卡信息在 src/mainboard/kontron/mal10/board_info.txt 中登记为Vendor 为 KontronCategory 为 miniROM 协议为 SPI、不可插座化ROM socketed: n、支持 flashrom 刷写Flashrom support: y发布于 2019 年。值得注意的硬件细节是Apollo Lake 系列 Pentium/Celeron/Atom 处理器不支持 PECI因此 CPU 温度无法通过 PECI 接口读取而是取自紧贴 CPU 放置的热敏电阻NTC。板级源码结构variant 与 carrier 双层组织从仓库源码看mAL10 的移植采用 coreboot 常见的 模块variant 载板carrier 双层结构目录 src/mainboard/kontron/mal10 下包含variants/mal10/COMe 模块本体的设备树、GPIO、VBT 与 libgfxinit 显示配置carriers/t10-tni/Kontron 官方参考载板 Ref.Carrier-i T10-TNI 的 override 设备树与 GPIO公共的bootblock.c、romstage.c、ramstage.c、mal10.fmd、cmos.layout与 DSDT。这种拆分在 Kconfig 中有明确体现板卡选项为BOARD_KONTRON_COME_MAL10下方提供choice让用户在构建时选择载板默认BOARD_KONTRON_T10_TNI即 Kontron Ref.Carrier-i T10-TNI并分别通过CONFIG_VARIANT_DIR与CONFIG_CARRIER_DIR决定DEVICETREE与OVERRIDE_DEVICETREE指向哪个目录。这意味着未来新增其他载板时只需在carriers/下添加新目录并扩展该 choice 即可源码中也留有# TODO: Add a new carrier boards here注释。构建 coreboot命令、Kconfig 依赖与替代路径原文档给出的三行构建命令即可产出可用镜像make distclean make defconfig KBUILD_DEFCONFIGconfigs/config.kontron_mal10 make需要说明的适用前提文档引用的configs/config.kontron_mal10defconfig 文件并未收录在当前镜像仓库的 configs 目录中因此如果你克隆的是本仓库可改用等价的交互式方式构建即make distclean make menuconfig # 在 Mainboard 菜单中选中 Kontron COMe-mAL10 make选中板卡后Kconfig 中的BOARD_SPECIFIC_OPTIONS会自动拉取一组关键依赖帮助理解该板移植的技术栈SOC_INTEL_APOLLOLAKEApollo Lake SoC 支持BOARD_ROMSIZE_KB_1638416MB 板载 SPI FlashDRIVERS_I2C_NCT7802Y硬件监控驱动EC_KONTRON_KEMPLDKontron CPLD/EC 驱动HAVE_ACPI_TABLES/HAVE_ACPI_RESUMEACPI 表与 S3 恢复支持INTEL_GMA_HAVE_VBT与MAINBOARD_HAS_LIBGFXINITIntel 显卡 VBT 与 libgfxinit 初始化路径ONBOARD_VGA_IS_PRIMARY板载图形作为主显示CRB_TPMTPM 2.0 支持。支持的 Payload原文档明确列出三种可选的 payloadSeaBIOSedk2以 Linux 作为 payload 直接引导内核。Flash 布局FMAP16MB SPI Flash 的布局定义在 mal10.fmd可直接看出固件分区策略SI_DESC0x1000 描述符区、SI_BIOS0xefe000内含 IFWI 0x2ff000 与 OBB 0xbff000、SI_DEVICEEXT设备扩展区。其中 OBB 内部包含 FMAP、三块 MRC 缓存RECOVERY/RW/RW_VAR、CONSOLE 日志区以及核心的COREBOOT(CBFS)区。UNIFIED_MRC_CACHE的存在说明该板支持 MRC 缓存以加速内存初始化详见下文 romstage 配置。刷写固件通过 flashrom 写入 BIOS 区域由于板载 SPI Flash 不支持热插拔更换ROM socketed: n原文档推荐使用 flashrom 在系统内直接访问 SPI 控制器进行刷写命令如下$ flashrom -p internal --ifd -i bios -w coreboot.rom --noverify-all参数含义拆解-p internal使用系统内部编程器即主板上的 SPI 控制器--ifd -i bios遵循 Intel Flash Descriptor仅操作bios区域避免触碰描述符与 ME/TXE 区域-w coreboot.rom写入编译产物--noverify-all跳过对未写入区域的校验。注意该命令会实际写入固件操作前请确认已完整备份原始固件。硬件监控NCT7802Y 驱动的传感器与智能风扇配置原文档对硬件监控 IC 的描述Nuvoton NCT7802Y 可监控电源电压、风扇转速与温度等关键系统参数远程输入可连接 CPU/GPU 热敏二极管或任意热敏二极管与热敏电阻传感器并提供6 路温度传感器5 路电压传感器3 路风扇转速传感器4 组温度设定点。由于 Apollo Lake 不支持 PECICPU 温度改由紧贴 CPU 的 NTC 热敏电阻提供这决定了驱动配置中必须使用远程热敏电阻模式而非 PECI 模式。设备树中的 NCT7802Y 配置在 variants/mal10/devicetree.cb 的 SMBUS 控制器pci 1f.1下NCT7802Y 以drivers/i2c/nct7802y挂在 I2C 地址0x2e上。传感器配置如下register sensors { .local_enable 1, .rtd[2] RTD_VOLTAGE_MODE, .rtd[1] RTD_VOLTAGE_MODE, .rtd[0] RTD_THERMISTOR_MODE, }结合驱动头文件 src/drivers/i2c/nct7802y/chip.h 可解读RTD_THERMISTOR_MODE即远程热敏电阻模式对应CPU 温度取自 NTC的设计RTD_VOLTAGE_MODE为电压模式.local_enable 1启用本地温度传感器。智能风扇Smart Fan温度-转速表同一设备树中对 FAN0 与 FAN1 配置了完整的智能风扇策略核心是 4 点温度-转速表与临界温度register fan[0].mode FAN_SMART register fan[0].smart.mode SMART_FAN_RPM register fan[0].smart.tempsrc TEMP_SOURCE_REMOTE_1 register fan[0].smart.table { { 49, 0 }, { 50, 6350 }, { 70, 9550 }, { 90, 12750 } } register fan[0].smart.critical_temp 95对照 chip.h 中的枚举可知FAN_SMART为智能温控模式SMART_FAN_RPM表示表格中的目标值以 RPM 计区别于SMART_FAN_DUTY的占空比百分比温度源可选TEMP_SOURCE_REMOTE_1/2/3、TEMP_SOURCE_LOCAL等table[4]固定为 4 组(temp, target)点。FAN0 以 REMOTE_1远端热敏电阻为温度源FAN1 则使用TEMP_SOURCE_LOCAL本地温度两者临界温度均为 95°C。该驱动仅实现 coreboot 主板当前使用到的功能子集源码注释Implements only those parts currently used by coreboot mainboards代码位于 src/drivers/i2c/nct7802y/nct7802y.c 与 nct7802y_fan.c。底层实现剖析从 bootblock 到 FSP 配置bootblockCPLD/EC 的 LPC 解码与串口启用bootblock.c 在 early init 阶段完成两件关键事一是通过lpc_open_pmio_window(0x0A80, 2)为 Kontron CPLD 打开 LPC I/O 窗口二是调用lpc_io_setup_comm_a_b()与kempld_enable_uart_for_console()启用串口控制台。这对应原文档Tested and working列表中 Kontron CPLD/EC 的串口功能。romstageDDR3L 内存参数与 MRC 快速启动romstage.c 的mainboard_memory_init_params()填充 FSP-M 内存参数DDR3LPageSize 2、禁用双列DualRankSupportEnable 0、DIMM0/DIMM1 的 SPD 地址分别为0xA0/0xA4并开启MrcFastBoot 1——与 fmd 中的UNIFIED_MRC_CACHE分区相呼应将内存初始化结果缓存起来以加速后续启动。ramstage电源管理与中断控制器覆盖ramstage.c 的mainboard_silicon_init_params()依据 AMI UEFI v112 的 BIOS Setup 设置配置了完整的 CPU 电源管理启用 Cx 状态与 C1e、MaxCoreCState 3最大 Core C-State 为 C6、启用 LPSS S0ixLPSS_S0ixEnable 1、InitS3Cpu 1S3 恢复时初始化 CPU对应原文档中 S3 支持计划。源码中还带有一条重要警告注释切勿修改PkgCStateLimit否则系统退出省电模式时 SoC 功耗会尖峰导致 COMe 模块上 DC-DC 转换器输出出现电压跌落——该参数在 AMI BIOS 中也仅展示而不允许修改。此外该函数还覆盖了 HPET 与 IOAPIC 的总线/设备/功能号与 IOAPIC ID。设备树要点外设开关与载板覆盖模块本体 variants/mal10/devicetree.cb 启用了 VTDenable_vtd 1、DPTFdptf_enable true、两条 SATA 端口、四路 PCIe-A 与一路 PCIe-B均禁用 CLKREQ、XHCI、eMMC、SD 卡、PWM以及 LPC 下的 Kontron kempld EC。EC 子设备中配置了 2 路 UARTIO 地址0x3F8/IRQ 4 与0x2F8/IRQ 3、I2C 总线KEMPLD_I2C_FREQ_FAST_MODE_400KHZ以及 8 路 GPIO前 4 路输入、后 4 路输出低电平。相关枚举定义在 src/ec/kontron/kempld/chip.h。载板 T10-TNI 的 overridetree.cb 则覆盖了 USB 配置usb_config_override 1USB2 端口 0–5 使能并关联 OC1 过流保护、端口 6/7 跳过USB3 端口 0/1 使能并关联 OC0同时重新指定各 PCIe Root Port 的 CLKREQ 引脚并关闭音频控制器pci 0e.0 off注释# TODO: Audio。显示与 ACPI显示方面variants/mal10/gma-mainboard.ads 声明 libgfxinit 的探测端口为DP1与eDPVBT 数据位于 variants/mal10/data.vbt。ACPI 方面dsdt.asl 引入了 Apollo Lake 的 northbridge/southbridge 模板与 DPTF 支持DPTF 专用表在 acpi/dptf.asl。CMOS 默认值cmos.default设定了 115200 波特率、Info 级调试日志与power_on_after_fail Enable。测试状态与待办事项原文档如实记录了该移植的成熟度边界已测试可用Tested and workingKontron CPLD/EC串口、I2C 端口、GPIONCT7802Y 硬件监控USB2/3千兆以太网口eMMCSATAPCIe 端口IGD/DP 显示。未测试UntestedIGD/LVDSSDIO。待办TODO板载音频codec 为 IDT 92HD73C1X5当前在载板设备树中被禁用与 overridetree.cb 中的pci 0e.0 off一致S3 挂起/恢复源码已具备HAVE_ACPI_RESUME与InitS3Cpu等基础但尚未完全验证。在参考此移植开发自有载板或复现固件时请以上述测试矩阵为准避免将未测试项当作可用功能。小结Kontron COMe-mAL10 是 coreboot 中一个结构清晰的 Apollo Lake 嵌入式平台移植范例它以 variant/carrier 双层设备树优雅解耦了 COMe 模块与载板的差异以 NCT7802Y 驱动完整展示了热敏电阻取温与 4 点智能风扇表的实际配置方法并在 FSP 参数层面对 Apollo Lake 的电源管理陷阱如 PkgCStateLimit给出了可落地的工程约束。对于需要为自家 COMe 载板适配 coreboot 的开发者本文所述的构建、刷写与配置流程可直接复用。赞分享固件嵌入式操作系统驱动开发【免费下载链接】corebootRead-only mirror of https://review.coreboot.org/coreboot.git. Synced every hour. We dont handle Pull Requests.项目地址https://gitcode.com/gh_mirrors/co/coreboot点击查看免费下载相关推荐coreboot 移植 Framework Laptop 13 ProSakura硬件支持、构建与刷写实战指南coreboot 移植 Framework Laptop 13 ProSakura硬件支持、构建与刷写实战指南 本文以 coreboot 仓库中 Docu固件嵌入式操作系统驱动开发ASUS P8Z77-V LE PLUS 的 coreboot 移植实战刷写方法、PCIe 槽位配置与硬件监控详解ASUS P8Z77 V LE PLUS 的 coreboot 移植实战刷写方法、PCIe 槽位配置与硬件监控详解 本文基于 coreboot 仓库中的主板文固件嵌入式操作系统驱动开发coreboot 在 Facebook Monolith 平台上的移植与固件刷写指南coreboot 在 Facebook Monolith 平台上的移植与固件刷写指南 本指南围绕 coreboot 对 Facebook Monolith 主板固件嵌入式操作系统驱动开发上一篇xonsh 历史记录History完全指南JSON/SQLite 双后端、命令动作与底层实现解析下一篇swagger-codegen 属性命名转换机制解析以 Java Jersey1 客户端 Capitalization 模型为例创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑