嵌入式Linux 系统组成

本文详细比较了BIOS和UEFI、grub2与bootmgr在引导过程中的作用,并深入解析了u-boot在嵌入式系统中的关键角色。介绍了Linux内核、根文件系统和应用程序在嵌入式Linux系统中的组成,以及开发流程的关键步骤。
摘要由CSDN通过智能技术生成

三种系统组成图

嵌入式Linux系统和PC完整的操作系统的对比如下:

// 可以看到我们嵌入式arm 上的 u-boot 同时替代了 BIOS  和 grub2(bootmgr)的功能 ,下面我们来进行一些详细的介绍


1. BIOS和UEFI的作用:


a. 进行硬件自检,检测内存,CPU,显卡,硬盘等设备的状态和配置。
b. 设置启动顺序,选择从哪个设备加载引导程序,如硬盘,U盘等。
c. 加载引导程序,如bootmgr,grub2等,然后由引导程序加载操作系统,如Windows,Linux等。
d. UEFI是BIOS的一种升级替代方案。UEFI本身已经相当于一个微型操作系统。
 --> BIOS是legecy -- 已过时但因使用范围广而难以替代的

2. grub2和bootmgr:


a. grub2是GNU项目开发的一种通用的引导加载器,它可以引导多种不同的操作系统,包括
Linux,Windows,FreeBSD等。
b. bootmgr是Windows版本的引导加载器,它只能引导Windows系统或者其他使用MBR分区表的系统。
b. grub2和bootmgr都可以通过chainloader命令来加载对方的引导文件,从而实现多重引导。
c. 加载引导程序,如bootmgr,grub2等,然后由引导程序加载操作系统,如Windows,Linux等。

GNU 补充

