系统固件开发:LinuxBoot与混合固件模型的应用
1. LinuxBoot详细实现
为遵循为所有计算机设计LITE固件的原则,本次案例研究聚焦于在固件空间中,用Linux内核和用户空间,结合更新的片上系统(SoC)和平台,替换复杂且冗余的内核功能,如网络启动驱动、块设备驱动、音频驱动和通用输入输出(GPIO)驱动。采用上游Linux内核使得该方案更具可扩展性,因为它已支持CPU供应商推出的任何新SoC,以及通用的驱动实现,如块设备、网络启动和音频驱动。
此项目旨在将开发从使用特定负载(Depthcharge)的coreboot迁移至LinuxBoot,从而使底层平台无需修改系统固件即可运行任何版本的Linux运行时内核。以下是实现该目标所需的更改:
1.1 用LinuxBoot负载替换Depthcharge
Depthcharge是用于启动Chrome OS的官方负载,包含许多特定于供应商的固件驱动。与Tianocore或LinuxBoot负载相比,它在运行时配置方面存在很大不足。作为Chrome栈中的独立二进制文件,Depthcharge会导致芯片组初始化冗余,需要额外的补丁来支持新的SoC和主板。在嵌入式系统中,启动时间至关重要且闪存空间宝贵,Depthcharge这种缺乏操作系统级智能的固件块会增加系统固件启动过程的冗余度。
LinuxBoot作为系统固件映像的一部分,驻留在SPI闪存中,用Linux内核替换了冗余的类操作系统功能。这一迁移还消除了只能启动到Chrome OS的限制,使系统能够启动其他版本的Linux,如Yocto、Ubuntu,甚至Microsoft Windows。
在本案例研究中,我们
LinuxBoot与混合固件模型应用
超级会员免费看
订阅专栏 解锁全文
23

被折叠的 条评论
为什么被折叠?



