#!/bin/sh | |
# | |
# script to generate FIT image source for 64-bit sunxi boards with | |
# ARM Trusted Firmware and multiple device trees (given on the command line) | |
# | |
# usage: $0 <dt_name> [<dt_name> [<dt_name] ...] | |
[ -z "$BL31" ] && BL31="bl31.bin" | |
if [ ! -f $BL31 ]; then | |
echo "WARNING: BL31 file $BL31 NOT found, resulting binary is non-functional" >&2 | |
echo "Please read the section on ARM Trusted Firmware (ATF) in board/sunxi/README.sunxi64" >&2 | |
BL31=/dev/null | |
fi | |
cat << __HEADER_EOF | |
/dts-v1/; | |
/ { | |
description = "Configuration to load ATF before U-Boot"; | |
#address-cells = <1>; | |
images { | |
uboot@1 { | |
description = "U-Boot (64-bit)"; | |
data = /incbin/("u-boot-nodtb.bin"); | |
type = "standalone"; | |
arch = "arm64"; | |
compression = "none"; | |
load = <0x4a000000>; | |
}; | |
atf@1 { | |
description = "ARM Trusted Firmware"; | |
data = /incbin/("$BL31"); | |
type = "firmware"; | |
arch = "arm64"; | |
compression = "none"; | |
load = <0x44000>; | |
entry = <0x44000>; | |
}; | |
__HEADER_EOF | |
cnt=1 | |
for dtname in $* | |
do | |
cat << __FDT_IMAGE_EOF | |
fdt@$cnt { | |
description = "$(basename $dtname .dtb)"; | |
data = /incbin/("$dtname"); | |
type = "flat_dt"; | |
compression = "none"; | |
}; | |
__FDT_IMAGE_EOF | |
cnt=$((cnt+1)) | |
done | |
cat << __CONF_HEADER_EOF | |
}; | |
configurations { | |
default = "config@1"; | |
__CONF_HEADER_EOF | |
cnt=1 | |
for dtname in $* | |
do | |
cat << __CONF_SECTION_EOF | |
config@$cnt { | |
description = "$(basename $dtname .dtb)"; | |
firmware = "uboot@1"; | |
loadables = "atf@1"; | |
fdt = "fdt@$cnt"; | |
}; | |
__CONF_SECTION_EOF | |
cnt=$((cnt+1)) | |
done | |
cat << __ITS_EOF | |
}; | |
}; | |
__ITS_EOF |