300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 嵌入式 Linux 启动流程和 bootloader 介绍

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

时间:2020-07-12 03:01:56

相关推荐

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

目录

嵌入式 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;

加载 Linux kernel 到 RAM,至此系统控制权则转移到 kernel 来处理。

四、Linux Kernel

系统 Kernel 初始化 Linux,加载 rootfs,最后启动 ’init’ 来初始化 Linux user space

五、不同的OS

Android、Yocto、ubuntu、fedora

PS:

一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:

1、引导加载程序。包括固化在固件(firmware)中的boot代码(可选),和 BootLoader 两大部分。(bootROM,uboot)

2、Linux内核。特定于嵌入式板子的定制内核以及内核的启动参数。(Linux kernel)

3、文件系统。包括根文件系统和建立于 Flash 内存设备之上文件系统。通常用 ramdisk 来作为 rootfs。

4、用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI有:MicroWindows 和 MiniGUI 等。

BootLoader 是一段小程序,主要功能是引导操作系统启动。可以把它想象成 PC 机 Linux 上的 GRUB/LILO 引导程序,只不过在嵌入式 Linux 中,没有 BIOS,而是直接从 flash 中运行,来装载内核。它可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。

Bootloader 简介

由上面的介绍可以知道:Bootloader主要是在系统加载前,初始化硬件设备,建立内存空间的映像图,为最终调用系统内核准备好环境。

市面上可见的 bootloader

开放源码的Linux引导程序

从处理器支持的情况来看,仅 U-Boot 和 RedBoot 对三种架构的处理器都支持,在嵌入式领域比较流行的处理器架构是 ARM 和 PowerPC。RedBoot 的构建必须要基于 eCOS 环境下,这是其一大劣势,对于开发者而言,需要切换环境是一项比较挠头的事情。U-Boot 项目源于 PowerPC,后又兼并了 ARM Boot 项目。这也是为什么 U-Boot 能在 PowerPC 和 ARM 两种架构中得以流行的关键推动因素。

在 Android运行环境中里没有硬盘,而是 ROM,它类似于硬盘存放操作系统,用户程序等。

ROM 跟硬盘一样也会划分为不同的区域,用于放置不同的程序。

android系统分区:

更多信息可以参考如下链接:

参考:

/p/262047203

/p/265672867

/p/75039ea24937

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。