构建适用于全志H616/H618芯片的Linux

本文最后更新于:2025年8月24日 下午

前言

网上对于全志 H616/H618 芯片构建Linux系统的文章太少了,于是打算摸索其中的方法,经过多次失败与漫长测试后,从中总结出了一些知识,于是写下这篇文章进行记录,仅供参考。

本文章使用Ubuntu 22.04.5系统进行构建,其他系统请查看文档:Toolchain

手动构建各分区文件

交叉编译工具链

使用apt源的交叉编译工具链:

对于32位架构:

1
2
3
4
5
sudo apt-get install gcc-arm-linux-gnueabihf

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

make

对于64位架构:

1
2
3
4
5
sudo apt-get install gcc-aarch64-linux-gnu

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

make

使用Linaro提供的交叉编译工具链:

下载所需工具链:Builds & Downloads

解压交叉编译工具链到已知路径并配置好环境变量:

1
2
3
tar -xvJf gcc-linaro-xxx.tar.xz

export PATH="$PATH":/home/user/folder/gcc-linaro-arm-linux-gnueabihf-*_linux/bin/

构建U-Boot

  1. 安装以下工具:

    1
    sudo apt-get install -y swig python3-dev device-tree-compiler
  2. 构建ATF

    对于64位架构的设备在构建U-Boot之前需要先构建arm-trusted-firmware(简称 ATF)。

    1
    git clone https://github.com/ARM-software/arm-trusted-firmware.git

    对于H616 / H618 芯片使用以下命令编译ATF:

    1
    make CROSS_COMPILE=aarch64-linux-gnu- PLAT=sun50i_h616 DEBUG=1  bl31

    sun50i_h616为全志 H616&H618 芯片代号。

    Built /home/dongxun/Desktop/H618/linux-sunxi/trusted-firmware-a/build/sun50i_h616/debug/bl31.bin successfully

    可以在ATF中使用以下命令查看支持哪些平台:

    1
    find plat/allwinner -name platform.mk
    1
    2
    3
    4
    plat/allwinner/sun50i_a64/platform.mk
    plat/allwinner/sun50i_h6/platform.mk
    plat/allwinner/sun50i_r329/platform.mk
    plat/allwinner/sun50i_h616/platform.mk

    全志各芯片代号:Allwinner ARMv8 SoCs

    SoC TF-A build target
    A64 sun50i_a64
    H5 sun50i_a64
    H6 sun50i_h6
    H313 sun50i_h616
    H616 sun50i_h616
    T507 sun50i_h616
    R329 sun50i_r329

    指定BL31文件路径:

    1
    export BL31=$(pwd)/build/sun50i_a64/debug/bl31.bin
  3. 构建u-boot

    克隆u-boot项目:

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

    使用以下命令获取所有标签:

    1
    git tag -l

    切换到其他版本:

    1
    git checkout v2024.01

    配置主板defconfig文件,我这里以修改orangepi_zero3_defconfig为例,文件存放路径:u-boot/configs/orangepi_zero3_defconfig

    由于我的主板内存(DDR3)与香橙派Zero3(LPDDR4)存在差异,需要修改内存配置部分:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ...
    CONFIG_DRAM_SUN50I_H616_DX_ODT=0x03030303
    CONFIG_DRAM_SUN50I_H616_DX_DRI=0x0e0e0e0e
    CONFIG_DRAM_SUN50I_H616_CA_DRI=0x1f12
    CONFIG_DRAM_SUN50I_H616_TPR0=0xc0001002
    CONFIG_DRAM_SUN50I_H616_TPR10=0x2f1107
    CONFIG_DRAM_SUN50I_H616_TPR11=0xddddcccc
    CONFIG_DRAM_SUN50I_H616_TPR12=0xeddc7564
    CONFIG_MACH_SUN50I_H616=y
    CONFIG_SUNXI_DRAM_H616_DDR3_1333=y
    CONFIG_DRAM_CLK=792
    ...
    CONFIG_AXP_DCDC3_VOLT=1360
    ...

    内存时序测试

    主板defconfig文件中的内存时序参数可以使用DragonHD工具对主板进行测试得出,测试时主板需要进入FEI模式,并使用TTL串口线接入主板上的调试串口,内存测试信息会显示在串口日志中,如下图:

    内存测试串口日志

    对于32位架构(armhf)使用以下命令构建u-boot:

    1
    make CROSS_COMPILE=arm-linux-gnueabihf- <board_name>_defconfig

    对于64位架构(arm64)使用以下命令构建u-boot:

    1
    make CROSS_COMPILE=aarch64-linux-gnu- <board_name>_defconfig

构建Kernel

暂未探索…

使用Build工具

针对全志H616的Armbian-Build项目:

bigtreetech build:适用于大树科技出品的全志H616 CB1开发板。

其他适用于全志H616的Build项目:

YuzukiChameleon:适用于变色龙全志H616开发板。
Blueberry:适用于蓝莓派全志H616开发板。

针对全志H618的Armbian-Build项目:

NickAlilovic build:适用于全志H616/H618等多款芯片的电视盒子主板。

其他适用于全志H618的Build项目:

orangepi-build:适用于香橙派其下多款开发板。
aw-image-build:适用于野火鲁班猫全志系列开发板。
walnutpi-build:适用于核桃派1代开发板。
BPI-M4B-bsp:适用于香蕉派M4开发板。

特别鸣谢

Toolchain
Compile U-Boot

transpeed-8k618-t_defconfig

核桃派1B产品参数
aw-image-build介绍


构建适用于全志H616/H618芯片的Linux
https://dongxunz.github.io/2025/08/05/全志/构建适用于全志H616&H618芯片的Linux/
作者
dongxunz
发布于
2025年8月5日
许可协议