长生栈 长生栈
首页
  • 编程语言

    • C语言
    • C++
    • Java
    • Python
  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
  • CMake
  • gitlab 安装和配置
  • docker快速搭建wordpress
  • electron+react开发和部署
  • Electron-创建你的应用程序
  • ImgUI编译环境
  • 搭建图集网站
  • 使用PlantUml画时序图
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Living Team

编程技术分享
首页
  • 编程语言

    • C语言
    • C++
    • Java
    • Python
  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
  • CMake
  • gitlab 安装和配置
  • docker快速搭建wordpress
  • electron+react开发和部署
  • Electron-创建你的应用程序
  • ImgUI编译环境
  • 搭建图集网站
  • 使用PlantUml画时序图
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 计算机视觉

  • ESP32开发

  • Linux系统移植

    • Linux系统移植(一)--- 交叉编译工具链的配置
    • Linux系统移植(二)--- Uboot移植
      • 编译bl31.bin(ATF)
      • 下载代码
      • 配置
      • 编译
      • 参考
    • Linux系统移植(三)--- Linux kernel移植
    • Linux系统移植(四)--- 使用busybox制作根文件系统(rootfs)
    • Linux系统移植(五)--- 制作、烧录镜像并启动Linux
  • 快速开始

  • 编程小知识

  • 技术
  • Linux系统移植
DC Wang
2024-02-05
目录

Linux系统移植(二)--- Uboot移植

# Linux系统移植(二)--- Uboot移植

以Orange Pi Zero3为例,介绍Uboot移植的基本操作。

Uboot官方文档: Allwinner SoC based boards — Das U-Boot unknown version documentation (opens new window)

# 编译bl31.bin(ATF)

使用 64 位 Soc(A64、H5、H6、H616、R329)的主板需要 bl31阶段的Arm Trusted Firmware-A固件 。这为 Armv8-A 提供了安全软件环境,并提供 PSCI 和 SMCCC 服务。全志支持已完全主流化。Orange Pi Zero3芯片是H618,我们下面编译平台选择相似的sun50i_h616就可以。编译 bl31.bin:

git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git
cd trusted-firmware-a
make CROSS_COMPILE=aarch64-linux-gnu- PLAT=sun50i_h616 DEBUG=1 bl31
1
2
3

编译完成之后会生成bl31.bin文件

$ export BL31=$(pwd)/build/sun50i_h616/debug/bl31.bin
1

因为我们这里没用scp.bin,所以这里就不需要生产它了。

# 下载代码

下载步骤可以参考Das Uboot官方文档,Obtaining the source — Das U-Boot unknown version documentation (opens new window)。

您可以通过以下方式下载源代码

git clone https://source.denx.de/u-boot/u-boot.git
1

或者Github 上维护着源镜像

git clone https://github.com/u-boot/u-boot
1

不加分支默认下载最新代码。

# 配置

编译代码之前我们要选择开发板相关配置项,上面我们查找过,最新版本uboot项目中是存在orange pi zero 3的默认配置文件的。

通过运行以下指令,我们可以查看,

git grep -l sun50i-h618-orangepi-zero3 configs
1

可以看到在configs目录下是存在orangepi_zero3_defconfig默认配置文件的,使用它即可生成配置文件.config.

make orangepi_zero3_defconfig
1

# 编译

  • 对于 64 位板,这需要设置 BL31 环境变量BL31,或者在编译命令行上提供,下面在编译命令里设置了bl31.bin路径
  • 同时还要制定使用的交叉编译器前缀CROSS_COMPILE=aarch64-livingteam-linux-gnu- (参考 Linux系统移植(一)--- 交叉编译工具链的配置 | 长生栈 (livingteam.cn) (opens new window) )
  • 因为scp.bin文件我们没用,所以要指定为/dev/null,即SCP=/dev/null,否者会提示Image 'u-boot-sunxi-with-spl' is missing external blobs and is non-functional: scp错误
make ARCH=arm64 CROSS_COMPILE=aarch64-livingteam-linux-gnu- BL31=/path/to/bl31.bin SCP=/dev/null
1

编译完成之后,顶层目录下会生成u-boot-sunxi-with-spl.bin文件,这个就是最终文件,里面包含ATF和SPL和uboot主体还有设备树。

image-20240204212110190

至此,适用于Orange Pi Zero3的Uboot编译完成。

# 参考

从零开始移植最新版本(2023.10)主线Uboot到Orange Pi 3(全志H6) - 知乎 (zhihu.com) (opens new window)

编辑 (opens new window)
#Linux#Linux系统移植#嵌入式
Linux系统移植(一)--- 交叉编译工具链的配置
Linux系统移植(三)--- Linux kernel移植

← Linux系统移植(一)--- 交叉编译工具链的配置 Linux系统移植(三)--- Linux kernel移植→

最近更新
01
ESP32-网络摄像头方案
06-14
02
ESP32-PWM驱动SG90舵机
06-14
03
ESP32-实时操作系统freertos
06-14
更多文章>
Theme by Vdoing | Copyright © 2019-2025 DC Wang All right reserved | 辽公网安备 21021102001125号 | 吉ICP备20001966号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式