GNU(GNU's Not Unix)是一个自由的操作系统,其内核是Linux。GNU计划,又称革奴计划,是由理查德·斯托曼在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。GNU是“GNU's Not Unix”的递归缩写。UNIX是一种广泛使用的商业操作系统的名称,而GNU的设计类似于UNIX,但是GNU不含有UNIX的代码,并且是使用公开开发源码模式开发的。

GNU计划包括各种命令行工具、库和编译器。GNU的许多工具软件都以GNU项目为名,例如GNU编译器集(GNU Compiler Collection,GCC)、GNU调试器(GNU Debugger,GDB)等。GNU计划得到了联合国教科文组织,以及世界各地电脑使用者的支持。GNU计划本身并不包括Linux内核,但是GNU计划采用了Linux内核。GNU计划开发了许多其他的软件,包括Emacs编辑系统、GNU C编译器GCC、以及GNU的C库——glibc。

总之,GNU计划是为了创造一个与UNIX兼容的自由软件系统而设立的。在GNU计划中,除了核心系统(包括编译器、调试器、文本编辑器、网络工具等)之外,还提供了大量的应用程序,这些程序可以覆盖大多数用户的日常使用需求。


3. U-boot:


a.uboot是一种用于嵌入式系统的引导加载器,它可以支持多种硬件平台和架构,如ARM,MIPS,
PowerPC等.
b. uboot可以提供BIOS和grub2的功能,它可以初始化硬件设备,设置启动顺序,加载引导文件,
启动操作系统,或者进入命令行模式


 u-boot简介

uboot是一种通用的引导加载程序,它可以用于多种嵌入式系统,支持多种操作系统,如Linux, Android,NetBSD等。uboot的主要作用是将操作系统内核从存储设备(如Flash, SD卡等)加载到内存中,并执行内核代码。


 XIP设备

XIP设备是指一种可以直接在存储器中执行程序代码的设备,而不需要将代码复制到内存中。XIP的全称是eXecute In Place,即芯片内执行。像片内的SRAM, NOR Flash, BROM等。

 为什么需要u-boot

因为嵌入式系统的硬件资源有限,CPU上电后只能执行一小段内置的代码(BROM System),这段代码不足以完成内存初始化,文件系统访问,网络通信等复杂的任务。因此,需要一个中间层的程序,来完成这些工作,并引导操作系统启动。

U-boot 启动流程

图解:

文字描述:

在H616 SOC的启动过程中,u-boot的流程大致如下:

  1. 启动阶段(SPL)
    • 系统首先执行SPL(Secondary Program Loader)程序。这通常是存储在BROM(Boot Read-Only Memory)中的一段小程序,负责完成最基本的硬件初始化,例如DRAM的初始设置等。
  2. SPL程序执行
    • SPL程序从BROM中启动后,会进行必要的硬件初始化。其中,可能包括DRAM(在此例中为LDDR)的进一步配置和测试。
  3. 加载uboot SPL到SRAM
    • SPL程序接下来会将uboot的SPL(Secondary Program Loader)部分从存储介质(如Flash)中加载到SRAM(Static Random-Access Memory)中。这一步是为了给后续的uboot主体程序提供基本的运行环境。
  4. 执行uboot SPL
    • 在SRAM中加载完成后,系统开始执行uboot SPL。uboot SPL会进行更详细的硬件初始化和配置,例如设置串口、网络等。
  5. 加载uboot proper到DDR
    • uboot SPL执行完毕后,会将uboot的主体部分(uboot proper)从存储介质中加载到DDR(Dynamic Random-Access Memory)中。DDR是主存储器,具有更高的存储容量和速度。
  6. 执行uboot proper
    • uboot proper在DDR中加载完成后,系统开始执行uboot proper。uboot proper是u-boot的主要部分,它负责完成系统的最终初始化,如加载设备树(device tree)、挂载文件系统(在这里是根文件系统,位于mmcblk1分区)等。
  7. 启动操作系统
    • 在uboot proper完成所有初始化任务后,它会根据配置加载并启动操作系统。这通常涉及从指定的存储介质(如Flash、硬盘或网络)中读取操作系统的镜像文件,并将其加载到内存中,然后跳转到操作系统的入口点开始执行。

整个u-boot流程从简单的硬件初始化开始,逐步加载和配置系统,最终启动操作系统,为设备提供完整的运行环境。

嵌入式Linux系统组成深度解析

在今天的科技世界中,嵌入式系统无处不在,从智能家居设备到工业自动化,从可穿戴设备到医疗设备,嵌入式系统都在默默地发挥着作用。而嵌入式Linux,作为嵌入式系统领域的一个重要分支,因其开源、可定制、性能稳定等优点而备受青睐。本文将带你深入了解嵌入式Linux系统的组成。

一、嵌入式Linux系统概述

嵌入式Linux系统是将Linux操作系统裁剪并移植到嵌入式设备中,以实现对设备的控制和管理。与传统的Linux系统相比,嵌入式Linux系统更加精简、高效,能够满足嵌入式设备对资源、功耗和实时性的要求。

二、嵌入式Linux系统组成

1. 硬件平台

嵌入式Linux系统的硬件平台通常由微处理器、存储器、输入输出设备、网络接口等部分组成。其中,微处理器是系统的核心,负责执行程序和控制设备。存储器用于存储程序和数据,包括RAM、ROM、Flash等类型。输入输出设备用于实现人机交互,如键盘、显示器、触摸屏等。网络接口则用于实现设备之间的通信。

2. Bootloader

Bootloader是嵌入式Linux系统的引导加载程序,负责初始化硬件设备、建立内存空间映射图,为操作系统内核的启动做好准备。Bootloader通常与硬件平台紧密相关,不同的硬件平台可能需要使用不同的Bootloader。

3. Linux内核

Linux内核是嵌入式Linux系统的核心部分,负责管理系统的硬件资源提供设备驱动、实现进程调度、内存管理、文件系统等功能。嵌入式Linux内核通常采用裁剪和定制的方式,以减小系统体积、提高性能。

4. 根文件系统

根文件系统是嵌入式Linux系统的软件平台,包含了操作系统所需的程序、库、配置文件等。在嵌入式系统中,根文件系统通常存储在Flash、SD卡等存储设备中。为了减小系统体积,嵌入式Linux系统通常使用轻量级的文件系统,如ext2、JFFS2等。

5. 应用程序

应用程序是嵌入式Linux系统的最终表现形式,用于实现设备的特定功能。根据设备的需求,可以开发各种类型的应用程序,如网络协议栈、图形用户界面、设备驱动等。这些应用程序通常运行在用户空间,通过系统调用与内核进行交互。

三、嵌入式Linux系统开发流程

嵌入式Linux系统的开发流程通常包括以下几个步骤:

  1. 选择硬件平台:根据设备的需求和性能要求,选择合适的微处理器、存储器、输入输出设备等硬件平台。
  2. 移植Bootloader:根据硬件平台的特点,选择合适的Bootloader并进行移植。
  3. 裁剪和定制Linux内核:根据设备的需求和性能要求,对Linux内核进行裁剪和定制,以减小系统体积、提高性能。
  4. 构建根文件系统:选择合适的文件系统类型,构建包含操作系统所需程序、库、配置文件等的根文件系统。
  5. 开发应用程序:根据设备的需求,开发各种类型的应用程序,并实现与内核的交互。
  6. 系统集成和测试:将Bootloader、Linux内核、根文件系统和应用程序集成在一起,进行系统的整体测试和验证。

四、总结

嵌入式Linux系统作为一种高性能、可定制的嵌入式操作系统,已经在各个领域得到了广泛的应用。通过深入了解嵌入式Linux系统的组成和开发流程,我们可以更好地掌握嵌入式系统的设计和开发技术,为嵌入式设备的发展和应用提供有力支持。

  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值