Ax5soc Build linux image from scratch

From Terasic Wiki

(Difference between revisions)
Jump to: navigation, search
(Created page with "reference: rocket https://www.rocketboards.org/foswiki/Documentation/BuildingBootloaderForAgilex5 OS: Ubuntu-22.04 (PC or Windows WLS) ---- '''1. Setting Up Environment''' * In...")
Line 29: Line 29:
export ARCH=arm64
export ARCH=arm64
export CROSS_COMPILE=aarch64-none-linux-gnu-
export CROSS_COMPILE=aarch64-none-linux-gnu-
 +
</pre>
 +
 +
'''2. Build Arm Trusted Firmware'''
 +
<pre>
 +
cd $TOP_FOLDER
 +
rm -rf arm-trusted-firmware
 +
git clone -b QPDS24.1_REL_AGILEX5_GSRD_PR https://github.com/altera-opensource/arm-trusted-firmware arm-trusted-firmware
 +
cd arm-trusted-firmware
 +
make -j $(nproc) PLAT=agilex5 bl31
 +
cd ..
 +
The following files is created:
 +
$TOP_FOLDER/arm-trusted-firmware/build/agilex5/release/bl31.bin (to used for u-boot.itb generation)
 +
Edit
 +
</pre>
 +
 +
'''3. Build U-Boot'''
 +
<pre>
 +
cd $TOP_FOLDER
 +
rm -rf u-boot-socfpga
 +
git clone -b atuma5_v1.1 https://github.com/terasic/u-boot-socfpga u-boot-socfpga
 +
cd u-boot-socfpga
 +
make mrproper
 +
cp atuma5.config .config
 +
# link to ATF
 +
ln -s ../arm-trusted-firmware/build/agilex5/release/bl31.bin
 +
make -j $(nproc)
 +
The following files is created:
 +
$TOP_FOLDER/u-boot-socfpga/u-boot.itb
 +
$TOP_FOLDER/u-boot-socfpga/spl/u-boot-spl-dtb.hex
 +
Edit
 +
</pre>
 +
 +
'''4. Creating the Boot Script'''
 +
<pre>
 +
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
 +
nano uboot.txt # content see bloew
 +
mkimage -f uboot_script.its boot.scr.uimg
 +
cd ..
 +
uboot.txt
 +
 +
echo "Trying to boot Linux from device ${target}";
 +
 +
if test ${target} = "mmc0"; then
 +
        echo "Found kernel in mmc0";       
 +
        mmc rescan;
 +
        fatload mmc 0:1 ${kernel_addr_r} Image;
 +
        fatload mmc 0:1 ${fdt_addr_r} socfpga_agilex5_terasic.dtb;
 +
        setenv bootargs "console=ttyS0,115200 root=${mmcroot} rw rootwait";
 +
        booti ${kernel_addr_r} - ${fdt_addr_r};
 +
        exit;
 +
fi
 +
The following files is created:
 +
$TOP_FOLDER/uboot-script/boot.scr.uimg
 +
Edit
</pre>
</pre>

Revision as of 10:11, 18 October 2024

reference: rocket https://www.rocketboards.org/foswiki/Documentation/BuildingBootloaderForAgilex5

OS: Ubuntu-22.04 (PC or Windows WLS)


1. Setting Up Environment

  • Install the required packages on Ubuntu:
sudo apt-get update
sudo apt-get upgrade
sudo apt install make bison flex python3-dev libssl-dev swig
sudo apt install u-boot-tools
sudo apt install qemu-user-static
  • Create top folder:
mkdir ATUM_A5_V1.2.sdmmc
cd ATUM_A5_V1.2.sdmmc
export TOP_FOLDER=`pwd`
  • Download and setup the the toolchain as follows:
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-

2. Build Arm Trusted Firmware

cd $TOP_FOLDER
rm -rf arm-trusted-firmware
git clone -b QPDS24.1_REL_AGILEX5_GSRD_PR https://github.com/altera-opensource/arm-trusted-firmware arm-trusted-firmware
cd arm-trusted-firmware
make -j $(nproc) PLAT=agilex5 bl31 
cd ..
The following files is created:
$TOP_FOLDER/arm-trusted-firmware/build/agilex5/release/bl31.bin (to used for u-boot.itb generation)
Edit

3. Build U-Boot

cd $TOP_FOLDER 
rm -rf u-boot-socfpga 
git clone -b atuma5_v1.1 https://github.com/terasic/u-boot-socfpga u-boot-socfpga 
cd u-boot-socfpga 
make mrproper 
cp atuma5.config .config
# link to ATF 
ln -s ../arm-trusted-firmware/build/agilex5/release/bl31.bin 
make -j $(nproc) 
The following files is created:
$TOP_FOLDER/u-boot-socfpga/u-boot.itb
$TOP_FOLDER/u-boot-socfpga/spl/u-boot-spl-dtb.hex
Edit

4. Creating the Boot Script

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 
nano uboot.txt # content see bloew
mkimage -f uboot_script.its boot.scr.uimg
cd ..
uboot.txt

echo "Trying to boot Linux from device ${target}";

if test ${target} = "mmc0"; then
        echo "Found kernel in mmc0";        
        mmc rescan;
        fatload mmc 0:1 ${kernel_addr_r} Image;
        fatload mmc 0:1 ${fdt_addr_r} socfpga_agilex5_terasic.dtb;
        setenv bootargs "console=ttyS0,115200 root=${mmcroot} rw rootwait";
        booti ${kernel_addr_r} - ${fdt_addr_r};
        exit;
fi
The following files is created:
$TOP_FOLDER/uboot-script/boot.scr.uimg
Edit
Personal tools