ARM架构SOC运行Linux的典型启动流程

ARM架构SOC运行Linux的典型启动流程

对于运行linux的ARM架构的SOC来说,典型的启动流程应该从上电开始。通常经过:上电复位、Boot模式选择、Boot ROM加载、Boot Flash加载、Bootloader加载、Linux内核加载、Linux内核启动、用户空间初始化、用户空间运行。

一、上电复位

当 SOC上电时,复位电路工作,硬件会执行一系列初始化操作,并将处理器复位到初始状态。

二、Boot模式选择

在启动过程中,SOC会根据boot引脚或boot配置寄存器的状态选择合适的 boot 模式。不同的 boot 模式决定了从哪个设备(如SD/EMMC、 NAND Flash、 QSPI Flash等)加载引导加载程序和内核。

三、Boot ROM加载

在 ARM 架构的 SOC中,Boot ROM 是一个固化在 SOC 内部的只读存储器。它是在 SOC上电后最早执行的固化代码(该代码SOC出厂自带,开发者不可更改),负责基本的硬件初始化和引导加载程序的启动。

四、Boot Flash加载

Boot Flash 是一种非易失性存储器,通常用于存储引导加载程序和内核镜像。Boot ROM 会根据 boot 模式的选择从 Boot Flash 中加载Bootloader程序的镜像文件。

五、Bootloader加载

Bootloader程序是一个位于 Boot Flash 中的软件程序,负责系统的进一步初始化和启动。Boot ROM 会将控制权转交给Bootloader程序,并执行Bootloader程序的初始化代码。

六、Linux内核加载

该阶段会从 目标存储设备 中读取内核镜像文件,并将其加载到内存中的指定位置。通常,Bootloader程序还会进行一些硬件初始化,如初始化内存控制器、外设等。

七、Linux内核启动

该阶段 Bootloader程序 会将控制权转交给Linux内核,启动Linux内核的执行。Linux内核开始执行后,会进行一系列初始化操作,包括初始化设备驱动程序、建立内存映射等。

八、用户空间初始化

Linux内核完成初始化后,会启动用户空间初始化过程,包括启动 init 进程(通常是 systemd 或 sysvinit),加载用户空间的程序和服务。

九、用户空间运行

一旦用户空间初始化完成,系统就进入正常运行状态,用户可以登录并执行各种应用程序。

十、小结

上述启动流程是一个典型的 ARM 架构 SoC 启动 Linux 的过程,具体的实现可能会因不同的硬件和系统配置而有所差异。

通过 boot 模式选择合适的引导加载程序路径;Boot ROM 负责最早的硬件初始化和引导加载程序的启动;Boot ROM 从 Boot Flash 中加载引导加载程序(Bootloader)的镜像文件,并将控制权转交给引导加载程序(Bootloader);引导加载程序(Bootloader)负责进一步的初始化和加载Linux内核镜像,最终启动Linux内核和用户空间运行。

你可能感兴趣的:(嵌入式,学习日记,Linux,arm开发,linux,SOC启动流程,ARM架构SOC启动流程,SOC上电启动流程)