主要观点:文档详细介绍了在 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 时间等方面进行了对比分析。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。