文章标题:聊一聊 MilkV-Duo 的启动流程
文章大纲
Milk-V Duo 是一个基于 CV1800B 芯片的超紧凑嵌入式开发平台。它有两个 RISC-V 核,可以分别运行 Linux 和 RTOS(譬如 FreeRTOS),为专业人士、工业 ODM、AIoT 爱好者、DIY 爱好者和创作者提供了一个可靠、低成本和高性能的平台。具体参考 官网介绍。
MilkV Duo 支持安全启动(Secure Boot)的概念,并且借用了 ARM 下的 Trusted Firmware 技术。本文先简单介绍一下什么是安全启动以及 ARM 提出的用于安全启动的 Trusted Firmwar 技术,最后基于以上概念介绍了 MilkV Duo 的安全启动流程。
安全启动流程,也称为安全启动、安全引导或可信启动,是一种用于确保计算机系统在启动时运行的固件和软件是受信任的、未被恶意篡改的机制。该机制旨在保护计算机系统免受恶意软件和恶意攻击,最终保护用户的隐私和计算机系统的安全性。
安全启动流程的基本原理是在系统启动时从 BootROM 开始逐级检查启动固件或者软件的完整性和真实性,以确保它们是由授权的、可信任的实体签名的。以一个简单的典型嵌入式系统的启动流程为例,这个过程包括以下步骤(注意不同的系统的启动流程可能不同,下图只是简单示意一下所谓的逐级启动和验证的概念):
(1)计算机上电,CPU 将 ROM 中的 Boot (习惯上也称 BootROM)指令加载到 SRAM 中执行,Boot 指令会对硬件进行自检,以确保它们都能正常工作。
(2)BootROM 将 Boot Loader 从 Flash 加载到 DRAM 中,同时检查其完整性和真实性,以确保它没有被篡改。验证通过后跳转到 Boot Loader 开始执行。
(3)Boot Loader 负责将 Operating System 从 Flash 中加载到 DRAM 中,检查其完整性和真实性,通过后跳转到 Operating System 的入口,操作系统开始执行。
(4)操作系统负责执行其他的应用程序并验证其安全性。
通过这些步骤,从 ROM 中的 Boot(我们也常称之为 BootROM)开始,逐级通过 Boot Loader、以启动操作系统。我们假设 Boot Loader 和 Operating System 镜像都被保存在 Flash上,则在启动时,各级启动程序都需要从 Flash 中加载下一级启动镜像。安全启动流程确保了计算机系统在启动时的安全性和完整性,并防止了恶意软件和攻击者对计算机系统的篡改和入侵。
Arm 通过一个名为 Trusted Board Boot Requirements (TBBR)(即 Arm Trusted Firmware (ATF) 安全启动)的架构定义了一个可信启动过程。TBBR 的工作原理是,验证一系列加密签名的二进制镜像,每个镜像都包含系统启动过程中需加载和执行的不同阶段或元素。每个启动加载程序 (BL) 阶段都会完成初始化过程中的不同阶段, 下面列举了整个 ATF 冷启动实现分为 5 个步骤以及对应的 Bootloader 固件:
Duo 的安全启动流程参考了 ATF 的实现并将其移植到 RISC-V 上。
根据 ATF 的规范定义,所有固件可以统一打包成单独的符合 FIP (Firmware Image Package) 格式的二进制文件。该文件 Duo 命名为 fip.bin
。fip.bin
文件中包含了以下内容:
Duo 上电后,首先从大核 C906B 开始启动,顺序如下图所示:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。