前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Uboot学习(二)之Uboot能够实现哪些功能

Uboot学习(二)之Uboot能够实现哪些功能

作者头像
用户6280468
发布2022-03-21 09:39:07
1.5K0
发布2022-03-21 09:39:07
举报
文章被收录于专栏:txp玩Linux

大家晚上好,今天继续给大家分享Uboot的文章。始终要相信一句话,每天让自己进步一点点,日积月累你也是大佬。

Uboot的来源和发展

一、Uboot的由来?

这里我们简单来了解一下Uboot的由来。Uboot一开始是由一个德国大神发起的一个项目,这个项目后面被 Wolfgang Denk 转移到了 SourceFore.net 上来了,但是SourceForge.net上不允许以数字来开头的项目命名名称,所以改名为 PPCBoot。PPCBoot 在 2000 年 7 月 19 日 第一次被公开发布出来了;其实, Uboot 从 FADSROM、8xxROM、PPCBOOT逐步发展演化而来的。这期间被很多人使用,甚至被许多Soc(System on Chip的缩写,称为芯片级系统,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。)厂商支持,这更加推动了 Uboot的广泛使用了。最终,Uboot经过多年发展,已经成为业内 bootloader (引导程序)标准了,而且现在大部分的嵌入式设备都会默认使用 Uboot 来作为 bootloader了。

二、Uboot的版本号问题:

1、早期的 Uboot 的版本类似于这样:Uboot 1.3.4(也就是比较老的版本),但是后面版本号就不是以这种方式来命名了,而是命名成,比如:Uboot-2010.06 这样的形式了。所以我们在看到各种 Uboot的版本号时,要能够辨别出来。下面我们可以这个地方下载 Uboot 的源码,这里不是推荐去官网下载 Uboot 的源码,太慢了,这里我提供一个下载网站:https://ftp.denx.de/pub/u-boot/ ;这里有各个版本时期的 Uboot 源代码版本号 ,大家有需要可以下载学习,同时在下载的时候,注意,一般下载后缀不带 “ rc ” 的版本号,因为带 “ rc ” 的版本是不稳定的,也就是说是测试版本:

2、其实 Uboot 的核心部分几乎是没有改变的,尽管后面出来很多新的Uboot 版本号,只是说越新的版本支持的嵌入式开发板越来越多,所以总的来说,新版本和老版本 Uboot核心并没有差异。其实有的时候我们在看 Linux源代码的时候,看老版本的相反可能比较经典和好入门。

三、Uboot 的可移植性的理解:

1、Uboot就是 universal bootloader (通用的引导程序),意思是说,在各种地方都可以用。举个例子来说,Uboot 可以支持 嵌入式 Linux 系统的引导启动,同时它也支持 NetBSD ,VxWorks , android 等嵌入式操作系统,而且它还能支持 MIPS 、x86 等常用系列的处理器。现在一般来说,Uboot对 PowerPC 系列处理器支持最为完整丰富,对 Linux 系统支持最为完善。所以总的来说,Uboot 的可移植性非常好。

Uboot有哪些功能

一、自身可以开机直接启动:

一般的 Soc 都支持多种启动方式,比如说 SD 卡启动、 NorFlash 启动、NandFlash 启动 等方式,所以说,必须根据具体的SoC的启动设计来设计uboot; 而且Uboot 必须进行和硬件相对应的代码级别的更改和移植,才能够保证可以从相应的启动介质启动;Uboot 中第一阶段的 start .s 文件中具体处理了这一块。

二、能够引导操作系统内核启动并给内核传参:

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

三、能够提供系统部署功能:

Uboot 必须能够被我们借助而完成整个系统 ( 这其中包括 Uboot 、Kernel 、 rootfs 等的镜像)在 Flash 上的烧录下载工作

四、能进行 Soc 级和板级硬件管理:

Uboot 中实现了一部分硬件的控制能力(Uboot中初始化了一部分硬件),这是因为 Uboot为完成一些任务必须得让这些硬件工作,比如说 Uboot 要能够实现刷机,它就必须能够驱动 iNand (iNAND 是 SanDisk 公司研发的存储芯片)。SoC 级(譬如串口)就是 SoC 内部外设,板级就是 SoC 外面开发板上面的硬件(譬如网卡、iNand)。

五、小结:

总之,Uboot 就是为了能够启动内核,让我们的操作系统跑起来。

Uboot 的生命周期

  • uboot的生命周期就是指:uboot什么时候开始运行,什么时候结束运行。
  • uboot本质上是一个裸机程序(不是操作系统),一旦uboot开始SoC就会单纯运行uboot(意思就是uboot运行的时候别的程序是不可能同时运行的),一旦uboot结束运行则无法再回到uboot(所以uboot启动了内核后uboot自己本身就死了,要想再次看到uboot界面只能重启系统。重启并不是复活了刚才的uboot,重启只是uboot的另一生)。
  • uboot的入口和出口。uboot的入口就是开机自动启动,uboot的唯一出口就是启动内核。uboot还可以执行很多别的任务(譬如烧录系统),但是其他任务执行完后都可以回到uboot的命令行继续执行uboot命令,而启动内核命令一旦执行就回不来了。

总结:

好了,今天的分享就到这里,如有不对的地方,可以批评指出,感谢各位一直以来的支持。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 txp玩Linux 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档