Skip to content

Latest commit

 

History

History
16 lines (11 loc) · 1.19 KB

20220528-boot.md

File metadata and controls

16 lines (11 loc) · 1.19 KB

对启动流程的全面理解

所谓启动流程,就是逐步启动计算机的更多硬件,提供更越来越复杂的支持,以便运行越来越通用,要求也越来越高的软件的过程。

对于一个一般的开发板来说,纯粹从硬件层面考虑,启动流程至少分为 2 步:

  1. BROM 是固化的最早引导程序,用于从 Flash/SD/eMMC 搬运下一阶段引导程序到片内的 SRAM。
  2. SRAM 只有 32KiB,其中运行的是可烧录的自定义程序。在这段程序中可以初始化各种外设,主要是其他程序的存储介质和大容量的 DDR。 然后可以读取下一阶段的程序到 DDR 运行。

所谓步骤,都是由具体硬件制约的。 CPU 无从得知自己连接了什么样的主存,因此固化的程序就不能假设主存存在,只能使用片上固定的 SRAM。 因为要固定在片上,SRAM 就不可能很大。 因为 SRAM 不够大,在其上就只能运行一个很简单的程序,刚好足够初始化大容量的随机存储器。

如果有必要,主存上有额外的步骤。对 RISC-V 来说,还需要先启动一个 SBI 制造特权态环境,再启动一个操作系统制造用户态环境。