飞腾派4G版开发板U-Boot编译与交叉环境搭建指南

📅 2026/7/17 7:15:10 👁️ 阅读次数 📝 编程学习
飞腾派4G版开发板U-Boot编译与交叉环境搭建指南

1. 飞腾派4G版开发板初体验与准备工作

作为一名长期从事ARM架构开发的工程师,最近拿到飞腾派4G版开发板时还是感到眼前一亮。这款基于飞腾E2000处理器的开发平台,搭载了4核ARMv8架构CPU,主频可达1.5GHz,板载4GB LPDDR4内存和32GB eMMC存储,最吸引我的是它原生支持4G LTE模块——这意味着可以轻松实现物联网项目的无线连接需求。

开箱后首先注意到的是开发板的接口布局:标准的40pin GPIO排针、USB3.0 Type-C接口、千兆以太网口、HDMI输出以及SIM卡槽都整齐排列在板子边缘。特别值得一提的是,飞腾派采用了12V/2A的DC供电设计,相比常见的5V供电方案,能够为4G模块提供更稳定的电压支持。

在开始uboot编译前,我们需要做好以下准备工作:

  1. 硬件连接:通过Type-C线连接开发板和主机,使用USB转串口工具连接UART调试口(波特率设置为115200)
  2. 开发环境:准备一台x86_64架构的Ubuntu 22.04主机(建议使用物理机而非虚拟机,因为后续交叉编译需要较高性能)
  3. 工具链安装:从飞腾官方仓库获取aarch64-linux-gnu交叉编译工具链
  4. 源码准备:下载飞腾派专用的uboot源码和ARM Trusted Firmware(ATF)

注意:飞腾派的UART调试口引脚定义与树莓派不同,TX/RX需要交叉连接,具体为开发板的UART0_TX连接调试器的RX,UART0_RX连接调试器的TX。

2. 交叉编译环境搭建详解

2.1 工具链的选择与安装

对于ARMv8架构的交叉编译,常见的有几种工具链方案:

  • Linaro官方提供的aarch64-linux-gnu工具链
  • ARM官方提供的arm-gnu工具链
  • 飞腾定制优化的PhyGCC工具链

经过实测对比,我推荐使用飞腾官方维护的PhyGCC 10.3.3版本,它在处理飞腾特有的指令集优化方面表现更好。安装步骤如下:

# 添加飞腾软件仓库源 echo "deb [arch=amd64] https://repo.phytium.com.cn/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/phytium.list # 安装GPG密钥 wget -qO - https://repo.phytium.com.cn/phytium-key.gpg | sudo apt-key add - # 更新并安装工具链 sudo apt update sudo apt install phytium-gcc-10.3 phytium-g++-10.3

安装完成后,可以通过以下命令验证:

aarch64-phytium-linux-gnu-gcc --version

正常应该输出类似如下信息:

aarch64-phytium-linux-gnu-gcc (PhyGCC 10.3.3) 10.3.3 Copyright (C) 2020 Free Software Foundation, Inc.

2.2 环境变量配置

为了让编译系统能正确找到交叉编译工具,需要设置以下环境变量:

export CROSS_COMPILE=aarch64-phytium-linux-gnu- export ARCH=arm64 export PATH=$PATH:/opt/phytium/gcc-10.3/bin

建议将这些配置添加到~/.bashrc文件中,避免每次打开新终端都需要重新设置。可以通过创建一个环境设置脚本来管理不同项目的编译环境:

#!/bin/bash # setenv-phytium.sh export PHYTIUM_SDK=/opt/phytium/sdk export CROSS_COMPILE=aarch64-phytium-linux-gnu- export ARCH=arm64 export PATH=$PATH:/opt/phytium/gcc-10.3/bin

2.3 依赖库安装

交叉编译过程中需要一些基础开发库的支持,在Ubuntu上安装以下依赖包:

