论文部分内容阅读
Unified Extensible Firmware Interface(UEFI)是由Intel提出的下一代计算机固件接口标准。旨在糅合现代软件工程思想以及设计方法,构建出一个灵活、健壮、易扩展、可重用、方便开发和维护的固件开发框架。Intel在UEFI框架的基础上,通过开源社区提供了一套UEFI开发包(EDK, EDK2)及多种UEFI模拟平台的实现样例。DUET平台包含在UEFI开发包中,是一种不同于其它运行在操作系统层次上模拟平台的UEFI模拟平台,其明显的特点是再封装传统BIOS产生的ACPI表中的各种函数及系统调用、形成UEFI Framework所需要的各种系统接口,从而运行在实际硬件平台之上。针对其特点,该模拟平台的设计和实现充分的重用了EDK2 Core中的Library以及Module,以便在最大程度上简化代码和工作量。本文主要研究了DUET平台引导程序的功能,设计思路及实现方法。讨论了DUET平台和基于UEFI Framework的平台之间的区别与联系。然后展开讨论了基于MBR和GPT的Boot Sector的设计、如何实现相关工具将Boot Sector写入到启动介质的相关扇区、同时提出了如何编写Shell Script及编译工具编译整个工程。本文深入描述了从传统BIOS启动完成之后跳转到DUET平台引导程序执行启动介质的Boot Sector、跳转保护模式、解压缩需要执行的DXE镜像,并准备DXE镜像所执行的Memory、Stack并以HOB的方式传递给DXE Entrypoint。分析了整个DUET平台的内存映射、以及DxeIPL和EFI Loader的实现方式及如何重用传统BIOS提供的系统调用。