treewide: move mktplinkfw to tplink-v1-image in image-commands.mk

This move the slightly different target-specific implementations of
mktplinkfw from the targets to include/image-commands.mk and renames
it to tplink-v1-image. Having a common version will increase
consistency between implementation and will complete the
tplink build command already present in the new location.

Due to the slight differences of the original implementations, this
also does some adjustments to the device build commands/variables.

This also moves rootfs_align as this is required as dependency.

Tested on:
- TL-WDR4300 v1 (ath79, factory)
- TL-WDR4900 v1 (mpc85xx, sysupgrade)
- RE210 v1 (ramips, see Tested-by)

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Tested-by: Christoph Krapp <achterin@googlemail.com>
This commit is contained in:
Adrian Schmutzler 2019-12-31 13:57:50 +01:00
parent 0c97f034c9
commit 9b0e8d0aa4
6 changed files with 41 additions and 82 deletions

View file

@ -3,6 +3,10 @@
IMAGE_KERNEL = $(word 1,$^) IMAGE_KERNEL = $(word 1,$^)
IMAGE_ROOTFS = $(word 2,$^) IMAGE_ROOTFS = $(word 2,$^)
define rootfs_align
$(patsubst %-256k,0x40000,$(patsubst %-128k,0x20000,$(patsubst %-64k,0x10000,$(patsubst squashfs%,0x4,$(patsubst root.%,%,$(1))))))
endef
define Build/uImage define Build/uImage
mkimage -A $(LINUX_KARCH) \ mkimage -A $(LINUX_KARCH) \
-O linux -T kernel \ -O linux -T kernel \
@ -335,6 +339,24 @@ define Build/tplink-v1-header
@mv $@.new $@ @mv $@.new $@
endef endef
# combine kernel and rootfs into one image
# mktplinkfw <type> <optional extra arguments to mktplinkfw binary>
# <type> is "sysupgrade" or "factory"
#
# -a align the rootfs start on an <align> bytes boundary
# -j add jffs2 end-of-filesystem markers
# -s strip padding from end of the image
# -X reserve <size> bytes in the firmware image (hexval prefixed with 0x)
define Build/tplink-v1-image
-$(STAGING_DIR_HOST)/bin/mktplinkfw \
-H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) \
-N "$(VERSION_DIST)" -V $(REVISION) -m $(TPLINK_HEADER_VERSION) \
-k $(IMAGE_KERNEL) -r $(IMAGE_ROOTFS) -o $@.new -j -X 0x40000 \
-a $(call rootfs_align,$(FILESYSTEM)) \
$(wordlist 2,$(words $(1)),$(1)) \
$(if $(findstring sysupgrade,$(word 1,$(1))),-s) && mv $@.new $@ || rm -f $@
endef
define Build/tplink-v2-header define Build/tplink-v2-header
$(STAGING_DIR_HOST)/bin/mktplinkfw2 \ $(STAGING_DIR_HOST)/bin/mktplinkfw2 \
-c -H $(TPLINK_HWID) -W $(TPLINK_HWREV) -L $(KERNEL_LOADADDR) \ -c -H $(TPLINK_HWID) -W $(TPLINK_HWREV) -L $(KERNEL_LOADADDR) \

View file

