You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在EDK2中启用I2C配置?Minnowboard Max平台问题求助

I2cDxe驱动支持性检查失败的解决方案

问题背景

使用\MdeModulePkg\Bus\I2c\I2cDxe驱动,通过load I2cDxe.efi命令加载后,I2cHostDriverSupported和I2cBusDriverSupported均返回Unsupported。代码显示这两个函数分别尝试打开gEfiI2cBusConfigurationManagementProtocolGuid和gEfiI2cEnumerateProtocolGuid协议,平台为Minnowboard Max,基于edk2-platform\Vlv2TbltDevicePkgX64开发。


问题1解答:I2cHostDriverSupported执行前是否需要主机配置?

  • 不需要提前配置从机地址、频率:I2cHostDriverSupported仅做协议存在性检查,验证系统中是否有I2C控制器驱动发布了gEfiI2cBusConfigurationManagementProtocolGuid协议,和具体的设备配置参数无关。
  • 参考示例:
    • 查看EDK2源码中MdeModulePkg\Bus\I2c下的驱动实现,了解I2C总线驱动与控制器驱动的交互逻辑;
    • 参考Vlv2TbltDevicePkgX64中板级I2C控制器驱动的初始化流程,这类驱动会先完成硬件初始化,再发布gEfiI2cBusConfigurationManagementProtocolGuid协议,之后加载I2cDxe即可通过支持性检查。

问题2解答:Minnowboard Max平台的配置调整方案

要让两个函数返回EFI_SUCCESS,核心是确保所需的协议被正确发布,具体步骤如下:

  1. 启用板级I2C控制器驱动
    确认Vlv2TbltDevicePkgX64\Bus\I2c\I2cControllerDxe驱动已添加到平台DSC文件的编译列表,且在FDF文件中设置为早于I2cDxe加载——该驱动负责初始化Minnowboard Max的I2C硬件并发布gEfiI2cBusConfigurationManagementProtocolGuid协议。
  2. 验证硬件描述的正确性
    检查平台的ACPI表(DSDT)或设备树,确保I2C控制器的基地址、中断号、时钟频率等硬件参数与Minnowboard Max的实际硬件匹配,错误的参数会导致控制器驱动初始化失败,无法发布协议。
  3. 检查协议发布状态
    在UEFI Shell中执行dmpstore -guid gEfiI2cBusConfigurationManagementProtocolGuid和dmpstore -guid gEfiI2cEnumerateProtocolGuid命令,确认这两个协议已存在。如果不存在,查看控制器驱动的初始化日志(可通过UEFI调试串口输出),定位硬件初始化失败的原因。
  4. 调整驱动加载顺序
    在平台FDF文件中,将I2cDxe的加载项放在板级I2C控制器驱动之后,确保I2cDxe加载时所需的协议已经被发布。

内容的提问来源于stack exchange,提问作者gordontcp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 22:10:31