分类
笔记

给香橙派编译并写入最新的 U-Boot

本文讲述如何为香橙派编译最新版本的 U-Boot,并写入至 SD 卡。

我的硬件与软件环境

  • Ubuntu 20.04 LTS
  • Orange Pi Zero (512MB RAM)
  • 32GB MicroSD 卡

1. 编译 U-Boot

在 Linux 中,克隆香橙派的编译脚本仓库:

orangepi-xunlong/orangepi-build: Orange Pi build for H2、H3、H5、H6 and H616 (github.com)

执行 sudo ./build.sh 开始编译,选项则选择编译 U-Boot 的 DEB 包:

u-boot    U-boot package

编译完成后,会在如图所示的路径中生成一个 U-Boot 的 DEB 包:

编译后生成的 U-Boot DEB 包

2. 获得 U-Boot 镜像和刷写命令

将 U-Boot 的 DEB 包解压到当前目录下:

dpkg -x linux-u-boot-current-orangepizero_2.1.0_armhf.deb ./

在如图所示的路径中,找到 U-Boot 的 bin 文件,以及安装脚本:

U-Boot 的 bin 文件
U-Boot 的安装脚本

打开安装脚本,可以看到如下的两行即是刷写 U-Boot 的命令:

标示的两行是刷写 U-Boot 的命令

对应到我的实际情况,MicroSD 卡是 /dev/sdd,因此刷写命令为:

sudo dd if=/dev/zero of=/dev/sdd bs=1k count=1023 seek=1 status=noxfer
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdd bs=1024 seek=8 status=noxfer

再完成下一步的分区操作后,执行上述命令便可刷写 U-Boot。

3. 将 MicroSD 卡分区

Linux 下,使用 GParted 进行分区最方便便捷。

从刷写命令我们可以看出,U-Boot 存放于 MicroSD 卡地址偏移 8 * 1024 = 8KB 的位置。而 U-Boot 本身的大小,有 445KB。总计 453KB。

因此,无论何种分区方案,必须要在 MicroSD 卡开头位置留出足够的保留空间,不做分区。保留空间的大小至少要满足 U-Boot 的存放,并保有一定的空余。对于 MicroSD 卡,容量大多按 GB 计算,因此留出几 MB 的空间是较为简单的做法。以下是我的分区图(实际上,预留 4MB 足矣):

我的 MicroSD 卡分区图

4. 启动香橙派

这里是我的运行结果:

U-Boot 启动输出

下面提供已经编译好的 U-Boot:

https://github.com/Catboy96/catboy96.github.io/raw/master/may-28-2021/u-boot-sunxi-with-spl.bin

“给香橙派编译并写入最新的 U-Boot”上的2条回复

您好~我是腾讯云+社区的运营,关注了您在分享的技术文章,觉得内容很棒,我们诚挚邀请您加入腾讯云自媒体分享计划。完整福利和申请地址请见:https://cloud.tencent.com/developer/support-plan
作者申请此计划后将作者的文章进行搬迁同步到社区的专栏下,你只需要简单填写一下表单申请即可,我们会给作者提供包括流量、云服务器、域名等,另外还有些周边礼物。 我们诚挚的邀请您并期待您的加入

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注