Rockchip rk3588 U-Boot详解 (一)
Linux 系统要启动就必须需要一个 bootloader 程序,也就说芯片上电以后先运行一段bootloader 程序。这段bootloader程序会先初始化DDR等外设,然后将Linux内核从flash(NAND,NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。当然了,bootloader 的实际工作要复杂的多,但是它最主要的工作就是启动 Linux 内核
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/
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)