艾巴生活网

您现在的位置是:主页>科技 >内容

科技

嵌入式系统中u-boot和bootloader详解

2024-04-15 14:34:58科技帅气的蚂蚁
嵌入式软件工程师听说过u-boot和bootloader,但是很多工程师还是不知道它们是什么。今天我们就来简单说说u-boot和bootloader的内容和区别。

嵌入式系统中u-boot和bootloader详解

嵌入式软件工程师听说过u-boot和bootloader,但是很多工程师还是不知道它们是什么。

今天我们就来简单说说u-boot和bootloader的内容和区别。

引导装载程序

与Bootloader相比,字面意思是开始加载任何用过电脑的人都知道,windows会先加载bios,然后是系统内核,最后启动。那么bootloader就相当于手机的bios,在手机启动时根据基带初始化硬件,然后引导系统内核,直到系统启动。

Bootloader是嵌入式系统上电后执行的第一个代码。通过这个小程序进行硬件初始化,内存大小信息等等,把手机调整到适应状态。它在完成CPU及相关硬件的初始化后,将操作系统映像或固化的嵌入式应用程序安装到内存中,然后跳转到操作系统所在的空间,开始操作系统的运行。

对于嵌入式系统,Bootloader是基于特定的硬件平台实现的。因此,几乎不可能为所有嵌入式系统建立一个通用的Bootloader,不同的处理器架构有不同的boot loader。Bootloader不仅依赖于CPU的架构,还依赖于嵌入式系统中板级设备的配置。对于两个不同的嵌入式板卡,即使使用相同的处理器,如果在一个板卡上运行的Bootloader程序也可以在另一个板卡上运行,一般也需要修改Bootloader的源程序。

反过来说,大多数boot loader还是有很多共同点的,有些boot loader也可以支持多种架构的嵌入式系统。比如U-Boot同时支持PowerPC、ARM、MIPS、X86架构,支持的板卡有上百种。通常,它们可以从存储介质自动引导,可以引导操作系统,并且大多数都可以支持串口和以太网接口。

乌布

1.硬件管理

Uboot应该能够管理Soc级(Soc内部外设)和板级(Soc外部外设)硬件。

某些硬件的控制能力是在uboot中实现的(有些硬件是在uboot中初始化的),因为uboot必须让这些硬件工作才能完成某些任务。例如,uboot必须能够驾驶in和以便刷机。比如uboot要想刷机时在LCD上显示进度条,就必须能驱动LCD。比如uboot如果能通过串口提供操作接口,就必须驱动串口。比如uboot必须驱动网卡芯片才能实现网络功能。

2.能够完成图像刻录(刷机)

Uboot应该可以用来完成刷机操作。参考SD卡刷的步骤:

A.将uboot烧录到SD卡中。烧录有两种方式:一种是用windows中的刷卡工具制作启动SD卡;另一种是在linux中使用dd命令。做好SD后,将SD卡插入开发板,然后开机进入uboot界面。

b .使用uboot的fastboot命令,使用PC中的fastboot软件刻录镜像,包括uboot、内核、rootfs等。从上面可以看出,刷机是依靠uboot的fastboot命令将镜像写入对应的FLASH。

3.uboot的“生命周期”

uboot的入口是自动启动,唯一的出口是启动内核。Uboot还可以执行很多其他的任务(比如烧系统),但是在其他任务执行完之后,你可以返回uboot的命令行继续执行uboot命令,而一旦执行了启动内核命令,就不能再回来了。

4.uboot应该提供命令式shell接口。

Shell的意思是用户界面。Shell有命令行shell,比如windows下的cmd,比如linux下的terminal还有GUI风格的shell,比如常用窗口下的各种界面。Shell是封装后留下的接口,uboot应该也有这样的接口。

shell的原理是:消息接收、解析、执行组成的无限循环。我之前用过3D打印机的固件,也是这个模式。

Uboot的shell也使用行缓冲模式。也就是说,回车键(换行键)被用作命令输入的结束。其他对应的缓冲方式有无缓冲和全缓冲:无缓冲是指输入一个字符,作为一个命令处理;全缓冲意味着缓冲任何输入,直到缓冲区满了。

bootloader和uboot的区别

BootLoader是一个用于启动嵌入式设备中操作系统内核的程序。

Uboot(universal bootloader)是一个可以用于多种嵌入式CPU的bootloader程序,换句话说,Uboot是BootLoader的一个子集。

uboot的核心功能是启动操作系统内核,uboot的本质是一个裸机程序。

审计唐子红