@ -1,28 +1,6 @@
DEVICE_VARS += TPLINK_HWID TPLINK_HWREV TPLINK_FLASHLAYOUT TPLINK_HEADER_VERSION DEVICE_VARS += TPLINK_HWID TPLINK_HWREV TPLINK_FLASHLAYOUT TPLINK_HEADER_VERSION
DEVICE_VARS += TPLINK_BOARD_NAME TPLINK_BOARD_ID DEVICE_VARS += TPLINK_BOARD_NAME TPLINK_BOARD_ID
define rootfs_align
$(patsubst %-256k,0x40000,$(patsubst %-128k,0x20000,$(patsubst %-64k,0x10000,$(patsubst squashfs%,0x4,$(patsubst root.%,%,$(1))))))
endef
# combine kernel and rootfs into one image
# mktplinkfw <type> <optional extra arguments to mktplinkfw binary>
# <type> is "sysupgrade" or "factory"
#
# -a align the rootfs start on an <align> bytes boundary
# -j add jffs2 end-of-filesystem markers
# -s strip padding from end of the image
# -X reserve <size> bytes in the firmware image (hexval prefixed with 0x)
define Build/mktplinkfw
-$(STAGING_DIR_HOST)/bin/mktplinkfw \
-H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) \
-N OpenWrt -V $(REVISION) -m $(TPLINK_HEADER_VERSION) \
-k $(IMAGE_KERNEL) -r $@ -o $@.new -j -X 0x40000 \
-a $(call rootfs_align,$(FILESYSTEM)) \
$(wordlist 2,$(words $(1)),$(1)) \
$(if $(findstring sysupgrade,$(word 1,$(1))),-s) && mv $@.new $@ || rm -f $@
endef
# mktplinkfw-combined # mktplinkfw-combined
# #
# -c combined image # -c combined image
@ -50,9 +28,8 @@ define Device/tplink
KERNEL := kernel-bin | append-dtb | lzma KERNEL := kernel-bin | append-dtb | lzma
KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | tplink-v1-header KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | tplink-v1-header
IMAGES += factory.bin IMAGES += factory.bin
IMAGE/sysupgrade.bin := append-rootfs | mktplinkfw sysupgrade | \ IMAGE/sysupgrade.bin := tplink-v1-image sysupgrade | append-metadata
append-metadata IMAGE/factory.bin := tplink-v1-image factory
IMAGE/factory.bin := append-rootfs | mktplinkfw factory
endef endef
define Device/tplink-nolzma define Device/tplink-nolzma

View file

@ -157,8 +157,8 @@ define Device/tplink_archer-c7-v2
TPLINK_HWID := 0xc7000002 TPLINK_HWID := 0xc7000002
SUPPORTED_DEVICES += archer-c7 SUPPORTED_DEVICES += archer-c7
IMAGES += factory-us.bin factory-eu.bin IMAGES += factory-us.bin factory-eu.bin
IMAGE/factory-us.bin := append-rootfs | mktplinkfw factory -C US IMAGE/factory-us.bin := tplink-v1-image factory -C US
IMAGE/factory-eu.bin := append-rootfs | mktplinkfw factory -C EU IMAGE/factory-eu.bin := tplink-v1-image factory -C EU
endef endef
TARGET_DEVICES += tplink_archer-c7-v2 TARGET_DEVICES += tplink_archer-c7-v2
@ -502,9 +502,9 @@ define Device/tplink_tl-wr2543-v1
DEVICE_VARIANT := v1 DEVICE_VARIANT := v1
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ledtrig-usbport DEVICE_PACKAGES := kmod-usb2 kmod-usb-ledtrig-usbport
TPLINK_HWID := 0x25430001 TPLINK_HWID := 0x25430001
IMAGE/sysupgrade.bin := append-rootfs | mktplinkfw sysupgrade -v 3.13.99 | \ IMAGE/sysupgrade.bin := tplink-v1-image sysupgrade -v 3.13.99 | \
append-metadata | check-size $$$$(IMAGE_SIZE) append-metadata | check-size $$$$(IMAGE_SIZE)
IMAGE/factory.bin := append-rootfs | mktplinkfw factory -v 3.13.99 IMAGE/factory.bin := tplink-v1-image factory -v 3.13.99
SUPPORTED_DEVICES += tl-wr2543-v1 SUPPORTED_DEVICES += tl-wr2543-v1
endef endef
TARGET_DEVICES += tplink_tl-wr2543-v1 TARGET_DEVICES += tplink_tl-wr2543-v1

View file

