嵌入式 Linux 启动流程和 bootloader 介绍

嵌入式Linux系统启动涉及BootROM、SPL、uboot和Linux Kernel等多个阶段。Bootloader初始化硬件,加载Kernel,为系统运行做准备。常见Bootloader如U-Boot,初始化DDR,设置硬件参数,加载Kernel。Linux Kernel接着初始化并启动rootfs。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

嵌入式 Linux 启动流程

简介

启动流程

Bootloader 简介

市面上可见的 bootloader


入式 Linux 启动流程

简介

对于一个 SoC 芯片而言,bootloader 必不可少。因为一个 SoC 芯片一定不是独立存在的,它的载体是经过严格设计的一块硬件电路板。从电路板上电到 SoC 可以执行 Linux Kernel 并最终挂载文件系统,需要在不同阶段执行不同的特定代码。

SoC 上电伊始,根据设定的启动方式,在合适的地方运行 BootRom 代码,用于对 SoC 做一个最基本最简单的初始化。这是 SoC 执行的第一个程序。

当 SoC 执行完 BootRom 程序后,需要初始化与电路板相关的各种外设等,此时需要一份 Bootloader 来完成此项工作。

当电路板初始化完成后,SoC 可以执行任何的程序,包括加载 Kernel 以及文件系统等。

当然,若 SoC 内部 RAM 足够大同时又不考虑启动的灵活性,则完全可以将 BootRom 做成 bootloader,用于加载 Linux Kernel。

启动流程

一、硬件上电

二、一级启动:bootROM

    Boot ROM 是厂商都无法进行更改,固化在芯片内部的ROM;

    作用:确定用于启动的设备;从启动的设备的位置搬移一小段代码(4k/8k/16k)到RAM中运行,即SPL。

三、二级启动:SPL + uboot

1. SPL: Secondary Program Loader:

    作用:初始化 DDR;从启动的设备搬移第二段代码到 RAM 中,加载 uboot(有些 SoC 是将 bootloader 复制到 RAM 后,再进行 DDR 初始化)。

2. uboot: Universal boot loader:

    U-Boot 从启动设备上面读取、分析环境变量获得 kernel 和 rootfs 存储位置,以及所需的 kernel command line;

    自动检测系统 RAM 和 eMMC/Nand Flash 容量和参数;

    设置以太网口 MAC 地址,并配置好硬件准备加载 Linux kernel;

  &n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值