Linux系统编程之启动流程分析

本文详细介绍了Linux嵌入式系统的启动方式,包括NandFlash、SD/MMC卡、EMMC和USB设备启动。重点讲解了U-boot作为BootLoader的角色,其基本作用、选择理由及通用概念。同时,概述了BootLoader的启动模式、结构,以及BootLoader启动流程,包括BL0、BL1和BL2的执行过程。
摘要由CSDN通过智能技术生成

一、Linux嵌入式系统启动方式主要有:
        (1)NandFlash启动
        (2)SD/MMC卡启动
        (3)EMMC启动
        (4)USB设备启动
二、U-boot概念:
        U-boot是常用的一种嵌入式操作系统启动程序,是著名的开源BootLoader程序,可以启动Linux、Android等系统。
        作为BootLoader,u-boot最基本的作用就是:
        (1)把操作系统镜像从介质(flash、nand、SD卡等)加载到内存中,即在Linux系统中可以从SD卡、flash等存储设备启动系统。
        (2)在内存中启动操作系统时可以向操作系统传递配置信息。
        (3)此外,U-boot还有一个简单的控制台,利用串口和用户交互以提供一些额外的辅助功能,例如在OS启动前查看内存、数据拷贝、查看OS镜像信息、检查坏块等。
        U-boot全称为:Universal Bootload,它是一个通用的启动代码载入器,Linux本身不能自己把自己读取到内存中运行,所以它就需要一个loader(载入器)读入内存并运行。其实U-boot可以在很多种CPU架构中运行,同时也支持很多开发板,但是每种CPU架构之间有差别,或者开发板的资源不同,假如在某款开发板能够正常引导启动操作系统,但是这并不意味着在其他类型的开发板就可以引导启动系统,所以建立一个统一的BootLoader是不太可能的,但是经过大师们的努力,能够通过简单的配置,就可以实现引导启动很多操作系统,也就是所说的BootLoader的移植。
        选择U-boot的理由:
        (1)源码开放;
        (2)支持多种嵌入式操作系统内核,如Linux、VxWorks等;
        (3)支持多个处理器系列,如PowerPC、ARM、x86、MIPS、XScale;
        (4)较高的可靠性以及稳定性;
        (5)高度灵活的功能设置,适合uboot调试;
        (6)丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;
        (7)较为丰富的开发调试文档与强大的网络技术支持。
三、BootLoader简介
        3.1  BootLoader概念
            简单地说,bootloader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
            通常,bootloader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的bootloader几乎是不可能的。尽管如此,我们仍然可以对bootloader归纳出一些通用的概念来,以指导用户特定的bootloader设计与实现。
        3.2 BootLoader启动方式
            CPU上电或复位时,会从某个地址开始执行。ARM结构的CPU从地址0x0000000开始,通常这个地址处就存放了BL1+bootloader这样一上电就可以执行(bootloader相当于BL2)。
            从开发和用户使用角度来分析,Bootlaoder可以分为以下两种操作模式(Operation Mode)。
            (1)自启动模式(Boot laoding):
                这种模式下,bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。产品发布后,bootloader工作在这种模式下。
            (2)交互模式或者下载(Downlaoding)模式:    
                在这种模式下,开发人员可以使用各种命令,通过串口连接或网络连接等通信手段从主机下载文件(比如内核映像、文件系统映像)到RAM中,可以被bootloader写到目标机上的固态存储介质中,或者直接进入系统的引导。
            U-boot能够同时支持这两种工作模式,而且允许用户在这两种模式之间进行切换。比如,U-Boot在启动时处于正常的自启动模

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值