一、准备开发环境
Ubuntu-22.04 (Linux PC or Windows WSL)
如果是在PC机上安装Ubuntu,请参考:
使用Rufus制作UBUNTU 22.04.5的U盘启动盘
如何通过U盘启动盘在PC上安装ubuntu-22.04.5
在ubuntu-22.04.5上安装和卸载Quartus Prime Pro Edition 25.3 (我后来安装的是25.1.1,安装步骤都相同)
如果是在当前Windows系统上安装WSL,请参考:
如何在Windows系统上安装WSL(Windows Subsystem for Linux)
二、设置Ubuntu环境
1. 在 Ubuntu 上安装所需软件包:
sudo apt-get update sudo apt install make bison flex python3-dev libssl-dev swig sudo apt install u-boot-tools sudo apt install qemu-user-static sudo apt install git sudo apt install build-essential
2. 创建顶层文件夹:
mkdir de25-nano.sdmmc cd de25-nano.sdmmc export TOP_FOLDER=`pwd`
3. 按照以下方式下载并设置工具链:
cd $TOP_FOLDER wget https://developer.arm.com/-/media/Files/downloads/gnu/11.2-2022.02/binrel/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz tar xf gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz rm -f gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu.tar.xz export PATH=`pwd`/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin:$PATH export ARCH=arm64 export CROSS_COMPILE=aarch64-none-linux-gnu-
三、构建Arm Trusted Firmware
cd $TOP_FOLDER rm -rf arm-trusted-firmware git clone -b de25_nano_revA_v1.0 https://github.com/terasic/arm-trusted-firmware arm-trusted-firmware cd arm-trusted-firmware make -j $(nproc) PLAT=agilex5 bl31 cd ..
这些操作之后,就会产生 $TOP_FOLDER/arm-trusted-firmware/build/agilex5/release/bl31.bin文件,这个文件在后面要用来参与 u-boot.itb文件的生成 。
四、构建U-boot
cd $TOP_FOLDER rm -rf u-boot-socfpga git clone -b de25_nano_revA_v1.0 https://github.com/terasic/u-boot-socfpga u-boot-socfpga cd u-boot-socfpga make mrproper make socfpga_agilex5_de25_nano_defconfig # link to ATF ln -s ../arm-trusted-firmware/build/agilex5/release/bl31.bin make -j $(nproc)
这些操作之后将会生成如下两个文件:
- $TOP_FOLDER/u-boot-socfpga/u-boot.itb
- $TOP_FOLDER/u-boot-socfpga/spl/u-boot-spl-dtb.hex
五、创建 Boot 脚本
cd $TOP_FOLDER rm -rf uboot-script && mkdir uboot-script && cd uboot-script wget https://releases.rocketboards.org/2023.12/qspi/agilex5/agilex5_uboot.txt wget https://releases.rocketboards.org/2021.11/uboot-script/agilex/uboot_script.its mv agilex5_uboot.txt uboot.txt vi uboot.txt # content see bloew mkimage -f uboot_script.its boot.scr.uimg cd ..
echo "Trying to boot Linux from device ${target}";if test ${target} = "mmc0"; thenbridge enable;echo "Found kernel in mmc0"; mmc rescan;fatload mmc 0:1 ${kernel_addr_r} Image;fatload mmc 0:1 ${fdt_addr_r} socfpga_agilex5_de25_nano.dtb;setenv bootargs "console=ttyS0,115200 root=${mmcroot} rw rootwait";booti ${kernel_addr_r} - ${fdt_addr_r};exit; fi
DE25-Nano 的Linux Image 制作之 Build QSPI Image