1、bootLoader介绍
bootLoader是嵌入式设备中用来引导内核启动的一段代码。内核启动是需要一定条件的,当设备上电后会首先运行BootLoader,BootLoader会初始化必要的硬件,比如DDR、Flash、串口等,相关初始化完成后就会去启动内核。我的理解,BootLoader是一个概念并不是具体的代码,只要满足在设备启动初期启动内核功能的代码都可以叫做BootLoader。
2、uboot介绍
uboot(universal boot)是通用的启动代码,支持多种架构的CPU,并且是开源的。uboot是高度定制的,大致分为Soc级资源管理和板级资源管理。不同的CPU或者同款CPU不同的开发板,uboot都是不同的,要根据硬件电路进行移植。
3、uboot和bootLoader的关系
uboot是BootLoader的一个具象化的表现,uboot是BootLoader,但BootLoader不仅仅指uboot,比如bios也是属于BootLoader。但是在我们日常的嵌入式开发中,经常把BootLoader和uboot混在一起,很多时候BootLoader和uboot都指的是uboot,因为在嵌入式开发中,使用的BootLoader基本都是uboot。
4、拓展
(1)ARM架构的CPU基本都是使用uboot,X86结构的CPU基本使用bios;
(2)uboot开源,bios不开源,bios有专门的公司去开发,不像uboot一样谁都可以去下载源码进行开发;