1. U-Boot 简介

    Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader 程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。当然了,bootloader 的实际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核,bootloader 和 Linux 内核的关系就跟 PC 上的 BIOS 和 Windows 的关系一样,bootloader 就相当于 BIOS。所以我们要先搞定bootloader,很庆幸,有很多现成的 bootloader 软件可以使用,比如 U-Boot、vivi、RedBoot 等等,其中以 U-Boot 使用最为广泛
   U-Boot 的全称是 Universal Boot Loader,uboot 是一个遵循 GPL 协议的开源软件,uboot 是一个裸机代码,可以看作是一个裸机综合例程。现在的 uboot 已经支持液晶屏、网络、USB 等高
级功能。uboot 官网为 http://www.denx.de/wiki/U-Boot/,如图所示:
在这里插入图片描述

2. Rockchip, ArmSoM, U-Boot官方提供的区别

在这里插入图片描述
2.1 uboot 官方的 uboot 代码
    目前U-Boot最新的版本是 2023.07。但是我们一般不会直接用 uboot 官方的 U-Boot 源码的。uboot 官方的 uboot 源码是给半导体厂商准备的,半导体厂商会下载 uboot 官方的 uboot 源码,然后将自家相应的芯片移植进去。也就是说半导体厂商会自己维护一个版本的 uboot,这个版本的 uboot 相当于是他们定制的。既然是定制的,那么肯定对自家的芯片支持会很全,虽然 uboot 官网的源码中一般也会支持他们的芯片,但是绝对是没有半导体厂商自己维护的 uboot 全面。
    为做对比把官方的代码切换到v2017.09

# git checkout v2017.09

2.2 Rockchip 提供的UBoot
    Rockchip 就维护的 U-Boot 官⽅的 v2017.09 正式版本中切出来进⾏开发的版本,⽬前已经⽀持 RK 所有主流在售芯⽚。⽀持的功能主要有:

  • ⽀持 RK Android 固件启动;
  • ⽀持 Android AOSP 固件启动;
  • ⽀持 Linux Distro 固件启动;
  • ⽀持 Rockchip miniloader 和 SPL/TPL 两种 Pre-loader 引导;
  • ⽀持 LVDS、EDP、MIPI、HDMI、CVBS、RGB 等显⽰设备;
  • ⽀持 eMMC、Nand Flash、SPI Nand flash、SPI NOR flash、SD 卡、 U 盘等存储设备启动;
  • ⽀持 FAT、EXT2、EXT4 ⽂件系统;
  • ⽀持 GPT、RK parameter 分区表; ⽀持开机 LOGO、充电动画、低电管理、电源管理;
  • ⽀持 I2C、PMIC、CHARGE、FUEL GUAGE、USB、GPIO、PWM、GMAC、eMMC、NAND、 Interrupt 等;
  • ⽀持 Vendor storage 保存⽤⼾的数据和配置;
  • ⽀持 RockUSB 和 Google Fastboot 两种 USB gadget 烧写 eMMC;
  • ⽀持 Mass storage、ethernet、HID 等 USB 设备;
  • ⽀持通过硬件状态动态选择 kernel DTB;

2.3 ArmSoM提供的UBoot
    如果是我们自己(ArmSoM)做的板子就需要修改 Rockchip 官方的 uboot,使其支持我们自己做的板子,ArmSoM的 ArmSoM-W3(rk3588) 开发板就是自己做的板子,虽然大部分都参考了 Rockchip官方的RK3588-EVB 开发板,但是还是有很多不同的地方,所以需要修改 Rockchip官方的 uboot,使其适配ArmSoM-W3 开发板。所以当我们拿到开发板以后是有三种 uboot ,这三种 uboot的区别如表

种类(跳转github仓库)描述
uboot 官方的 uboot 代码由 uboot 官方维护开发的 uboot 版本,版本更新快,基本包含所有常用的芯片。
半导体厂商的 uboot 代码半导体厂商维护的一个 uboot,专门针对自家的芯片,在对自家芯片支持上要比 uboot 官方的好。
ArmSoM提供的 uboot 代码ArmSoM开发板厂商在半导体厂商提供的 uboot 基础上加入了对自家开发板的支持。

3. 如何选择UBoot

    那么这三种 uboot 该如何选择呢?首先 uboot 官方的基本是不会用的,因为支持太弱了。
最常用的就是半导体厂商或者开发板厂商的 uboot,如果你用的半导体厂商的评估板,那么就使
用半导体厂商的 uboot,如果你是购买的第三方开发板,比如ArmSoM的 ArmSoM-W3 开发板,
那么就使用ArmSoM提供的 uboot 源码(也是在半导体厂商的 uboot 上修改的)。当然了,你也
可以在购买了第三方开发板以后使用半导体厂商提供的 uboot,只不过有些外设驱动可能不支
持,需要自己移植,这个就是我们常说的 uboot 移植。

4. ArmSoM UBoot 的支持

    ArmSoM UBoot 在Rockchip官方提供的UBoot基础上针对我们的开发板增加

  • 支持PCIE30的NVMe启动
  • 持续开发中

5. ArmSoM-W3 RK3588 开发板

ArmSoM-W3开发板基于Rockchip新一代旗舰 RK3588处理器开发,采用核心板+底板的分体式设计,将RK3588核心板的全部功能引脚以最便利的方式引出,并针对不同的功能做了深度优化,方便用户二次开发的同时简化用户设计,为您的项目评估提供良好的评估及设计依据。 支持8K超清显示,四屏异显,配备丰富的高速数据通讯接口,满足用户多样化需求;本产品经由严苛测试,可为您的高端应用提供稳定性能支撑。
在这里插入图片描述
ArmSoM wiki:http://wiki.armsom.org/index.php/Getting_Started_with_ArmSoM-w3
ArmSoM forum:http://forum.armsom.org/

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