啊啊啊啊, 应该得用官方的sdk组合
未完成!!!!!!!!!!
wget <https://source.denx.de/u-boot/u-boot/-/archive/v2025.07-rc1/u-boot-v2025.07-rc1.tar.gz>
tar xf u-boot-v2025.07-rc1.tar.gz
cd u-boot-v2025.07-rc1
export CROSS_COMPILE=???
export ARCH=arm # uboot 没有 arm ar64 之分
make -j$(nproc)
这是 arm
的安全固件, 主要是特权级管理的, 我编译upstream的atf, 但是编译报错了。所以我选择 xilinx
提供的。
wget [<https://github.com/Xilinx/arm-trusted-firmware/archive/refs/tags/xlnx_rebase_v2.10_2024.2.tar.gz>](<https://github.com/Xilinx/arm-trusted-firmware/archive/refs/tags/xlnx_rebase_v2.10_2024.2.tar.gz>)
他人幸福xlnx_rebase_v2.10_2024.2.tar.gz
cd arm-trusted-firmware-xlnx_rebase_v2.10_2024.2
export CROSS_COMPILE=???
make PLAT=zynqmp DEBUG=0
cp build/zynqmp/release/bl31.bin ../xlnx-zcu102
# obtain source
wget <https://git.kernel.org/torvalds/t/linux-6.15-rc6.tar.gz>
tar xf linux-6.15-rc6.tar.gz
cd linux-6.15-rc6/
# get defconfig from xilinx
curl <https://github.com/Xilinx/linux-xlnx/raw/refs/heads/master/arch/arm64/configs/xilinx_defconfig> > arch/arm64/configs/xilinx_defconfig
make ARCH=arm64 xilinx_defconfig
# option 1, use llvm
make LLVM=1 ARCH=arm64 -j$(nproc)
# option 2, GCC
make CROSS_COMPILE=<path> ARCH=arm64 -j$(nproc)
cp arch/arm64/boot/Image ../xlnx-zcu102
qemu-system-aarch64 -M xlnx-zcu102,secure=on,virtualization=on \\
-m 4G -serial stdio -display none -device loader,file=u-boot.elf \\
-kernel bl31.elf \\
-device loader,addr=0x40000000,file=Image \\
-device loader,addr=0x2000000,file=zcu102.dtb