一、准备开发环境
Ubuntu-22.04 (Linux PC or Windows WSL)
如果是在PC机上安装Ubuntu,请参考:
在ubuntu-22.04.5上安装和卸载Quartus Prime Pro Edition 25.3 (我后来安装的是25.1.1,安装步骤都相同,也可以就在自己的Windows系统上安装Quartus 25.1.1,也就是只要image的开发放在Ubuntu系统,FPGA的开发则放在Windows系统)
如果是在当前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_A5_sdmmc cd DE25-Nano_A5_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 below
mkimage -f uboot_script.its boot.scr.uimg
cd ..
注意:如果用户想要访问HPS的FPGA LED,请在uboot.txt中添加“bridge enable”。
建议直接把uboot.txt内容替换成如下内容:
echo "Trying to boot Linux from device ${target}"; if test ${target} = "mmc0"; then bridge 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_fb.dtb; setenv bootargs "console=ttyS0,115200 root=${mmcroot} rw rootwait"; booti ${kernel_addr_r} - ${fdt_addr_r}; exit; fi
如上操作将会产生$TOP_FOLDER/uboot-script/boot.scr.uimg文件。
六、构建Linux Kernel
cd $TOP_FOLDER rm -rf linux-socfpga git clone -b de25-nano-revA-lxde_v1.1 https://github.com/terasic/linux-socfpga linux-socfpga cd linux-socfpga cp de25-nano-lxde.config .config make -j $(nproc) Image modules dtbs
如上操作将会产生如下两个文件:
- $TOP_FOLDER/linux-socfpga/arch/arm64/boot/Image
- $TOP_FOLDER/linux-socfpga/arch/arm64/boot/dts/intel/socfpga_agilex5_de25_nano_fb.dtb
七、构建 Ubuntu 22.04.3
1. 准备rootfs 文件夹
cd $TOP_FOLDER mkdir -p rootfs cd rootfs
2. 切换到root权限
sudo -s
3. 下载 Ubuntu 22.04.3根文件系统
wget -c https://cdimage.ubuntu.com/ubuntu-base/releases/22.04.3/release/ubuntu-base-22.04.3-base-arm64.tar.gz tar xvf ubuntu-base-22.04.3-base-arm64.tar.gz rm ubuntu-base-22.04.3-base-arm64.tar.gz
5. 复制qemu-user-static
cp /usr/bin/qemu-aarch64-static usr/bin/
6. 修改 etc/apt/sources.list 文件,取消除 deb-src 开头之外所有仓库的注释
sed -i 's%^# deb %deb %' etc/apt/sources.list
7. 将您系统(主机)的 /etc/resolv.conf 复制到 etc/resolv.conf
(如有需要请设置代理)
cp /etc/resolv.conf etc/resolv.conf
8. 下载一个简单的bash脚本用于设备的挂载和卸载
cd .. wget https://raw.githubusercontent.com/psachin/bash_scripts/master/ch-mount.sh
9. 将proc、sys、dev、dev/pts挂载到新文件系统
chmod a+x ch-mount.sh ./ch-mount.sh -m rootfs/ export LANG=C.UTF-8 unset LC_NUMERIC unset LC_TIME unset LC_MEASUREMENT unset LC_TELEPHONE unset LC_IDENTIFICATION unset LC_PAPER unset LC_MONETARY unset LC_NAME unset LC_ADDRESS
10. 更新软件仓库
apt update
11. 安装核心工具所需的基本软件包
apt install apt-utils dialog --yes apt install language-pack-en-base sudo ssh net-tools ethtool iputils-ping rsyslog bash-completion vim-tiny kmod --yes apt install isc-dhcp-client network-manager --yes apt clean cat <<EOF >/etc/NetworkManager/conf.d/allow-ethernet.conf [keyfile] unmanaged-devices=*,except:type:wifi,except:type:gsm,except:type:cdma,except:type:ethernet EOF