@ -198,8 +198,8 @@ define Device/tplink_tl-wr841-v11
TPLINK_HWID := 0x08410011 TPLINK_HWID := 0x08410011
SUPPORTED_DEVICES += tl-wr841n-v11 SUPPORTED_DEVICES += tl-wr841n-v11
IMAGES += factory-us.bin factory-eu.bin IMAGES += factory-us.bin factory-eu.bin
IMAGE/factory-us.bin := append-rootfs | mktplinkfw factory -C US IMAGE/factory-us.bin := tplink-v1-image factory -C US
IMAGE/factory-eu.bin := append-rootfs | mktplinkfw factory -C EU IMAGE/factory-eu.bin := tplink-v1-image factory -C EU
endef endef
TARGET_DEVICES += tplink_tl-wr841-v11 TARGET_DEVICES += tplink_tl-wr841-v11
@ -211,8 +211,8 @@ define Device/tplink_tl-wr841-v12
TPLINK_HWID := 0x08410012 TPLINK_HWID := 0x08410012
SUPPORTED_DEVICES += tl-wr841n-v11 SUPPORTED_DEVICES += tl-wr841n-v11
IMAGES += factory-us.bin factory-eu.bin IMAGES += factory-us.bin factory-eu.bin
IMAGE/factory-us.bin := append-rootfs | mktplinkfw factory -C US IMAGE/factory-us.bin := tplink-v1-image factory -C US
IMAGE/factory-eu.bin := append-rootfs | mktplinkfw factory -C EU IMAGE/factory-eu.bin := tplink-v1-image factory -C EU
endef endef
TARGET_DEVICES += tplink_tl-wr841-v12 TARGET_DEVICES += tplink_tl-wr841-v12
@ -234,9 +234,9 @@ define Device/tplink_tl-wr940n-v4
TPLINK_HWID := 0x09400004 TPLINK_HWID := 0x09400004
SUPPORTED_DEVICES += tl-wr940n-v4 SUPPORTED_DEVICES += tl-wr940n-v4
IMAGES += factory-us.bin factory-eu.bin factory-br.bin IMAGES += factory-us.bin factory-eu.bin factory-br.bin
IMAGE/factory-us.bin := append-rootfs | mktplinkfw factory -C US IMAGE/factory-us.bin := tplink-v1-image factory -C US
IMAGE/factory-eu.bin := append-rootfs | mktplinkfw factory -C EU IMAGE/factory-eu.bin := tplink-v1-image factory -C EU
IMAGE/factory-br.bin := append-rootfs | mktplinkfw factory -C BR IMAGE/factory-br.bin := tplink-v1-image factory -C BR
endef endef
TARGET_DEVICES += tplink_tl-wr940n-v4 TARGET_DEVICES += tplink_tl-wr940n-v4

View file

@ -5,36 +5,12 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk include $(INCLUDE_DIR)/image.mk
DEVICE_VARS += TPLINK_HWID TPLINK_HWREV TPLINK_FLASHLAYOUT DEVICE_VARS += TPLINK_HWID TPLINK_HWREV TPLINK_FLASHLAYOUT TPLINK_HEADER_VERSION
define rootfs_align
$(patsubst %-256k,0x40000,$(patsubst %-128k,0x20000,$(patsubst %-64k,0x10000,$(patsubst squashfs%,0x4,$(patsubst root.%,%,$(1))))))
endef
define Build/copy-file define Build/copy-file
cat "$(1)" > "$@" cat "$(1)" > "$@"
endef endef
# combine kernel and rootfs into one image
# mktplinkfw <type> <optional extra arguments to mktplinkfw binary>
# <type> is "sysupgrade" or "factory"
#
# -a align the rootfs start on an <align> bytes boundary
# -j add jffs2 end-of-filesystem markers
# -s strip padding from end of the image
# -X reserve <size> bytes in the firmware image (hexval prefixed with 0x)
define Build/mktplinkfw
-$(STAGING_DIR_HOST)/bin/mktplinkfw \
-H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) -N OpenWrt -V $(REVISION) \
-k $(IMAGE_KERNEL) \
-r $@ \
-o $@.new \
-j -X 0x40000 \
-a $(call rootfs_align,$(FILESYSTEM)) \
$(wordlist 2,$(words $(1)),$(1)) \
$(if $(findstring sysupgrade,$(word 1,$(1))),-s) && mv $@.new $@ || rm -f $@
endef
define Device/Default define Device/Default
PROFILES := Default PROFILES := Default
DEVICE_DTS := $(lastword $(subst _, ,$(1))) DEVICE_DTS := $(lastword $(subst _, ,$(1)))
@ -51,6 +27,7 @@ define Device/tplink_tl-wdr4900-v1
DEVICE_VENDOR := TP-Link DEVICE_VENDOR := TP-Link
DEVICE_MODEL := TL-WDR4900 DEVICE_MODEL := TL-WDR4900
DEVICE_VARIANT := v1 DEVICE_VARIANT := v1
TPLINK_HEADER_VERSION := 1
TPLINK_HWID := 0x49000001 TPLINK_HWID := 0x49000001
TPLINK_HWREV := 1 TPLINK_HWREV := 1
TPLINK_FLASHLAYOUT := 16Mppc TPLINK_FLASHLAYOUT := 16Mppc
@ -64,8 +41,8 @@ define Device/tplink_tl-wdr4900-v1
ARTIFACTS := fdt.bin ARTIFACTS := fdt.bin
ARTIFACT/fdt.bin := append-dtb ARTIFACT/fdt.bin := append-dtb
IMAGES := fdt.bin factory.bin sysupgrade.bin IMAGES := fdt.bin factory.bin sysupgrade.bin
IMAGE/sysupgrade.bin := append-rootfs | mktplinkfw sysupgrade | append-metadata IMAGE/sysupgrade.bin := tplink-v1-image sysupgrade | append-metadata
IMAGE/factory.bin := append-rootfs | mktplinkfw factory IMAGE/factory.bin := tplink-v1-image factory
endef endef
TARGET_DEVICES += tplink_tl-wdr4900-v1 TARGET_DEVICES += tplink_tl-wdr4900-v1

