U-Boot

11 篇文章 0 订阅

0. Bootloader

  • 对于计算机系统而言,从开机上电到操作系统启动需要一个引导过程,这个引导过程由引导程序指定。 引导程序是系统加电启动运行的第一段软件代码。在 PC 体系结构中,引导程序由主板上的 BlOS(Basic Input Output System)程序 和位于硬盘 MBR (Master Boot Record)中的启动代码组成。系统上电后,首先运行 BlOS,在完成硬件检测和资源分配后,将硬盘 MBR 中的引导程序读到系统的 RAM 中,然后将控制权交给引导程序。引导程序的主要运行任务就是将内核映像从硬盘读到 RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。 嵌入式 Linux 系统同样离不开引导程序,这个引导程序一般我们叫作启动加载程序(Bootloader)
  • Bootloader 是在操作系统运行之前执行的一段小程序。通过这段小程序
    • 可以初始化硬件设备
    • 建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。
  • 也就是说芯片上电以后先运行一段 bootloader 程序。这段 BootLoader程序会先初始化 DDR 等外设,然后将 Linux 内核从非易失存储器 flash (NAND, NOR FLASH, SD, MMC 等)拷贝到DDR 中,最后启动 Linux 内核。所以BootLoader肯定包括外置非易失性存储器及外挂DDR芯片的驱动程序。当然了, BootLoader的实际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核
  • 对于嵌入式系统, bootloader 是基于特定硬件平台实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的 bootloader,不同的处理器架构都有不同的 bootloader。Bootloader 不仅依赖于 CPU 的体系结构,而且依赖于嵌入式系统板级设备的配置。对于两块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的 bootloader程序也能运行在另一块板子上,一般需要修改 bootloader 的源程序。 庆幸的是, 大部分bootloader 仍具有很多共性,某些bootloader 能够支持多种体系结构的嵌入式系统。

1. U-boot

  • U-Boot 的全称是 Universal Boot Loader,是使用最为广泛的一个BootLoader,本质上是一个开源的逻辑程序。我们一般不会直接用uboot 官方的 U-Boot 源码的。 uboot 官方的 uboot 源码是给半导体厂商准备的,半导体厂商会下载 U-Boot 官方的 U-Boot 源码,然后将自家相应的芯片移植进去。比如赛灵思.
  • 包括的功能:
    • 包括SD卡或者QSPI等非易失存储设备的驱动程序
    • I2C等接口驱动
    • 文件系统,U-Boot 可以通过文件系统去操作读取文件的(FAT等)
    • 网络相关协议(将内核镜像放在Ubuntu系统,通过U-Boot 将镜像网络下载到DDR中)
  • Universal 体现在哪?
    • 支持多种操作系统,除了Linux外还有VxWorks、安卓等
    • 支持多种硬件平台,不只是支持ARM架构处理器,还支持ARC、microblaze等

2.U-Boot与FSBL

  • U-Boot主要是启动Linux内核
  • FSBL是开发板在上电后运行的第一段代码,作用是去引导启动用户的逻辑程序。
    • 固化QSPI时,需要做一个BOOT.BIN(FSBL、用户逻辑程序、比特流文件)
    • 首先将用户逻辑程序从BOOT.BIN这个组合文件中提取并搬运到DDR中,再启动之
    • 因此FSBL必须有SD卡或QSPI等设备的驱动程序、要能初始化DDR
  • 对于基于 ZYNQ 的嵌入式Linux系统而言BOOT.BIN=FSBL+U-boot(除了boot相关代码外还包括用户SDK裸机代码)+bitstream,在引导过程中, 先运行 FSBL 来设置 PS,然后运行 U-Boot 用于加载 Linux 内核映像并引导Linux(启动内核)。所以 U-Boot 是第二阶段引导程序, FSBL 是第一阶段引导程序。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arist9612

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值