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命令,而启动内核命令一旦执行就回不来了。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。