12. 安装工具
apt install usbutils --yes apt install gpiod --yes apt install memtester --yes apt install fdisk --yes apt clean
13.安装 VNC XFCE 桌面所需的软件包
apt install xfce4 xfce4-goodies --yes apt install tightvncserver --yes apt clean
14. 安装文本编辑和网络测试所需的软件包
apt install vim --yes apt install iperf3 --yes apt clean
15. 安装LXDE桌面所需的包:
apt install lxde xfce4-power-manager xinit xorg lightdm-gtk-greeter xserver-xorg-video-fbdev lightdm lxtask --yes # lxde auto login:在/etc/lightdm/lightdm.conf文件中加入如下内容 [SeatDefaults] autologin-user=root autologin-user-timeout=0
如果 /etc/lightdm/ 不存在该文件,就通过命令touch lightdm.conf 创建该文件,然后通过vi lightdm.conf打开该文件并进行编辑:

16. 安装WiFi USB网卡所需的软件包(需要1GB空间)
apt install --reinstall linux-firmware --yes
apt clean
17. 安装蓝牙 USB 适配器所需的 bluez 软件包
apt install bluez --yes
apt clean
18. 解决 RFCOMM 问题
vi /lib/systemd/system/bluetooth.service # modify ExecStart=/usr/lib/bluetooth/bluetoothd --compat
19. 添加用户帐户并将其包含在合适的组中
useradd terasic -m -s /bin/bash echo terasic:123 | chpasswd addgroup terasic adm && addgroup terasic sudo addgroup terasic audio && addgroup terasic video
20. 向 /etc/hosts 添加主机条目
echo "127.0.0.1 localhost" >> /etc/hosts
4. 下载lxde壁纸,然后设置:
cp lxed.png /etc/alternatives/desktop-background
如果是直接拷贝资料包里面提供的desktop-background文件(你可以放在DE25-Nano_A5_sdmmc文件夹下)则执行如下命令:
#先删除之前路径里面的 desktop-background
rm rootfs/etc/alternatives/desktop-background
#然后拷贝desktop-background(记得在root权限下拷贝)
cp -f desktop-background rootfs/etc/alternatives
21. 退出 chroot 并卸载 proc、sys、dev、dev/pts
exit
./ch-mount.sh -u rootfs/
22. 返回用户权限
exit
八、构建 SD Card Image
cd $TOP_FOLDER sudo rm -rf sd_card && mkdir sd_card && cd sd_card wget https://releases.rocketboards.org/release/2020.11/gsrd/tools/make_sdimage_p3.py # remove mkfs.fat parameter which has some issues on Ubuntu 22.04 sed -i 's/\"\-F 32\",//g' make_sdimage_p3.py chmod +x make_sdimage_p3.py mkdir fatfs && cd fatfs cp $TOP_FOLDER/u-boot-socfpga/u-boot.itb . cp $TOP_FOLDER/linux-socfpga/arch/arm64/boot/Image . cp $TOP_FOLDER/linux-socfpga/arch/arm64/boot/dts/intel/socfpga_agilex5_de25_nano_fb.dtb . cp $TOP_FOLDER/uboot-script/boot.scr.uimg . cd .. mkdir rootfs && cd rootfs # renew: sudo rm -rf rootfs && mkdir rootfs && cd rootfs sudo cp -a $TOP_FOLDER/rootfs/* . cd $TOP_FOLDER/linux-socfpga sudo make -j $(nproc) modules_install INSTALL_MOD_PATH=$TOP_FOLDER/sd_card/rootfs cd $TOP_FOLDER/sd_card sudo python3 make_sdimage_p3.py -f \ -P fatfs/*,num=1,format=fat32,size=500M \ -P rootfs/*,num=2,format=ext3,size=5000M \ -s 5500M \ -n DE25_Nano_sdcard_lxde.img cd ..

九、构建QSPI Image
参考:
DE25-Nano 的Linux Image 制作之 Build QSPI Image
十、将Linux Image 烧写到SD卡
通过如下命令将Linux image 烧写到SD卡上:

十一、测试Image
将SD卡插上DE25-Nano开发板
Msel设置为001
接上HDMI显示器
插上电源

浙公网安备 33010602011771号