openwrt/target/linux/brcm47xx/image/Makefile
Hauke Mehrtens 5caee877dc brcm47xx: increase max image size
the trx utile uses a maximum image size of 7.2MB. There are brcm47xx
devices even with serial flash with bigger flash chips, but OpenWrt was
not able to create images for these devices. This patch provides an
additional parameter which increases this limit to 32 MB. There is a
warning in the trx utile code which suggests that bigger images could
overwrite the nvram partition on some devices, but normally the program
writing the image should make sure that it is safe to write it to the
flash.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>

SVN-Revision: 46872
2015-09-11 17:55:28 +00:00

384 lines
13 KiB
Makefile

#
# Copyright (C) 2006-2012 OpenWrt.org
#
# 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
define Build/Clean
$(MAKE) -C lzma-loader clean
endef
define Image/Prepare
# Optimized LZMA compression (with dictionary), handled by lzma-loader.
cat $(KDIR)/vmlinux | $(STAGING_DIR_HOST)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $(KDIR)/vmlinux.lzma
# Less optimal LZMA compression (no dictionary), handled by CFE.
$(STAGING_DIR_HOST)/bin/lzma e -so -d16 $(KDIR)/vmlinux > $(KDIR)/vmlinux-nodictionary.lzma
gzip -nc9 $(KDIR)/vmlinux > $(KDIR)/vmlinux.gz
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
cat $(KDIR)/vmlinux-initramfs | $(STAGING_DIR_HOST)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $(KDIR)/vmlinux-initramfs.lzma
$(STAGING_DIR_HOST)/bin/lzma e -so -d16 $(KDIR)/vmlinux-initramfs > $(KDIR)/vmlinux-initramfs-nodictionary.lzma
endif
rm -f $(KDIR)/loader.gz
$(MAKE) -C lzma-loader \
BUILD_DIR="$(KDIR)" \
TARGET="$(KDIR)" \
clean install
echo -ne "\\x00" >> $(KDIR)/loader.gz
rm -f $(KDIR)/fs_mark
echo -ne '\xde\xad\xc0\xde' > $(KDIR)/fs_mark
$(call prepare_generic_squashfs,$(KDIR)/fs_mark)
endef
define Image/Build/wgt634u
dd if=$(KDIR)/loader.elf of=$(BIN_DIR)/$(IMG_PREFIX)-wgt634u-$(2).bin bs=131072 conv=sync
cat $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx >> $(BIN_DIR)/$(IMG_PREFIX)-wgt634u-$(2).bin
endef
define Image/Build/dwl3150
cp $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx $(BIN_DIR)/$(IMG_PREFIX)-dwl3150-$(2).bin
echo "BCM-5352-2050-0000000-01" >> $(BIN_DIR)/$(IMG_PREFIX)-dwl3150-$(2).bin
endef
# $(1): filesystem type.
# $(2): device model (used for output file).
# $(3): pattern (device specific magic).
# $(4): version.
# $(5): simplified filesystem type (without block size).
define Image/Build/CyberTAN
$(STAGING_DIR_HOST)/bin/addpattern -4 -p $(3) -v v$(4) -i $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx -o $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(5).bin $(if $(6),-s $(6))
endef
define Image/Build/CyberTAN2
$(STAGING_DIR_HOST)/bin/addpattern -4 -p $(3) -v v$(4) -i $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(5).noheader.bin -o $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(5).bin $(if $(6),-s $(6))
endef
define Image/Build/CyberTANHead
$(STAGING_DIR_HOST)/bin/addpattern -5 -p $(3) -v v$(4) -i /dev/null -o $(KDIR)/$(IMG_PREFIX)-$(2)-header.bin $(if $(6),-s $(6))
endef
define Image/Build/Motorola
$(STAGING_DIR_HOST)/bin/motorola-bin -$(3) $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(4).bin
endef
define Image/Build/USR
$(STAGING_DIR_HOST)/bin/trx2usr $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(3).bin
endef
define Image/Build/Edi
$(STAGING_DIR_HOST)/bin/trx2edips $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(3).bin
endef
define Image/Build/Huawei
dd if=/dev/zero of=$(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(3)-gz.bin bs=92 count=1
echo -ne 'HDR0\x08\x00\x00\x00' >> $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(3)-gz.bin
cat $(BIN_DIR)/$(IMG_PREFIX)-$(1)-gz.trx >> $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(3)-gz.bin
endef
# $(1): filesystem type.
# $(2): device model (used for output file).
# $(3): board_id (device specific magic).
# $(4): region.
# $(5): simplified filesystem type (without block size).
define Image/Build/Chk
$(STAGING_DIR_HOST)/bin/mkchkimg -o $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(5).chk -k $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx -b $(3) -r $(4)
endef
define trxalign/jffs2-128k
-a 0x20000 -f $(KDIR)/root.$(1)
endef
define trxalign/jffs2-64k
-a 0x10000 -f $(KDIR)/root.$(1)
endef
define trxalign/squashfs
-a 1024 -f $(KDIR)/root.$(1) $(if $(2),-f $(2)) -a 0x10000 -A $(KDIR)/fs_mark
endef
define Image/Build/trxV2
$(call Image/Build/CyberTANHead,$(1),$(2),$(3),$(4),$(5),$(if $(6),$(6)))
$(STAGING_DIR_HOST)/bin/trx \
-m 33554432 \
-2 \
-o $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(5).noheader.bin \
-f $(KDIR)/loader.gz \
-f $(KDIR)/vmlinux.lzma \
$(call trxalign/$(1),$(1),$(KDIR)/$(IMG_PREFIX)-$(2)-header.bin)
$(call Image/Build/CyberTAN2,$(1),$(2),$(3),$(4),$(5),$(if $(6),$(6)))
endef
#################################################
# Images
#################################################
define Build/trx-with-loader
$(STAGING_DIR_HOST)/bin/trx \
-m 33554432 \
-o $@ \
-f $(KDIR)/loader.gz \
-f $(word 1,$^) \
$(call trxalign/$(FILESYSTEM),$(FILESYSTEM))
endef
define Build/asus-trx
$(STAGING_DIR_HOST)/bin/asustrx -p "$(PRODUCTID)" -i $@ -o $@.new
mv $@.new $@
endef
define Build/linksys-bin
$(STAGING_DIR_HOST)/bin/addpattern -4 -p $(DEVICE_ID) -v v$(VERSION) -i $@ -o $@.new
mv $@.new $@
endef
#################################################
# Devices
#################################################
DEVICE_VARS += PRODUCTID
DEVICE_VARS += DEVICE_ID VERSION
DEVICE_VARS += NETGEAR_BOARD_ID NETGEAR_REGION
define Device/Default
KERNEL := kernel-bin
IMAGE_NAME = $$(IMAGE_PREFIX)-$$(1).$$(2)
KERNEL_NAME = vmlinux.lzma
FILESYSTEMS := $(FS_64K)
IMAGES := trx
IMAGE/trx := trx-with-loader
endef
define Device/asus
IMAGES := trx
IMAGE/trx := trx-with-loader | asus-trx
endef
define AsusDevice
define Device/asus-$(1)
$$(Device/asus)
PRODUCTID := $(2)
endef
TARGET_DEVICES += asus-$(1)
endef
define Device/linksys
IMAGES := bin
IMAGE/bin := trx-with-loader | linksys-bin
endef
define LinksysDevice
define Device/linksys-$(1)
$$(Device/linksys)
DEVICE_ID := $(2)
VERSION := $(3)
endef
TARGET_DEVICES += linksys-$(1)
endef
define Device/netgear
IMAGES := chk
IMAGE/chk := trx-with-loader | netgear-chk
endef
define NetgearDevice
define Device/netgear-$(1)
$$(Device/netgear)
NETGEAR_BOARD_ID := $(2)
NETGEAR_REGION := $(3)
endef
TARGET_DEVICES += netgear-$(1)
endef
#################################################
# Subtarget generic
#################################################
ifeq ($(SUBTARGET),generic)
# BCM4705 with tg3
$(eval $(call LinksysDevice,wrt300n-v1.1,EWC2,1.51.2))
$(eval $(call LinksysDevice,wrt310n-v1,310N,1.0.10))
$(eval $(call LinksysDevice,wrt350n-v1,EWCG,1.04.1))
$(eval $(call LinksysDevice,wrt610n-v1,610N,1.0.1))
# BCMA SoC with SSB WiFi
$(eval $(call LinksysDevice,wrt610n-v2,610N,2.0.0))
$(eval $(call LinksysDevice,e3000-v1,61XN,1.0.3))
endif
#################################################
# Subtarget legacy
#################################################
# $(1): filesystem type.
define Image/Build/legacy/devices-with-128k-blocks
$(call Image/Build/trxV2,$(1),wrt54g3gv2-vf,3G2V,3.00.24,$(patsubst jffs2-%,jffs2,$(1)),6)
$(call Image/Build/wgt634u,$(1),$(patsubst jffs2-%,jffs2,$(1)))
endef
# $(1): filesystem type.
define Image/Build/legacy/devices-with-64k-blocks
$(call Image/Build/dwl3150,$(1),$(patsubst jffs2-%,jffs2,$(1)))
$(call Image/Build/Edi,$(1),ps1208mfg,$(patsubst jffs2-%,jffs2,$(1)))
$(call Image/Build/Huawei,$(1),e970,$(1))
$(call Image/Build/Motorola,$(1),wa840g,2,$(patsubst jffs2-%,jffs2,$(1)))
$(call Image/Build/Motorola,$(1),we800g,3,$(patsubst jffs2-%,jffs2,$(1)))
$(call Image/Build/Motorola,$(1),wr850g,1,$(1))
$(call Image/Build/USR,$(1),usr5461,$(1))
endef
# $(1): filesystem type.
define Image/Build/legacy/jffs2-64k
$(call Image/Build/legacy/devices-with-64k-blocks,$(1))
endef
# $(1): filesystem type.
define Image/Build/legacy/jffs2-128k
$(call Image/Build/legacy/devices-with-128k-blocks,$(1))
endef
# $(1): filesystem type.
define Image/Build/legacy/squashfs
$(call Image/Build/legacy/devices-with-64k-blocks,$(1))
$(call Image/Build/legacy/devices-with-128k-blocks,$(1))
endef
define Device/linksys-wrt54gs
$(Device/linksys)
FILESYSTEMS := $(FS_128K)
DEVICE_ID := W54S
VERSION := 4.80.1
endef
define Device/linksys-wrtsl54gs
$(Device/linksys)
FILESYSTEMS := $(FS_128K)
DEVICE_ID := W54U
VERSION := 2.08.1
endef
ifeq ($(SUBTARGET),legacy)
TARGET_DEVICES += \
linksys-wrt54gs \
linksys-wrtsl54gs
$(eval $(call AsusDevice,wl-300g,WL300g ))
$(eval $(call AsusDevice,wl-320gp,WL320gP ))
$(eval $(call AsusDevice,wl-330ge,WL-330gE ))
$(eval $(call AsusDevice,wl-500gp-v1,WL500gp ))
$(eval $(call AsusDevice,wl-500gp-v2,WL500gpv2 ))
$(eval $(call AsusDevice,wl-500w,WL500W ))
$(eval $(call AsusDevice,wl-520gu,WL520gu ))
$(eval $(call AsusDevice,wl-550ge,WL550gE ))
$(eval $(call AsusDevice,wl-hdd25,WLHDD ))
$(eval $(call LinksysDevice,wrt54g3g,W54F,2.20.1))
$(eval $(call LinksysDevice,wrt54g3g-em,W3GN,2.20.1))
$(eval $(call LinksysDevice,wrt54g,W54G,4.71.1))
$(eval $(call LinksysDevice,wrt54gs-v4,W54s,1.09.1))
$(eval $(call LinksysDevice,wrt150n,N150,1.51.3))
$(eval $(call LinksysDevice,wrt160n-v1,N150,1.50.1))
$(eval $(call LinksysDevice,wrt300n-v1,EWCB,1.03.6))
$(eval $(call NetgearDevice,wgr614-v8,U12H072T00_NETGEAR,2))
$(eval $(call NetgearDevice,wndr3300-v1,U12H093T00_NETGEAR,2))
$(eval $(call NetgearDevice,wnr834b-v2,U12H081T00_NETGEAR,2))
endif
#################################################
# Subtarget mips74k
#################################################
ifeq ($(SUBTARGET),mips74k)
$(eval $(call AsusDevice,rt-ac53u,RT-AC53U))
# $(eval $(call AsusDevice,rt-ac66u,RT-AC66U))
$(eval $(call AsusDevice,rt-n10,RT-N10 ))
$(eval $(call AsusDevice,rt-n10p,RT-N10P))
$(eval $(call AsusDevice,rt-n10p-v2,RT-N10PV2))
$(eval $(call AsusDevice,rt-n10u,RT-N10U))
$(eval $(call AsusDevice,rt-n10u-b,RT-N10U))
$(eval $(call AsusDevice,rt-n12,RT-N12 ))
$(eval $(call AsusDevice,rt-n12-b1,RT-N12B1))
$(eval $(call AsusDevice,rt-n12-c1,RT-N12C1))
$(eval $(call AsusDevice,rt-n12-d1,RT-N12D1))
$(eval $(call AsusDevice,rt-n12hp,RT-N12HP))
$(eval $(call AsusDevice,rt-n14uhp,RT-N14UHP))
$(eval $(call AsusDevice,rt-n15u,RT-N15U))
$(eval $(call AsusDevice,rt-n16,RT-N16))
$(eval $(call AsusDevice,rt-n53,RT-N53))
$(eval $(call AsusDevice,rt-n66u,RT-N66U))
$(eval $(call AsusDevice,rt-n66w,RT-N66U))
$(eval $(call LinksysDevice,wrt160n-v3,N150,3.0.3))
$(eval $(call LinksysDevice,wrt310n-v2,310N,2.0.1))
$(eval $(call LinksysDevice,wrt320n-v1,320N,1.0.5))
$(eval $(call LinksysDevice,e900-v1,E900,1.0.4))
$(eval $(call LinksysDevice,e1000-v1-v2-v2.1,E100,1.1.3))
$(eval $(call LinksysDevice,e1200-v1,E120,1.0.3))
$(eval $(call LinksysDevice,e1200-v2,E122,1.0.4))
$(eval $(call LinksysDevice,e1500-v1,E150,1.0.5))
$(eval $(call LinksysDevice,e1550-v1,1550,1.0.3))
$(eval $(call LinksysDevice,e2000-v1,32XN,1.0.4))
$(eval $(call LinksysDevice,e2500-v1,E25X,1.0.7))
$(eval $(call LinksysDevice,e2500-v2,E25X,2.0.0))
$(eval $(call LinksysDevice,e2500-v2.1,25RU,2.1.0))
$(eval $(call LinksysDevice,e2500-v3,25V3,3.0.0))
$(eval $(call LinksysDevice,e3200-v1,3200,1.0.1))
$(eval $(call LinksysDevice,e4200-v1,4200,1.0.5))
$(eval $(call NetgearDevice,wgr614-v10_north-america,U12H139T01_NETGEAR,2))
$(eval $(call NetgearDevice,wgr614-v10_other-regions,U12H139T01_NETGEAR,1))
$(eval $(call NetgearDevice,wndr3400-v1,U12H155T00_NETGEAR,2))
$(eval $(call NetgearDevice,wndr3400-v2,U12H187T00_NETGEAR,2))
$(eval $(call NetgearDevice,wndr3400-v3,U12H208T00_NETGEAR,1))
$(eval $(call NetgearDevice,wndr3700-v3,U12H194T00_NETGEAR,2))
$(eval $(call NetgearDevice,wndr4000,U12H181T00_NETGEAR,2))
$(eval $(call NetgearDevice,wnr1000-v3,U12H139T00_NETGEAR,2))
$(eval $(call NetgearDevice,wnr2000v2,U12H114T00_NETGEAR,2))
$(eval $(call NetgearDevice,wnr3000rp,U12H163T01_NETGEAR,1))
$(eval $(call NetgearDevice,wnr3500l-v1-north-america,U12H136T99_NETGEAR,2))
$(eval $(call NetgearDevice,wnr3500l-v1-other-regions,U12H136T99_NETGEAR,1))
$(eval $(call NetgearDevice,wnr3500l-v2,U12H172T00_NETGEAR,1))
$(eval $(call NetgearDevice,wnr3500-v2,U12H127T00_NETGEAR,2))
endif
#################################################
# Shared BuildImage defines
#################################################
define Image/Build/Initramfs
$(STAGING_DIR_HOST)/bin/trx \
-m 33554432 \
-o $(BIN_DIR)/$(IMG_PREFIX)-initramfs.trx \
-f $(KDIR)/loader.gz \
-f $(KDIR)/vmlinux-initramfs.lzma
$(STAGING_DIR_HOST)/bin/trx \
-m 33554432 \
-o $(BIN_DIR)/$(IMG_PREFIX)-initramfs-noloader-nodictionary.trx \
-f $(KDIR)/vmlinux-initramfs-nodictionary.lzma
endef
# $(1): filesystem type.
define Image/Build
$(STAGING_DIR_HOST)/bin/trx \
-m 33554432 \
-o $(BIN_DIR)/$(IMG_PREFIX)-$(1).trx \
-f $(KDIR)/loader.gz -f $(KDIR)/vmlinux.lzma \
$(call trxalign/$(1),$(1))
$(STAGING_DIR_HOST)/bin/trx \
-m 33554432 \
-o $(BIN_DIR)/$(IMG_PREFIX)-$(1)-noloader-nodictionary.trx \
-f $(KDIR)/vmlinux-nodictionary.lzma \
$(call trxalign/$(1),$(1))
$(STAGING_DIR_HOST)/bin/trx \
-m 33554432 \
-o $(BIN_DIR)/$(IMG_PREFIX)-$(1)-gz.trx \
-f $(KDIR)/vmlinux.gz \
$(call trxalign/$(1),$(1))
$(call Image/Build/$(SUBTARGET)/$(1),$(1))
# $(call Image/Build/Chk,$(1),wgr614_v9,U12H094T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1)))
# $(call Image/Build/Chk,$(1),wndr3400_vcna,U12H155T01_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1)))
# $(call Image/Build/Chk,$(1),wnr3500U,U12H136T00_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1)))
# $(call Image/Build/Chk,$(1),wnr3500v2_VC,U12H127T70_NETGEAR,2,$(patsubst jffs2-%,jffs2,$(1)))
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
$(call Image/Build/Initramfs)
endif
endef
$(eval $(call BuildImage))