Slim Bootloader:专为物联网应用量身定制
由于物联网设备存储空间有限,成本要求严苛,因此Bootloader需要满足占用空间小、功能安全、极速启动等需求。英特尔Slim Bootloader 就是专为物联网应用案例量身定制,是一款开源的启动固件解决方案,当系统上电时负责初始化系统的核心硬件组件,然后加载和启动所需要的操作系统。
从构建之初,Slim Bootloader就考虑了安全性、轻量级和高度优化,可以利用EDK II框架中的强大工具和库,可以根据系统的特殊需求进行隔离、配置和优化,从而达到优异的启动性能,并最大限度地减少固件所占用的空间。同时具有模块化、可扩展设计的优点,根据源版本实现产品质量参考,BSD许可证开源,实际产品可能会根据不同的许可证发布。
Intel物联网部门 Bootloader 的架构原则是通过简单灵活的架构实现快速广泛的采用,并利用内部和外部开发社区,以安全为基础进行设计和开发。
在设计中,Slim Bootloader具有几大优势:
简单快速,线性执行流程实现可预测性,通过FSP API将复杂的芯片初始化代码进行抽象,包括TempRamInit, FspMemoryInit, FspTempRamExit, FspSiliconInit, NotifyPhase;
具有灵活性,将初始化代码分成具有标准化接口的模块化阶段:– Stage1A (SRAM/Flash) => Stage1B (Flash/CAR) => Stage2 (MEM),且不同的Payload用于引导不同的OS或应用程序;
可移植性,核心代码高度模块化,通过提供不同的静态库,不同的开发板/芯片可以用过hook函数实现平台相关的初始化;配置(内置或外置)支持多种开发板;
利用经过验证的代码,FSP二进制文件,以及已被验证的BIOS中的平台库(例如:GPIO init);
编译框架,支持多种OS(Windows 和 Linux)和多种工具链;
安全性,通过Intel®BootGuard实现基于硬件的启动完整性保护的安全启动,支持verified boot和Measured boot。
下面针对初始化阶段和启动阶段分别讲述Slim Bootloader的优势:
初始化 阶段
高级架构
如上图所示,系统的初始化阶段,电路板和芯片初始化,包括资源分配,GPIO、ACPI等。Payload阶段包括通用媒介驱动、自定义功能、特定的OS加载协议等。其中*OS loader是默认Payload,也支持使用其他的payload。
启动阶段:
启动阶段
如图所示,启动阶段包括第1A阶段、第1B阶段、第2阶段、有效负载阶段。在第1A阶段,通过汇编代码重置矢量阶段,进行基本初始化,包括设置临时存储器、调试输出;在第1B阶段,进行内存初始化,加载配置数据;在第2阶段,进行PostMemory,芯片初始化、ACPI,PCI枚举等;OsLoader / FWU 有效负载包括操作系统启动逻辑和 媒体 驱动程序。
Slim Bootloader可以利用EDK2构建基础架构,支持Windows和Linux环境,支持多种平台,支持多个目标(D / R);必备工具包括VisualStudio(Windows)、GCC工具链(Linux)、NAMM、Python、iASL、OpenSSL;由pythonBuildLoader.py构建qemu,图片存放于Slimbootloader.bin中。
另外,Payload提供灵活的基础架构来扩展功能,英特尔SlimBootloader执行基础硬件初始化;有效负载执行特定的加载/引导。可以看出,Payload是一个模块化组件,能够轻松更改默认有效负载,有效负载可以高度定制,以提供所需的确切功能;Payload可以是通用引导加载程序或特殊用途的特殊应用程序。