大家晚上好,今天继续给大家分享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 的生命周期
总结:
好了,今天的分享就到这里,如有不对的地方,可以批评指出,感谢各位一直以来的支持。