Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: target/linux/ramips/image/Makefile
- ===================================================================
- --- target/linux/ramips/image/Makefile (revision 39752)
- +++ target/linux/ramips/image/Makefile (working copy)
- @@ -422,6 +422,20 @@
- Image/Build/Profile/DIR-300-B7=$(call BuildFirmware/Default4M/$(1),$(1),dir-300-b7,DIR-300-B7)
- Image/Build/Profile/DIR-320-B1=$(call BuildFirmware/Default8M/$(1),$(1),dir-320-b1,DIR-320-B1)
- +define BuildFirmware/ZyXEL_Keenetic_series/squashfs
- + $(call BuildFirmware/Default8M/$(1),$(1),$(2),$(3))
- + # SquashFS must begin exactly at defined offset $(5)+64 bytes!
- + dd if=$(KDIR)/vmlinux-$(2).bin.lzma of=$(KDIR)/vmlinux-$(2).bin.lzma.padded bs=$(5) conv=sync
- + mv $(KDIR)/vmlinux-$(2).bin.lzma.padded $(KDIR)/vmlinux-$(2).bin.lzma
- + $(call MkImage,lzma,$(KDIR)/vmlinux-$(2).bin.lzma,$(KDIR)/vmlinux-$(2).uImage,$(3))
- + $(call MkImageSysupgrade/squashfs,$(1),$(2),$(4),factory)
- + $(eval output_name=$(IMG_PREFIX)-$(2)-$(1)-factory)
- + # ZyXEL signature must be aligned at 64K
- + dd if=$(BIN_DIR)/$(output_name).bin of=$(BIN_DIR)/$(output_name).padded bs=65536 conv=sync
- + mv $(BIN_DIR)/$(output_name).padded $(BIN_DIR)/$(output_name).bin
- + $(STAGING_DIR_HOST)/bin/zyimage -v "$(output_name)" -d $(6) $(BIN_DIR)/$(output_name).bin
- +endef
- +
- Image/Build/Profile/NBG-419N=$(call BuildFirmware/Default4M/$(1),$(1),nbg-419n,NBG-419N)
- Image/Build/Profile/MZKW300NH2=$(call BuildFirmware/Edimax/$(1),$(1),mzk-w300nh2,MZK-W300NH2,$(mzkw300nh2_mtd_size),CSYS,RN52,0x50000,0xc0000)
- Index: target/linux/ramips/rt305x/profiles/zyxel.mk
- ===================================================================
- --- target/linux/ramips/rt305x/profiles/zyxel.mk (revision 0)
- +++ target/linux/ramips/rt305x/profiles/zyxel.mk (working copy)
- @@ -0,0 +1,7 @@
- +#
- +# Copyright (C) 2014 OpenWrt.org
- +#
- +# This is free software, licensed under the GNU General Public License v2.
- +# See /LICENSE for more information.
- +#
- +
- Index: tools/Makefile
- ===================================================================
- --- tools/Makefile (revision 39752)
- +++ tools/Makefile (working copy)
- @@ -17,7 +17,7 @@
- tools-y += sstrip ipkg-utils genext2fs e2fsprogs mtd-utils mkimage
- tools-y += firmware-utils patch-image patch quilt yaffs2 flock padjffs2
- tools-y += mm-macros xorg-macros xfce-macros missing-macros xz cmake scons bc
- -tools-y += findutils
- +tools-y += findutils zyimage
- tools-$(CONFIG_TARGET_orion_generic) += wrt350nv2-builder upslug2
- tools-$(CONFIG_powerpc) += upx
- tools-$(CONFIG_TARGET_x86) += qemu
- @@ -68,6 +68,7 @@
- $(curdir)/sdcc/compile := $(curdir)/bison/install
- $(curdir)/b43-tools/compile := $(curdir)/bison/install
- $(curdir)/padjffs2/compile := $(curdir)/findutils/install
- +$(curdir)/zyimage/compile := $(curdir)/findutils/install
- ifneq ($(CONFIG_CCACHE),)
- $(foreach tool, $(tools-y), $(eval $(curdir)/$(tool)/compile += $(curdir)/ccache/install))
- Index: tools/zyimage/Makefile
- ===================================================================
- --- tools/zyimage/Makefile (revision 0)
- +++ tools/zyimage/Makefile (working copy)
- @@ -0,0 +1,36 @@
- +#
- +# Copyright (C) 2014 OpenWrt.org
- +#
- +# This is free software, licensed under the GNU General Public License v2.
- +# See /LICENSE for more information.
- +#
- +
- +include $(TOPDIR)/rules.mk
- +
- +PKG_NAME:=zyimage
- +PKG_VERSION:=1
- +
- +include $(INCLUDE_DIR)/host-build.mk
- +
- +define Host/Prepare
- + mkdir -p $(HOST_BUILD_DIR)
- + $(CP) ./src/* $(HOST_BUILD_DIR)/
- + find $(HOST_BUILD_DIR) -name .svn | $(XARGS) rm -rf
- +endef
- +
- +define Host/Compile
- + $(MAKE) -C $(HOST_BUILD_DIR) LDFLAGS="$(HOST_STATIC_LINKING)"
- +endef
- +
- +define Host/Configure
- +endef
- +
- +define Host/Install
- + $(CP) $(HOST_BUILD_DIR)/zyimage $(STAGING_DIR_HOST)/bin/
- +endef
- +
- +define Host/Clean
- + rm -f $(STAGING_DIR_HOST)/bin/zyimage
- +endef
- +
- +$(eval $(call HostBuild))
- Index: tools/zyimage/src/Makefile
- ===================================================================
- --- tools/zyimage/src/Makefile (revision 0)
- +++ tools/zyimage/src/Makefile (working copy)
- @@ -0,0 +1,15 @@
- +CC = gcc
- +CFLAGS =
- +WFLAGS = -Wall -Werror
- +zyimage-objs = zyimage.o
- +
- +all: zyimage
- +
- +%.o: %.c
- + $(CC) $(CFLAGS) $(WFLAGS) -c -o $@ $<
- +
- +zyimage: $(zyimage-objs)
- + $(CC) $(LDFLAGS) -o $@ $(zyimage-objs)
- +
- +clean:
- + rm -f zyimage *.o
- Index: tools/zyimage/src/zyimage.c
- ===================================================================
- --- tools/zyimage/src/zyimage.c (revision 0)
- +++ tools/zyimage/src/zyimage.c (working copy)
- @@ -0,0 +1,141 @@
- +/*
- + * Copyright (C) 2014 Soul Trace <[email protected]>
- + *
- + * This program is free software; you can redistribute it and/or modify it
- + * under the terms of the GNU General Public License version 2 as published
- + * by the Free Software Foundation.
- + *
- + */
- +
- +#include <stdio.h>
- +#include <stdlib.h>
- +#include <sys/types.h>
- +#include <string.h>
- +#include <unistd.h>
- +
- +#define szbuf 32768
- +
- +u_int32_t crc_tab[256];
- +
- +u_int32_t chksum_crc32 (FILE *f)
- +{
- + register unsigned long crc;
- + unsigned long i, j;
- + char *buffer = malloc(szbuf);
- + char *buf;
- +
- + crc = 0xFFFFFFFF;
- + while (!feof(f))
- + {
- + j = fread(buffer, 1, szbuf, f);
- + buf = buffer;
- + for (i = 0; i < j; i++)
- + crc = ((crc >> 8) & 0x00FFFFFF) ^ crc_tab[(crc ^ *buf++) & 0xFF];
- + }
- + free(buffer);
- + return crc;
- +}
- +
- +void chksum_crc32gentab ()
- +{
- + unsigned long crc, poly;
- + int i, j;
- +
- + poly = 0xEDB88320L;
- + for (i = 0; i < 256; i++)
- + {
- + crc = i;
- + for (j = 8; j > 0; j--)
- + {
- + if (crc & 1)
- + crc = (crc >> 1) ^ poly;
- + else
- + crc >>= 1;
- + }
- + crc_tab[i] = crc;
- + }
- +}
- +
- +void usage(char *progname)
- +{
- + printf("Usage: %s [ -v Version ] [ -d Device_ID ] <input file>\n", progname);
- + exit(1);
- +}
- +
- +int main(int argc, char *argv[]) {
- + struct signature
- + {
- + const char magic[4];
- + unsigned int device_id;
- + char firmware_version[48];
- + unsigned int crc32;
- + }
- + sign =
- + {
- + { 'Z', 'N', 'B', 'G' },
- + 1,
- + { "V.1.0.0(1.0.0)" },
- + 0
- + };
- + FILE *f;
- +
- + if (argc < 1)
- + usage(argv[0]);
- +
- + static const char *optString = "v:d:h";
- + int opt = getopt( argc, argv, optString );
- + while( opt != -1 ) {
- + switch( opt ) {
- + case 'v':
- + if (optarg == NULL)
- + usage(argv[0]);
- + strncpy(sign.firmware_version, optarg, sizeof(sign.firmware_version)-1);
- + sign.firmware_version[sizeof(sign.firmware_version)-1]='\0'; // Make sure that string is terminated correctly
- + break;
- +
- + case 'd':
- + sign.device_id = atoi(optarg);
- + if (sign.device_id == 0)
- + sign.device_id = (int)strtol(optarg, NULL, 16);
- + break;
- +
- + case '?':
- + case 'h':
- + usage(argv[0]);
- + break;
- +
- + default:
- + break;
- + }
- +
- + opt = getopt( argc, argv, optString );
- + }
- +
- + chksum_crc32gentab();
- + char *filename=argv[optind];
- + if (access(filename, W_OK) || access(filename, R_OK))
- + {
- + printf("Not open input file %s\n", filename);
- + exit(1);
- + }
- + f = fopen(argv[optind], "r+");
- + if (f != NULL)
- + {
- + fseek(f, sizeof(sign)*-1, SEEK_END);
- + struct signature oldsign;
- + fread(&oldsign, sizeof(oldsign), 1, f);
- + if (strncmp(oldsign.magic,"ZNBG", sizeof(oldsign.magic)) == 0 )
- + {
- + printf("Image is already signed as:\nDevice ID: 0x%08x\nFirmware version: %s\nImage CRC32: 0x%x\n", oldsign.device_id, oldsign.firmware_version, oldsign.crc32);
- + exit(0);
- + }
- +
- + fseek(f, 0, SEEK_SET);
- + sign.crc32 = chksum_crc32(f);
- + fwrite(&sign, sizeof(sign), 1, f);
- + fclose(f);
- + printf("Image signed as:\nDevice ID: 0x%08x\nFirmware version: %s\nImage CRC32: 0x%x\n", sign.device_id, sign.firmware_version, sign.crc32);
- + }
- + return 0;
- +}
- +
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement