openwrt/target/linux/mpc85xx/image/Makefile
Chris Blake 98089bb8ba mpc85xx: Use uncompressed kernel on the HiveAP-330
It seems that newer builds of OpenWRT have a gzip kernel
larger than 2MB~, which for some reason fails to boot on this board.

However, we have 8MB of kernel space and currently the uncompressed
kernel is 6.5MB~, so we have some space to grow until a better
solution is worked out.

Before:
 ## Booting kernel from Legacy Image at ee840000 ...
  Image Name:   Linux-4.19.53
  Created:      2019-06-22  11:17:48 UTC
  Image Type:   PowerPC Linux Kernel Image (gzip compressed)
  Data Size:    2315724 Bytes =  2.2 MB
  Load Address: 00000000
  Entry Point:  00000000
  Verifying Checksum ... OK
 ## Loading init Ramdisk from Legacy Image at 02000000 ...
  Image Name:   OpenWrt fake ramdisk
  Created:      2019-06-22  11:17:48 UTC
  Image Type:   PowerPC Linux RAMDisk Image (uncompressed)
  Data Size:    0 Bytes =  0 kB
  Load Address: 00000000
  Entry Point:  00000000
  Verifying Checksum ... OK
 ## Flattened Device Tree blob at ec000000
  Booting using the fdt blob at 0xec000000
  Uncompressing Kernel Image ... Error: Bad gzipped data
  GUNZIP: uncompress, out-of-mem or overwrite error -
	must RESET board to recover
  Loading Ramdisk to 10000000, end 10000000 ... OK
  Loading Device Tree to 00ffa000, end 00fffc78 ... OK
  ft_fixup_l2cache: FDT_ERR_NOTFOUND

After:
 ## Booting kernel from Legacy Image at ee840000 ...
  Image Name:   POWERPC OpenWrt Linux-4.19.53
  Created:      2019-06-22  11:17:48 UTC
  Image Type:   PowerPC Linux Kernel Image (uncompressed)
  Data Size:    6724584 Bytes =  6.4 MB
  Load Address: 00000000
  Entry Point:  00000000
  Verifying Checksum ... OK
 ## Loading init Ramdisk from Legacy Image at 02000000 ...
  Image Name:   OpenWrt fake ramdisk
  Created:      2019-06-22  11:17:48 UTC
  Image Type:   PowerPC Linux RAMDisk Image (uncompressed)
  Data Size:    0 Bytes =  0 kB
  Load Address: 00000000
  Entry Point:  00000000
  Verifying Checksum ... OK
 ## Flattened Device Tree blob at ec000000
  Booting using the fdt blob at 0xec000000
  Loading Kernel Image ... OK
  OK
  Loading Ramdisk to 10000000, end 10000000 ... OK
  Loading Device Tree to 00ffa000, end 00fffc78 ... OK

Signed-off-by: Chris Blake <chrisrblake93@gmail.com>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [75 cpl limit]
2019-06-24 20:31:08 +02:00

137 lines
4.1 KiB
Makefile

#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/image.mk
DEVICE_VARS += TPLINK_HWID TPLINK_HWREV TPLINK_FLASHLAYOUT
define rootfs_align
$(patsubst %-256k,0x40000,$(patsubst %-128k,0x20000,$(patsubst %-64k,0x10000,$(patsubst squashfs%,0x4,$(patsubst root.%,%,$(1))))))
endef
define Build/copy-file
cat "$(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) \
-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
PROFILES := Default
DEVICE_DTS := $(1)
KERNEL_DEPENDS = $$(wildcard $(DTS_DIR)/$$(DEVICE_DTS).dts)
KERNEL_ENTRY := 0x00000000
KERNEL_LOADADDR := 0x00000000
KERNEL := kernel-bin
endef
ifeq ($(SUBTARGET),generic)
define Device/tl-wdr4900-v1
DEVICE_TITLE := TP-Link TL-WDR4900
TPLINK_HWID := 0x49000001
TPLINK_HWREV := 1
TPLINK_FLASHLAYOUT := 16Mppc
KERNEL_SIZE := 2684k
KERNEL_NAME := simpleImage.tl-wdr4900-v1
KERNEL_INITRAMFS :=
KERNEL := kernel-bin | uImage none
KERNEL_ENTRY := 0x1000000
KERNEL_LOADADDR := 0x1000000
SUPPORTED_DEVICES:=tl-wdr4900-v1 tplink,tl-wdr4900-v1
ARTIFACTS := fdt.bin
ARTIFACT/fdt.bin := append-dtb
IMAGES := fdt.bin factory.bin sysupgrade.bin
IMAGE/sysupgrade.bin := append-rootfs | mktplinkfw sysupgrade | append-metadata
IMAGE/factory.bin := append-rootfs | mktplinkfw factory
endef
TARGET_DEVICES += tl-wdr4900-v1
define Device/red-15w-rev1
DEVICE_TITLE := Sophos RED 15w Rev.1
# Original firmware uses a dedicated DTB-partition.
# The bootloader however supports FIT-images.
KERNEL = kernel-bin | gzip | fit gzip $(KDIR)/image-$$(DEVICE_DTS).dtb
SUPPORTED_DEVICES := sophos,red-15w-rev1
IMAGES := sysupgrade.bin
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
endef
TARGET_DEVICES += red-15w-rev1
endif
ifeq ($(SUBTARGET),p1020)
define Device/hiveap-330
DEVICE_TITLE := Aerohive HiveAP-330
DEVICE_PACKAGES := kmod-tpm-i2c-atmel
BLOCKSIZE := 128k
KERNEL := kernel-bin | uImage none
KERNEL_SIZE := 8m
KERNEL_INITRAMFS := copy-file $(KDIR)/vmlinux-initramfs | uImage none
SUPPORTED_DEVICES := aerohive,hiveap-330
IMAGES := fdt.bin sysupgrade.bin
IMAGE/fdt.bin := append-dtb
IMAGE/sysupgrade.bin := append-dtb | pad-to 256k | check-size 256k | \
append-uImage-fakehdr ramdisk | pad-to 256k | check-size 512k | \
append-rootfs | pad-rootfs $$(BLOCKSIZE) | pad-to 41216k | check-size 41216k | \
append-kernel | append-metadata
endef
TARGET_DEVICES += hiveap-330
define Device/panda
DEVICE_TITLE := OCEDO Panda
DEVICE_PACKAGES := kmod-rtc-ds1307 uboot-envtools
KERNEL = kernel-bin | gzip | fit gzip $(KDIR)/image-$$(DEVICE_DTS).dtb
PAGESIZE := 2048
SUBPAGESIZE := 512
BLOCKSIZE := 128k
SUPPORTED_DEVICES := ocedo,panda
IMAGES := fdt.bin sysupgrade.bin
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
IMAGE/fdt.bin := append-dtb
endef
TARGET_DEVICES += panda
endif
ifeq ($(SUBTARGET),p2020)
define Device/p2020rdb
DEVICE_TITLE := Freescale P2020RDB
DEVICE_DTS_DIR := $(DTS_DIR)/fsl
DEVICE_PACKAGES := kmod-hwmon-core kmod-hwmon-lm90 kmod-rtc-ds1307 \
kmod-gpio-pca953x kmod-eeprom-at24
BLOCKSIZE := 128k
KERNEL := kernel-bin | gzip | \
fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
SUPPORTED_DEVICES := fsl,P2020RDB
IMAGES := sysupgrade.bin
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | \
pad-rootfs $$(BLOCKSIZE) | append-metadata
endef
TARGET_DEVICES += p2020rdb
endif
$(eval $(call BuildImage))