View file

@ -16,23 +16,6 @@ define Build/elecom-header
--owner=0 --group=0 -f $@ -C $(KDIR) v_0.0.0.bin v_0.0.0.md5 --owner=0 --group=0 -f $@ -C $(KDIR) v_0.0.0.bin v_0.0.0.md5
endef endef
# combine kernel and rootfs into one image
# mktplinkfw <type> <optional extra arguments to mktplinkfw binary>
# <type> is "sysupgrade" or "factory"
#
# -a align the rootfs start on an <align> bytes boundary
# -j add jffs2 end-of-filesystem markers
# -s strip padding from end of the image
# -X reserve <size> bytes in the firmware image (hexval prefixed with 0x)
define Build/mktplinkfw
-$(STAGING_DIR_HOST)/bin/mktplinkfw \
-H $(TPLINK_HWID) -W $(TPLINK_HWREV) -F $(TPLINK_FLASHLAYOUT) \
-N OpenWrt -V $(REVISION) -m $(TPLINK_HEADER_VERSION) \
-k $(IMAGE_KERNEL) -r $(IMAGE_ROOTFS) -o $@.new -j -X 0x40000 -a 0x4 \
$(wordlist 2,$(words $(1)),$(1)) \
$(if $(findstring sysupgrade,$(word 1,$(1))),-s) && mv $@.new $@ || rm -f $@
endef
define Device/aigale_ai-br100 define Device/aigale_ai-br100
SOC := mt7620a SOC := mt7620a
IMAGE_SIZE := 7936k IMAGE_SIZE := 7936k
@ -962,8 +945,8 @@ define Device/tplink_re200-v1
DEVICE_VARIANT := v1 DEVICE_VARIANT := v1
DEVICE_PACKAGES := kmod-mt76x0e DEVICE_PACKAGES := kmod-mt76x0e
IMAGES += factory.bin IMAGES += factory.bin
IMAGE/sysupgrade.bin := mktplinkfw sysupgrade -e -O | append-metadata IMAGE/sysupgrade.bin := tplink-v1-image sysupgrade -e -O | append-metadata
IMAGE/factory.bin := mktplinkfw factory -e -O IMAGE/factory.bin := tplink-v1-image factory -e -O
IMAGE_SIZE := 7936k IMAGE_SIZE := 7936k
KERNEL := $(KERNEL_DTB) KERNEL := $(KERNEL_DTB)
KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-v1-header -e -O KERNEL_INITRAMFS := $(KERNEL_DTB) | tplink-v1-header -e -O