01_uboot的介绍、作用。

时光毁灭记忆、已成空白 提交于 2019-12-15 14:27:28

一、uboot的历史

1.uboot从哪里来的

u-boot全称 Universal Boot Loader,是遵循GPL条款的开放源码项目,U-Boot的作用是系统引导。

这个项目起源于 Magnus Damm.在 8xx PowerPC 架构下写的引导加载程序:8xxROM。1999 年十月,Wolfgang Denk 将项目移转到 SourceForge.net,但 SourceForge.net 不允许数字开头的项目名称,所以改名为PPCBoot。

uboot是Wolfgang Denk (德国人)在sourceforge.net的发起的开源项目,然后由整个网络感兴趣的人共同维护发展而来的BootLoader。

2.uboot的发展历程

自己使用的小开源项目->被更多人认可->被SOC厂商默认支持

经过多年的发展,uboot已经成为业内bootloader标准,大部分的嵌入式设备默认支持uboot。

2.uboot的版本号

早期的版本号类似:uboot1.3.4
现在的版本号类似:uboot-2010.06

uboot的核心部分没有怎么变化,越新的版本支持的开发板越多。

二、为什么要有uboot

1.计算机系统的组成部件

典型的计算机系统:
1)PC:台式机和笔记本…
2)嵌入式设备:手机、平板、游戏机…
3)单片机:家用电器、空调…

计算机系统的运行时主要核心部件:
CPU+外部存储器(Flash/硬盘) + 内部存储器(DDR /SDRAM/SRAM)

2.几种计算的启动过程

1)PC机

①典型的PC机的部署:BIOS程序部署在PC机的主板上,操作系统部署在硬盘上。内存掉电无作用、CPU在掉电时不工作。

②启动过程:PC上电后先执行BIOS(NorFlash)程序,BIOS负责初始化DDR内存,初始化硬盘。然后将硬盘中的OS镜像读取到DDR中,跳转到DDR中去执行OS,直到启动。

2)典型嵌入式linux系统启动过程

嵌入式系统的部署和启动是参考PC机的,只是有的设备不一样(比如硬盘->falsh)。

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

②启动过程:嵌入式系统上电后先执行uboot、然后uboot负责初始化DDR,初始化flash,然后将OS从FLASH中读取到DDR中,启动OS。

3)android启动过程

①android的启动过程跟linux系统几乎一样,Uboot到OS启动几乎一样,不一样的地方是内核启动后加载根文件系统不一样。

3.uboot的作用

1)uboot主要作用是用来启动操作系统内核
2)uboot负责部署整个计算机系统
3)uboot还有操作flash等的硬盘驱动
4)uboot提供命令行界面、人机交互

三、u-boot解决的问题

1.可开机直接启动

1) 一般的SOC的启动方式:SD卡启动、NORFALSH启动、NANDFALSH启动…

2)uboot必须进行硬件相对应的代码级别的更改和移植。uboot中的第一阶段start.S文中处理这一块。

2.能引导操作系统内核启动并给内核传参

1)linux内核设计为可以被传参,所以uboot中应事先给linux内核准备启动参数。启动的时候,内核去特定位置去读取uboot准备的参数,指导linux的启动过程。

2)uboot的最终目的就是启动内核。

3.能提供系统部署功能

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

4.能进行SOC级的板级硬件管理

1)SoC级:SoC内部外设。 板级:SoC外面开发板的硬件(网卡、inand)

2)uboot中初始化了部分硬件,实现了部分硬件的控制。
uboot要实现刷机必须初始化iNAND
刷机时LCD显示进度条必须初始化LCD
uboot要实现串口交互必须初始化串口

5.uboot的“生命周期”

1)uboot的入口和出口。
uboot的入口就是开机自动启动,uboot的唯一出口就是启动内核。

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!