sudo apt install build-essential bison flex libssl-dev libncurses5-dev \ libgmp-dev libmpc-dev libmpfr-dev autoconf automake libtool \ device-tree-compiler python3-dev swig git

特别提醒:飞腾派的uboot编译对设备树编译器(dtc)版本有要求,建议使用1.6.0以上版本。可以通过dtc --version命令检查,如果版本过低,需要从源码编译安装:

git clone https://git.kernel.org/pub/scm/utils/dtc/dtc.git cd dtc make -j$(nproc) sudo make install

3. U-Boot源码获取与配置

3.1 源码仓库选择

飞腾派有多个可用的uboot源码仓库:

  1. 飞腾官方维护的定制版本(推荐)
  2. 主线uboot官方仓库
  3. 第三方适配版本

经过测试比较,飞腾官方仓库对E2000处理器的支持最为完善,特别是对DDR初始化、PCIe和USB3.0等外设的驱动支持更好。获取源码命令如下:

git clone https://gitee.com/phytium/uboot-phytium.git cd uboot-phytium git checkout e2000-v2023.10

3.2 配置文件选择

飞腾派4G版的默认配置文件位于configs/phytium_e2000_defconfig。这个配置文件已经预设好了:

  • 处理器类型:ARMv8 Cortex-A55
  • 内存配置:4GB LPDDR4
  • 存储接口:eMMC 5.1
  • 网络设备:GMAC千兆以太网
  • 特殊功能:4G模块支持

可以通过以下命令生成.config文件:

make phytium_e2000_defconfig

如果需要自定义配置,可以使用menuconfig界面进行调整:

make menuconfig

在menuconfig界面中,有几个关键配置需要注意:

Device Drivers → [*] Network device support → [*] Ethernet PHY (Physical Layer) support [*] Support for Phytium GMAC Ethernet devices Board initialization → [*] Initialize DDR controller [*] Enable 4G module support

3.3 设备树定制

飞腾派4G版的设备树文件位于arch/arm/dts/phytium-e2000-4g.dts。如果需要修改外设配置(如调整UART波特率、禁用某些接口等),需要编辑这个文件。常见修改包括:

  1. 调整调试串口波特率:
chosen { stdout-path = &uart0; bootargs = "console=ttyAMA0,115200 earlycon=pl011,mmio32,0x28004000"; };
  1. 启用4G模块电源管理:
