Difference between revisions of "Quartz64 Building U-Boot"
(Create a guide on how to compile mainline U-Boot for Quartz64/SOQuartz) |
m (clarify cwd) |
||
Line 15: | Line 15: | ||
git clone https://source.denx.de/u-boot/u-boot.git | git clone https://source.denx.de/u-boot/u-boot.git | ||
You can use <code>git checkout <var>tagname</var></code> to check out a specific git tag (release), you can list all of them with <code>git tag -l</code> (but do keep in mind we only have device support since v2023.10). | You can use <code>git checkout <var>tagname</var></code> inside the ''u-boot'' directory to check out a specific git tag (release), you can list all of them with <code>git tag -l</code> (but do keep in mind we only have device support since v2023.10). | ||
Then, also use git to clone the rockchip firmware binaries repository into the directory ''rkbin'': | Then, also use git to clone the rockchip firmware binaries repository into the directory ''rkbin'': |
Revision as of 09:08, 31 August 2023
This article guides you through compiling U-Boot for a Quartz64 or SOQuartz device.
Prerequisites
You will need either an x86 machine with an aarch64 cross-compiler installed, or an existing aarch64 system. You will also need the device tree compiler dtc, python3 (including setuptools and pyelftools), swig, GNU make and git.
On an x86_64 Arch Linux system, you can install the required dependencies with:
pacman -S --needed base-devel aarch64-linux-gnu-gcc aarch64-linux-gnu-binutils git dtc python-setuptools swig python-pyelftools
Fetching The Repositories
Use git to clone the mainline U-Boot repository into the directory u-boot:
git clone https://source.denx.de/u-boot/u-boot.git
You can use git checkout tagname
inside the u-boot directory to check out a specific git tag (release), you can list all of them with git tag -l
(but do keep in mind we only have device support since v2023.10).
Then, also use git to clone the rockchip firmware binaries repository into the directory rkbin:
git clone https://github.com/rockchip-linux/rkbin.git
Setting Up Your Environment
Next, we need to set two environment variables: ROCKCHIP_TPL
for the DRAM init binary, and BL31
for the ARM Trusted Firmware binary.
cd u-boot export ROCKCHIP_TPL="$(ls ../rkbin/bin/rk35/rk3566_ddr_1056MHz_v*.bin | sort | tail -n1)" export BL31="$(ls ../rkbin/bin/rk35/rk3568_bl31_v*.elf | sort | tail -n1)"
Configuring U-Boot
First, we need to use the right default config for our device. Please choose defconfig from the following table depending on your device:
Board | defconfig |
---|---|
Quartz64 Model A | quartz64-a-rk3566_defconfig
|
Quartz64 Model B | quartz64-b-rk3566_defconfig
|
SOQuartz on Model A | soquartz-model-a-rk3566_defconfig
|
SOQuartz on Blade | soquartz-blade-rk3566_defconfig
|
SOQuartz on CM4 I/O Board | soquartz-cm4-rk3566_defconfig
|
In the u-boot directory with your environment variables set, run:
make CROSS_COMPILE=aarch64-linux-gnu- defconfig
with defconfig being the value from the previous table.
Building U-Boot
In the u-boot directory, after configuring, and with your environment variables set, run:
make CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)
This will output a u-boot-rockchip.bin, which is your freshly built SPL+U-Boot combined image.