Valid for most recent SW version as of August 2024.
Install packages on Ubuntu 22.04:
apt-get install g++-10-aarch64-linux-gnu device-tree-compiler libgnutls28-dev
export CROSS_COMPILE=aarch64-linux-gnu-
ATF:
git clone clone --depth 1 --branch master https://github.com/apritzel/arm-trusted-firmware.git
cd arm-trusted-firmware
make PLAT=sun50i_a64 bl31
export BL31=`pwd`/build/sun50i_a64/release/bl31.bin
U-boot:
git clone --depth 1 --branch master git://git.denx.de/u-boot.git
cd u-boot
make nanopi_a64_defconfig
make -j 16
MKIMAGE=`pwd`/tools/mkimage
SD card install:
sudo dd if=/dev/zero of=/dev/mmcblk0 bs=1M count=1
sudo fdisk /dev/mmcblk0
# make linux partition with 1MB offset
...
sudo mkfs.ext4 /dev/mmcblk0p1
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8
wget http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz
mkdir mnt
sudo mount /dev/mmcblk0p1 mnt
sudo bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C mnt
mnt/boot/boot.cmd:
setenv load_addr "0x45000000"
setenv overlay_error "false"
setenv rootdev "/dev/mmcblk0p1"
setenv verbosity "1"
setenv rootfstype "ext4"
setenv console "both"
setenv bootargs "root=${rootdev} rw rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}"
load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtbs/${fdtfile}
fdt addr ${fdt_addr_r}
fdt resize 65536
load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd
load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}Image
booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
sudo $MKIMAGE -C none -A arm -T script -d mnt/boot/boot.cmd mnt/boot/boot.scr
sudo $MKIMAGE -A arm -T ramdisk -C none -n uInitrd -d mnt/boot/initramfs-linux.img mnt/boot/uInitrd
dtbs/allwinner/sun50i-a64-nanopi-a64.dtb
should be replaced by corresponding file from Armbian image (or just directory and file be created instead of dtbs
from Arch tarball). Otherwise IPv4 packets are not transmitted for some reason (IPv6 works).
Serial console:
python3 -m serial.tools.miniterm --raw --eol LF /dev/ttyUSB0 115200
https://wiki.amarulasolutions.com/bsp/sunxi/a64/npi-a64.html