• uboot


    1、计算机系统的主要部件

    (1)、计算机系统就是由CPU来做核心进行运行的系统。典型的计算机系统有:PC机(台式机+笔记本)、嵌入式设备(手机、平板电脑、游戏机)、单片机(家用电器如电饭锅、空调)。

    (2)、计算机系统的组成部件非常多,不同的计算机系统组成部件也不同。但是所有的计算机系统运行时需要的主要核心部件都是3个东西:CPU + 外部存储器(Flash/硬盘)+ 内部存储器(DDR SDRAM/SRAM)。

    2、PC机的启动过程

    (1)、典型的PC机部署:BIOS程序部署在PC机主板上(随主板出厂时已经预制了),操作系统部署在硬盘上,内存在掉电时无作用,CPU在掉电时不工作。

    (2)、启动过程:PC机上电后先执行BIOS程序(实际上PC的BIOS就是NorFlash),BIOS程序负责初始化DDR内存,负责初始化硬盘,然后从硬盘上将操作系统OS镜像读取到DDR中,然后跳转到DDR中去执行操作系统OS直到启动(OS启动后BIOS就无用了)

    3、典型嵌入式Linux系统启动过程

    (1)、嵌入式系统的部署和启动都是参考PC机的。只是设备上有一些差别

    (2)、典型嵌入式系统的部署:uboot程序部署在Flash(能作为启动设备的Flash)上,操作系统OS部署在Flash(嵌入式系统中用Flash代替了硬盘)上,内存在掉电时无作用,CPU在掉电时不工作。

    (3)、启动过程:嵌入式系统上电后先执行uboot,然后uboot负责初始化DDR、初始化Flash,然后将操作系统OS从Flash中读取到DDR中,然后启动OS(OS启动后uboot就无用了)。

    总结:嵌入式系统和PC机的启动过程几乎没有两样,只是BIOS换成了uboot(bootloader中的一种),硬盘换成了Flash。

    4、Android系统启动过程

    (1)、Android系统的启动与Linux系统几乎一样。前边完全一样,只是在内核启动后加载根文件系统后不一样了。

    (2)、可以认为启动分为两个阶段:第一个阶段是uboot到OS启动;第二个阶段是OS启动后到根文件系统rootfs加载到命令行执行。

    5、uboot作用

    (1)、用来启动操作系统内核

    (2)、负责部署整个计算机系统

    (3)、操作Flash等板子硬件驱动。

    (4)、提供一个命令行界面供人来操作。

    6、uboot从哪里来?

    (1)、uboot是SourceForge上的开源项目。

    (2)、uboot项目的作者:一个德国人最早发起的项目

    (3)、uboot就是由一个人发起,然后由整个网络上所有感兴趣的人共同维护发展而来的一个bootloader。

    7、uboot必须解决哪些问题?

    (1)、自身可开机直接启动

      a、一般的片上系统SoC都支持多种启动方式,譬如SD卡启动,NorFlash启动、NandFlash启动等等,uboot要能够开机启动,必须根据具体的SoC的启动设计来设计uboot。

      b、uboot必须进行和硬件相对应的代码级别的更改和移植,才能够保证可以从相应的启动介质启动。uboot中第一阶段的start.S文件中具体处理这一块。

    (2)、能够引导操作系统内核启动并给内核传参

      a、uboot的终极目标就是启动内核

      b、Linux内核在设计的时候,设计为可以被传参。也就是说我们可以在uboot中事先给Linux内核准备一些启动参数放在内存中特定位置然后传给内核,内核启动后会到这个特定位置去取uboot传给它的参数,然后在内核中解析这些参数,这些参数将被用来指导Linux内核的启动过程。

    (3)、能提供系统部署功能

      a、uboot必须能够被人借助而完成整个系统(包括uboot、kernel、rootfs等的镜像)在Flash上的烧入下载工作。

      b、刷机就是利用uboot中的fastboot功能将各种镜像烧入到iNand中,然后从iNand启动。

    (4)、能进行SoC级和板级硬件管理

      a、uboot中实现了一部分硬件的控制能力(uboot中初始化了一部分硬件),因为uboot为了完成一些任务必须让这些硬件工作。譬如uboot要实现刷机必须能驱动iNand,uboot要实现网络功能就必须驱动网卡芯片。

      b、SoC级(譬如串口)就是SoC内部外设,板级就是SoC外部开发板上面的硬件(譬如网卡、iNand)

    8、uboot的入口和出口。

      uboot的入口就是开机自动启动,uboot的唯一出口就是启动内核。uboot还可以执行很多级别的任务(譬如烧入系统),但是其他任务执行完后都可以回到uboot的命令行继续执行uboot命令,而启动内核命令一旦启动就回不来了。

    总结:

      uboot经过多年发展,已经发展成为业内的bootloader标准。现在大部分的嵌入式设备都会默认使用uboot来作为bootloader。uboot的最终目的就是为了启动内核。

  • 相关阅读:
    13.kubernetes之pv,pvc,configmap(带补充实例)
    1.docker 数据卷的备份和恢复(非大数据量)
    mysql基础 事务的认识和使用
    jdbc基础 (四) 批处理
    jdbc基础 (三) 大文本、二进制数据处理
    mysql使用基础 sql语句(一)
    linux下安装openssh-server
    jdbc基础 (二) 通过properties配置文件连接数据库
    jdbc基础 (一) MySQL的简单使用
    windows API 开发飞机订票系统 图形化界面 (四)
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11081315.html
Copyright © 2020-2023  润新知