mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 01:22:25 +00:00
* update mkits.sh to work with 2021.04 uboot * add mediatek pstore Signed-off-by: John Crispin <john@phrozen.org>
267 lines
7.8 KiB
Diff
267 lines
7.8 KiB
Diff
From 43f832c25bb9dee1a817370ab11531e81348f177 Mon Sep 17 00:00:00 2001
|
|
From: John Crispin <john@phrozen.org>
|
|
Date: Sun, 9 May 2021 12:23:00 +0200
|
|
Subject: [PATCH 42/43] backport: mkits.sh
|
|
|
|
969083634481c3ab5fb80509f385ef10ab45b55f
|
|
e991c1b8a2385397fc1e657ed73878938997d951
|
|
9f714398e060c6338fbfad44cdbfa8c940dbb84b
|
|
|
|
Signed-off-by: John Crispin <john@phrozen.org>
|
|
---
|
|
include/image-commands.mk | 2 +-
|
|
include/image.mk | 2 +-
|
|
scripts/mkits.sh | 101 +++++++++++++++++++++++++---
|
|
target/linux/ipq40xx/image/Makefile | 1 +
|
|
target/linux/ipq806x/image/Makefile | 1 +
|
|
5 files changed, 95 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/include/image-commands.mk b/include/image-commands.mk
|
|
index bde6e030bc..f97d4363d1 100644
|
|
--- a/include/image-commands.mk
|
|
+++ b/include/image-commands.mk
|
|
@@ -204,7 +204,7 @@ define Build/fit
|
|
$(if $(word 3,$(1)),-r $(IMAGE_ROOTFS) -f $(subst _,$(comma),$(DEVICE_NAME))) \
|
|
-a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
|
|
$(if $(DEVICE_FDT_NUM),-n $(DEVICE_FDT_NUM)) \
|
|
- -c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config@1") \
|
|
+ -c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config-1") \
|
|
-A $(LINUX_KARCH) -v $(LINUX_VERSION)
|
|
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage $(if $(word 3,$(1)),-E -B 0x1000 -p 0x1000) -f $@.its $@.new
|
|
@mv $@.new $@
|
|
diff --git a/include/image.mk b/include/image.mk
|
|
index fc46012e87..7a48b789af 100644
|
|
--- a/include/image.mk
|
|
+++ b/include/image.mk
|
|
@@ -139,7 +139,7 @@ endef
|
|
define Image/BuildKernel/MkFIT
|
|
$(TOPDIR)/scripts/mkits.sh \
|
|
-D $(1) -o $(KDIR)/fit-$(1).its -k $(2) $(if $(3),-d $(3)) -C $(4) -a $(5) -e $(6) \
|
|
- -c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config@1") \
|
|
+ -c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config-1") \
|
|
-A $(LINUX_KARCH) -v $(LINUX_VERSION)
|
|
PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $(KDIR)/fit-$(1).its $(KDIR)/fit-$(1)$(7).itb
|
|
endef
|
|
diff --git a/scripts/mkits.sh b/scripts/mkits.sh
|
|
index 3d68fdacbc..7533baf799 100755
|
|
--- a/scripts/mkits.sh
|
|
+++ b/scripts/mkits.sh
|
|
@@ -24,22 +24,29 @@ usage() {
|
|
printf "\n\t-a ==> set load address to 'addr' (hex)"
|
|
printf "\n\t-e ==> set entry point to 'entry' (hex)"
|
|
printf "\n\t-f ==> set device tree compatible string"
|
|
+ printf "\n\t-i ==> include initrd Blob 'initrd'"
|
|
printf "\n\t-v ==> set kernel version to 'version'"
|
|
printf "\n\t-k ==> include kernel image 'kernel'"
|
|
printf "\n\t-D ==> human friendly Device Tree Blob 'name'"
|
|
printf "\n\t-n ==> fdt unit-address 'address'"
|
|
printf "\n\t-d ==> include Device Tree Blob 'dtb'"
|
|
- printf "\n\t-r ==> include RootFS blob"
|
|
+ printf "\n\t-r ==> include RootFS blob 'rootfs'"
|
|
printf "\n\t-H ==> specify hash algo instead of SHA1"
|
|
- printf "\n\t-o ==> create output file 'its_file'\n"
|
|
+ printf "\n\t-o ==> create output file 'its_file'"
|
|
+ printf "\n\t-O ==> create config with dt overlay 'name:dtb'"
|
|
+ printf "\n\t\t(can be specified more than once)\n"
|
|
exit 1
|
|
}
|
|
|
|
FDTNUM=1
|
|
ROOTFSNUM=1
|
|
+INITRDNUM=1
|
|
HASH=sha1
|
|
+LOADABLES=
|
|
+DTOVERLAY=
|
|
+DTADDR=
|
|
|
|
-while getopts ":A:a:c:C:D:d:e:f:k:n:o:v:r:S" OPTION
|
|
+while getopts ":A:a:c:C:D:d:e:f:i:k:n:o:O:v:r:S" OPTION
|
|
do
|
|
case $OPTION in
|
|
A ) ARCH=$OPTARG;;
|
|
@@ -50,9 +57,11 @@ do
|
|
d ) DTB=$OPTARG;;
|
|
e ) ENTRY_ADDR=$OPTARG;;
|
|
f ) COMPATIBLE=$OPTARG;;
|
|
+ i ) INITRD=$OPTARG;;
|
|
k ) KERNEL=$OPTARG;;
|
|
n ) FDTNUM=$OPTARG;;
|
|
o ) OUTPUT=$OPTARG;;
|
|
+ O ) DTOVERLAY="$DTOVERLAY ${OPTARG}";;
|
|
r ) ROOTFS=$OPTARG;;
|
|
S ) HASH=$OPTARG;;
|
|
v ) VERSION=$OPTARG;;
|
|
@@ -74,14 +83,20 @@ if [ -n "${COMPATIBLE}" ]; then
|
|
COMPATIBLE_PROP="compatible = \"${COMPATIBLE}\";"
|
|
fi
|
|
|
|
+[ "$DTOVERLAY" ] && {
|
|
+ dtbsize=$(wc -c "$DTB" | cut -d' ' -f1)
|
|
+ DTADDR=$(printf "0x%08x" $(($LOAD_ADDR - $dtbsize)) )
|
|
+}
|
|
+
|
|
# Conditionally create fdt information
|
|
if [ -n "${DTB}" ]; then
|
|
FDT_NODE="
|
|
- fdt@$FDTNUM {
|
|
+ fdt-$FDTNUM {
|
|
description = \"${ARCH_UPPER} OpenWrt ${DEVICE} device tree blob\";
|
|
${COMPATIBLE_PROP}
|
|
data = /incbin/(\"${DTB}\");
|
|
type = \"flat_dt\";
|
|
+ ${DTADDR:+load = <${DTADDR}>;}
|
|
arch = \"${ARCH}\";
|
|
compression = \"none\";
|
|
hash@1 {
|
|
@@ -92,13 +107,34 @@ if [ -n "${DTB}" ]; then
|
|
};
|
|
};
|
|
"
|
|
- FDT_PROP="fdt = \"fdt@$FDTNUM\";"
|
|
+ FDT_PROP="fdt = \"fdt-$FDTNUM\";"
|
|
fi
|
|
|
|
+if [ -n "${INITRD}" ]; then
|
|
+ INITRD_NODE="
|
|
+ initrd-$INITRDNUM {
|
|
+ description = \"${ARCH_UPPER} OpenWrt ${DEVICE} initrd\";
|
|
+ ${COMPATIBLE_PROP}
|
|
+ data = /incbin/(\"${INITRD}\");
|
|
+ type = \"ramdisk\";
|
|
+ arch = \"${ARCH}\";
|
|
+ os = \"linux\";
|
|
+ hash@1 {
|
|
+ algo = \"crc32\";
|
|
+ };
|
|
+ hash@2 {
|
|
+ algo = \"${HASH}\";
|
|
+ };
|
|
+ };
|
|
+"
|
|
+ INITRD_PROP="ramdisk=\"initrd-${INITRDNUM}\";"
|
|
+fi
|
|
+
|
|
+
|
|
if [ -n "${ROOTFS}" ]; then
|
|
dd if="${ROOTFS}" of="${ROOTFS}.pagesync" bs=4096 conv=sync
|
|
ROOTFS_NODE="
|
|
- rootfs@$ROOTFSNUM {
|
|
+ rootfs-$ROOTFSNUM {
|
|
description = \"${ARCH_UPPER} OpenWrt ${DEVICE} rootfs\";
|
|
${COMPATIBLE_PROP}
|
|
data = /incbin/(\"${ROOTFS}.pagesync\");
|
|
@@ -113,9 +149,50 @@ if [ -n "${ROOTFS}" ]; then
|
|
};
|
|
};
|
|
"
|
|
- ROOTFS_PROP="loadables = \"rootfs@${ROOTFSNUM}\";"
|
|
+ LOADABLES="${LOADABLES:+$LOADABLES, }\"rootfs-${ROOTFSNUM}\""
|
|
fi
|
|
|
|
+# add DT overlay blobs
|
|
+FDTOVERLAY_NODE=""
|
|
+OVCONFIGS=""
|
|
+[ "$DTOVERLAY" ] && for overlay in $DTOVERLAY ; do
|
|
+ overlay_blob=${overlay##*:}
|
|
+ ovname=${overlay%%:*}
|
|
+ ovnode="fdt-$ovname"
|
|
+ ovsize=$(wc -c "$overlay_blob" | cut -d' ' -f1)
|
|
+ echo "$ovname ($overlay_blob) : $ovsize" >&2
|
|
+ DTADDR=$(printf "0x%08x" $(($DTADDR - $ovsize)))
|
|
+ FDTOVERLAY_NODE="$FDTOVERLAY_NODE
|
|
+
|
|
+ $ovnode {
|
|
+ description = \"${ARCH_UPPER} OpenWrt ${DEVICE} device tree overlay $ovname\";
|
|
+ ${COMPATIBLE_PROP}
|
|
+ data = /incbin/(\"${overlay_blob}\");
|
|
+ type = \"flat_dt\";
|
|
+ arch = \"${ARCH}\";
|
|
+ load = <${DTADDR}>;
|
|
+ compression = \"none\";
|
|
+ hash@1 {
|
|
+ algo = \"crc32\";
|
|
+ };
|
|
+ hash@2 {
|
|
+ algo = \"${HASH}\";
|
|
+ };
|
|
+ };
|
|
+"
|
|
+ OVCONFIGS="$OVCONFIGS
|
|
+
|
|
+ config-$ovname {
|
|
+ description = \"OpenWrt ${DEVICE} with $ovname\";
|
|
+ kernel = \"kernel-1\";
|
|
+ fdt = \"fdt-$FDTNUM\", \"$ovnode\";
|
|
+ ${LOADABLES:+loadables = ${LOADABLES};}
|
|
+ ${COMPATIBLE_PROP}
|
|
+ ${INITRD_PROP}
|
|
+ };
|
|
+ "
|
|
+done
|
|
+
|
|
# Create a default, fully populated DTS file
|
|
DATA="/dts-v1/;
|
|
|
|
@@ -124,7 +201,7 @@ DATA="/dts-v1/;
|
|
#address-cells = <1>;
|
|
|
|
images {
|
|
- kernel@1 {
|
|
+ kernel-1 {
|
|
description = \"${ARCH_UPPER} OpenWrt Linux-${VERSION}\";
|
|
data = /incbin/(\"${KERNEL}\");
|
|
type = \"kernel\";
|
|
@@ -140,7 +217,9 @@ DATA="/dts-v1/;
|
|
algo = \"$HASH\";
|
|
};
|
|
};
|
|
+${INITRD_NODE}
|
|
${FDT_NODE}
|
|
+${FDTOVERLAY_NODE}
|
|
${ROOTFS_NODE}
|
|
};
|
|
|
|
@@ -148,11 +227,13 @@ ${ROOTFS_NODE}
|
|
default = \"${CONFIG}\";
|
|
${CONFIG} {
|
|
description = \"OpenWrt ${DEVICE}\";
|
|
- kernel = \"kernel@1\";
|
|
+ kernel = \"kernel-1\";
|
|
${FDT_PROP}
|
|
- ${ROOTFS_PROP}
|
|
+ ${LOADABLES:+loadables = ${LOADABLES};}
|
|
${COMPATIBLE_PROP}
|
|
+ ${INITRD_PROP}
|
|
};
|
|
+ ${OVCONFIGS}
|
|
};
|
|
};"
|
|
|
|
diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
|
|
index 2be262936f..a0d6242a28 100644
|
|
--- a/target/linux/ipq40xx/image/Makefile
|
|
+++ b/target/linux/ipq40xx/image/Makefile
|
|
@@ -8,6 +8,7 @@ define Device/Default
|
|
KERNEL_PREFIX := $$(IMAGE_PREFIX)
|
|
KERNEL_LOADADDR := 0x80208000
|
|
DEVICE_DTS = $$(SOC)-$(lastword $(subst _, ,$(1)))
|
|
+ DEVICE_DTS_CONFIG := config@1
|
|
IMAGES := sysupgrade.bin
|
|
IMAGE/sysupgrade.bin = sysupgrade-tar | append-metadata
|
|
IMAGE/sysupgrade.bin/squashfs :=
|
|
diff --git a/target/linux/ipq806x/image/Makefile b/target/linux/ipq806x/image/Makefile
|
|
index bab1da0090..3bc60fa931 100644
|
|
--- a/target/linux/ipq806x/image/Makefile
|
|
+++ b/target/linux/ipq806x/image/Makefile
|
|
@@ -30,6 +30,7 @@ define Device/Default
|
|
KERNEL_PREFIX := $$(IMAGE_PREFIX)
|
|
KERNEL_LOADADDR = 0x42208000
|
|
DEVICE_DTS = $$(SOC)-$(lastword $(subst _, ,$(1)))
|
|
+ DEVICE_DTS_CONFIG := config@1
|
|
IMAGES := sysupgrade.bin
|
|
IMAGE/sysupgrade.bin = sysupgrade-tar | append-metadata
|
|
IMAGE/sysupgrade.bin/squashfs :=
|
|
--
|
|
2.25.1
|
|
|