Chrome AP 固件拥抱 x86_64 架构

主要观点:文档详细介绍了在 Chrome AP 固件中成功实现 64 位启动支持(x86_64 架构)以启动 ChromeOS 设备,包括动机、背景、概述、详细实现、对比分析和总结等方面。

关键信息

  • 传统 32 位架构有 4GB 内存限制,无法满足现代硬件需求,64 位架构可突破内存限制。
  • 因英特尔 SoC 架构发展,需要更多硬件资源,而现有系统固件对 x86_64 支持有限。
  • 在各个启动阶段面临关键技术变化,如在 Cache-as-RAM 模式下启用 64 位模式等。
  • 实现了 64 位架构下的多项目标,包括在不同模式下的切换、支持 SoC API 等。
  • 详细说明了在 coreboot、libpayload 和 depthcharge 等中的代码修改和实现细节。
  • 对比分析了 32 位和 64 位构建在 SPI 闪存大小和启动性能方面的差异,虽 SPI 闪存有约 0.5MB 增长,但启动性能无明显下降。

重要细节

  • [USE_X86_64_SUPPORT]和[HAVE_X86_64_SUPPORT]Kconfig 用于支持 x86_64 平台。
  • 在 x86_64 长模式下,需按特定步骤过渡,包括启用 PAE、设置 EFER 等。
  • 页表在 64 位架构中用于虚拟到物理内存映射,coreboot 支持两种页表创建逻辑。
  • 核心启动阶段到负载的控制转移在不同模式下有不同方式,libpayload 实现了统一入口点。
  • depthcharge 也进行了代码修改以支持 x86_64 架构,包括处理固件-shell 命令等。
  • 启动时在 32 位和 64 位模式下的 FSP 时间等方面进行了对比分析。
阅读 12
0 条评论