&usb1 { status = "okay"; #address-cells = <1>; #size-cells = <0>; quectel_ec20: ec20@1 { compatible = "usb-serial,option"; reg = <1>; vcc-supply = <&vcc_4g>; }; };

修改后需要重新编译设备树:

make phytium-e2000-4g.dtb

4. U-Boot编译与烧写实战

4.1 完整编译流程

配置好环境后,完整的编译命令如下:

make clean make phytium_e2000_defconfig make -j$(nproc)

编译过程大约需要5-10分钟(取决于主机性能),成功后会生成以下关键文件:

  • u-boot.bin:原始的U-Boot二进制文件
  • u-boot-nodtb.bin:不带设备树的U-Boot镜像
  • u-boot.dtb:单独的设备树二进制文件
  • u-boot.img:包含U-Boot和设备树的组合镜像

4.2 生成可烧写镜像

飞腾派需要将U-Boot与ARM Trusted Firmware(ATF)组合成一个完整的启动镜像。首先需要获取ATF源码:

git clone https://gitee.com/phytium/atf-phytium.git cd atf-phytium git checkout e2000-v2.6

编译ATF:

make CROSS_COMPILE=aarch64-phytium-linux-gnu- PLAT=e2000 DEBUG=1 bl31

生成最终启动镜像:

tools/mkimage -f fit-image.its -k keys -r fit-image.itb

其中fit-image.its是一个描述文件模板,内容类似:

/dts-v1/; / { description = "Phytium E2000 FIT Image"; #address-cells = <1>; images { uboot { description = "U-Boot"; data = /incbin/("./u-boot.bin"); type = "standalone"; arch = "arm64"; compression = "none"; load = <0x2000000>; entry = <0x2000000>; }; atf { description = "ATF"; data = /incbin/("./bl31.bin"); type = "firmware"; arch = "arm64"; compression = "none"; load = <0x1000000>; entry = <0x1000000>; }; }; configurations { default = "config@1"; config@1 { description = "E2000 config"; firmware = "atf"; loadables = "uboot"; }; }; };

4.3 烧写到开发板

飞腾派支持多种烧写方式,推荐使用以下两种:

方法一:通过USB OTG烧写(需进入bootrom模式)

  1. 断开开发板电源
  2. 按住BOOT按钮不放,然后插入USB线
  3. 松开BOOT按钮,此时开发板会进入烧写模式
  4. 使用phytium-provided工具进行烧写:
python3 phytium_download.py -b uboot -f fit-image.itb

方法二:通过TF卡烧写

  1. 将TF卡格式化为FAT32格式
  2. 复制fit-image.itb到TF卡根目录,重命名为boot.itb
  3. 插入TF卡到开发板,上电时会自动从TF卡加载

重要提示:首次烧写后建议通过串口连接查看启动日志,确认U-Boot正常加载。正常应该能看到类似以下输出:

U-Boot 2023.10 (Jun 15 2024 - 16:20:45 +0800) CPU: Phytium E2000 (rev 1.0) Model: Phytium E2000 Development Board DRAM: 4 GiB MMC: mmc@28200000: 0 Loading Environment from MMC... OK In: serial@28004000 Out: serial@28004000 Err: serial@28004000 Net: eth0: ethernet@28020000 Hit any key to stop autoboot: 0 =>

5. 常见问题排查与优化技巧

5.1 编译错误排查

  1. 工具链不匹配错误:
arm64-phytium-linux-gnu-gcc: command not found

解决方法:检查环境变量设置是否正确,特别是PATH是否包含工具链路径

  1. 设备树编译错误:
Error: arch/arm/dts/phytium-e2000-4g.dts:20.1-2 syntax error

解决方法:检查dts文件语法,特别是符号匹配和分号使用

  1. ATF链接错误:
aarch64-phytium-linux-gnu-ld.bfd: bl31.elf has a LOAD segment with RWX permissions

解决方法:在ATF Makefile中添加LDFLAGS += -no-warn-rwx-segments

5.2 启动问题排查

  1. U-Boot启动卡住:
  • 检查串口连接是否正确(TX/RX是否接反)
  • 确认波特率设置为115200
  • 检查供电是否充足(特别是使用4G模块时)
  1. 内存检测失败:
DRAM: failed to get memory size

解决方法:检查uboot配置中的DDR参数,特别是CONFIG_PHYTIUM_DDR_SIZE设置

  1. 网络无法工作:
eth0: ethernet@28020000: PHY not found

解决方法:检查设备树中的GMAC和PHY配置,确认phy-mode和phy-handle设置正确

5.3 性能优化建议

  1. 启用NEON指令加速: 在uboot配置中开启:
CONFIG_ARM_NEON=y CONFIG_ARM_V8_CRYPTO=y
  1. 优化启动速度:
  • 减少不必要的驱动初始化(如不需要的USB设备)
  • 禁用启动延时:setenv bootdelay 0
  • 预加载环境变量
  1. 4G模块电源管理: 在设备树中添加:
&vcc_4g { regulator-name = "vcc_4g"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&gpio2 12 GPIO_ACTIVE_HIGH>; enable-active-high; };

经过完整的交叉编译环境搭建和uboot编译过程,飞腾派4G版已经可以作为一个强大的ARM开发平台使用。在实际项目中,我建议将这套环境与持续集成系统(如Jenkins)结合,实现自动化构建和测试,大幅提高开发效率。