| 1 | # |
| 2 | # Copyright (C) 2006-2010 OpenWrt.org |
| 3 | # |
| 4 | # This is free software, licensed under the GNU General Public License v2. |
| 5 | # See /LICENSE for more information. |
| 6 | # |
| 7 | include $(TOPDIR)/rules.mk |
| 8 | include $(INCLUDE_DIR)/image.mk |
| 9 | |
| 10 | DROP_SECTIONS:=.reginfo .mdebug .comment .note .pdr .options .MIPS.options |
| 11 | OBJCOPY_SREC:=$(TARGET_CROSS)objcopy -S -O srec $(addprefix --remove-section=,$(DROP_SECTIONS)) |
| 12 | |
| 13 | LOADADDR:=0x94600000 |
| 14 | KERNEL_ENTRY:=0x94100000 |
| 15 | RAMSTART:=0x94000000 |
| 16 | RAMSIZE:=0x00100000 |
| 17 | |
| 18 | EVA_LOADADDR := 0x94100000 |
| 19 | |
| 20 | LOADER_MAKEOPTS= \ |
| 21 | KDIR=$(KDIR) \ |
| 22 | LOADADDR=$(LOADADDR) \ |
| 23 | KERNEL_ENTRY=$(KERNEL_ENTRY) \ |
| 24 | RAMSTART=$(RAMSTART) \ |
| 25 | RAMSIZE=$(RAMSIZE) |
| 26 | |
| 27 | CFLAGS := -D__KERNEL__ -Wall -Wstrict-prototypes -Wno-trigraphs -Os \ |
| 28 | -fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic \ |
| 29 | -pipe -mlong-calls -fno-common \ |
| 30 | -mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap \ |
| 31 | -DLOADADDR=$(LOADADDR) |
| 32 | |
| 33 | define Build/Clean |
| 34 | $(MAKE) -C $(GENERIC_PLATFORM_DIR)/image/lzma-loader $(LOADER_MAKEOPTS) clean |
| 35 | endef |
| 36 | |
| 37 | define Image/Prepare |
| 38 | cat $(KDIR)/vmlinux | $(STAGING_DIR_HOST)/bin/lzma e -si -so -eos -lc1 -lp2 -pb2 > $(KDIR)/vmlinux.lzma |
| 39 | |
| 40 | $(MAKE) -C $(GENERIC_PLATFORM_DIR)/image/lzma-loader \ |
| 41 | $(LOADER_MAKEOPTS) \ |
| 42 | clean compile |
| 43 | $(OBJCOPY_SREC) $(KDIR)/loader.elf $(KDIR)/loader.srec |
| 44 | srec2bin $(KDIR)/loader.srec $(KDIR)/loader.bin |
| 45 | endef |
| 46 | |
| 47 | define align/jffs2-64k |
| 48 | bs=65536 conv=sync |
| 49 | endef |
| 50 | |
| 51 | define align/jffs2-128k |
| 52 | bs=131072 conv=sync |
| 53 | endef |
| 54 | |
| 55 | define align/squashfs |
| 56 | bs=65536 conv=sync |
| 57 | endef |
| 58 | |
| 59 | define Image/Build/CyberTAN |
| 60 | (dd if=/dev/zero bs=16 count=1; cat $(BIN_DIR)/$(IMG_PREFIX)-$(1).bin) | \ |
| 61 | $(STAGING_DIR_HOST)/bin/addpattern -p $(3) -o $(BIN_DIR)/openwrt-$(2)-$(4)-code.bin |
| 62 | endef |
| 63 | |
| 64 | define Image/Build/Titan |
| 65 | $(STAGING_DIR_HOST)/bin/mktitanimg -o $(BIN_DIR)/openwrt-$(2)-$(4)-code.bin -i $(KDIR)/loader.bin $(KDIR)/root.$(1) -a 0x10000 0x10000 -h 2 -p 0x4C575943 -s 0x0b010000 |
| 66 | $(STAGING_DIR_HOST)/bin/mktitanimg -o $(BIN_DIR)/openwrt-$(2)-na-$(4)-code.bin -i $(KDIR)/loader.bin $(KDIR)/root.$(1) -a 0x10000 0x10000 -h 2 -p 0x4D575943 -s 0x0b010000 |
| 67 | endef |
| 68 | |
| 69 | |
| 70 | #define Image/Build/sErCoMm |
| 71 | # cat sercomm/adam2.bin "$(BIN_DIR)/$(IMG_PREFIX)-$(1).bin" > "$(KDIR)/dgfw.tmp" |
| 72 | # dd if=sercomm/$(2) of="$(KDIR)/dgfw.tmp" bs=$$$$((0x3e0000 - 80)) seek=1 conv=notrunc |
| 73 | # $(STAGING_DIR_HOST)/bin/dgfirmware -f -w "$(BIN_DIR)/openwrt-$(2)-$(3).img" "$(KDIR)/dgfw.tmp" |
| 74 | # rm -f "$(KDIR)/dgfw.tmp" |
| 75 | #endef |
| 76 | |
| 77 | define Image/Build/EVA |
| 78 | $(STAGING_DIR_HOST)/bin/lzma2eva $(EVA_LOADADDR) 0x$${shell $(TARGET_CROSS)nm $(KDIR)/linux-*/vmlinux | grep kernel_entry | cut -d' ' -f1} $(KDIR)/vmlinux.lzma $(KDIR)/loader.eva |
| 79 | dd if=$(KDIR)/loader.eva $(call align/$(1)) > $(BIN_DIR)/openwrt-$(2)-$(KERNEL)-$(1).bin |
| 80 | cat $(KDIR)/root.$(1) >> $(BIN_DIR)/openwrt-$(2)-$(KERNEL)-$(1).bin |
| 81 | $(call prepare_generic_squashfs,$(BIN_DIR)/openwrt-$(2)-$(KERNEL)-$(1).bin) |
| 82 | endef |
| 83 | |
| 84 | define Image/Build |
| 85 | dd if=$(KDIR)/loader.bin $(call align/$(1)) > $(BIN_DIR)/$(IMG_PREFIX)-$(1).bin |
| 86 | cat $(KDIR)/root.$(1) >> $(BIN_DIR)/$(IMG_PREFIX)-$(1).bin |
| 87 | $(call prepare_generic_squashfs,$(BIN_DIR)/$(IMG_PREFIX)-$(1).bin) |
| 88 | $(call Image/Build/CyberTAN,$(1),AG1B,AG1B,$(1)) |
| 89 | $(call Image/Build/CyberTAN,$(1),AG1A,AG1A,$(1)) |
| 90 | $(call Image/Build/CyberTAN,$(1),WA21,WA21,$(1)) |
| 91 | $(call Image/Build/CyberTAN,$(1),WA22,WA22,$(1)) |
| 92 | $(call Image/Build/CyberTAN,$(1),WAG2,WAG2,$(1)) |
| 93 | $(call Image/Build/CyberTAN,$(1),AG310,AV2A -b -r 1.0,$(1)) |
| 94 | $(call Image/Build/CyberTAN,$(1),AG241v2,AG3A -b -r 2.0,$(1)) |
| 95 | $(call Image/Build/CyberTAN,$(1),AG241v2b,AG3B -b -r 2.0,$(1)) |
| 96 | $(call Image/Build/CyberTAN,$(1),AG241v1,AG3A -b,$(1)) |
| 97 | $(call Image/Build/CyberTAN,$(1),WAG54GP2v1,ATWL -b,$(1)) |
| 98 | $(call Image/Build/CyberTAN,$(1),WAG54GP2v2,CTWL -b,$(1)) |
| 99 | $(call Image/Build/CyberTAN,$(1),WA31,WA31 -b,$(1)) |
| 100 | $(call Image/Build/CyberTAN,$(1),WA32,WA32 -b,$(1)) |
| 101 | $(call Image/Build/CyberTAN,$(1),WA7A,WA7A -b,$(1)) |
| 102 | $(call Image/Build/CyberTAN,$(1),WA7B,WA7B -b,$(1)) |
| 103 | # $(call Image/Build/sErCoMm,$(1),dg834,$(1)) |
| 104 | # $(call Image/Build/sErCoMm,$(1),jdr454wb,$(1)) |
| 105 | $(call Image/Build/EVA,$(1),EVA) |
| 106 | $(call Image/Build/Titan,$(1),Titan,Titan,$(1)) |
| 107 | endef |
| 108 | |
| 109 | $(eval $(call BuildImage)) |
| 110 | |