update wrt350nv2 builder to v2.3 (#7580)

SVN-Revision: 22579
lede-17.01
Florian Fainelli 2010-08-10 15:19:06 +00:00
parent b0745dd8ce
commit 4bc034f07c
2 changed files with 49 additions and 17 deletions

View File

@ -8,7 +8,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=wrt350nv2-builder PKG_NAME:=wrt350nv2-builder
PKG_VERSION:=2.2 PKG_VERSION:=2.3
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/${PKG_NAME}-$(PKG_VERSION) HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/${PKG_NAME}-$(PKG_VERSION)

View File

@ -1,6 +1,6 @@
/* /*
WRT350Nv2-Builder 2.2 (previously called buildimg) WRT350Nv2-Builder 2.3 (previously called buildimg)
Copyright (C) 2008-2009 Dirk Teurlings <info@upexia.nl> Copyright (C) 2008-2009 Dirk Teurlings <info@upexia.nl>
Copyright (C) 2009-2010 Matthias Buecher (http://www.maddes.net/) Copyright (C) 2009-2010 Matthias Buecher (http://www.maddes.net/)
@ -62,6 +62,8 @@
https://forum.openwrt.org/viewtopic.php?pid=92928#p92928 https://forum.openwrt.org/viewtopic.php?pid=92928#p92928
Changelog: Changelog:
v2.3 - allow jffs by adding its magic number (0x8519)
added parameter option -i to ignore unknown magic numbers
v2.2 - fixed checksum byte calculation for other versions than 0x2019 v2.2 - fixed checksum byte calculation for other versions than 0x2019
fixed rare problem with padsize fixed rare problem with padsize
updated info to stock firmware 2.00.20 updated info to stock firmware 2.00.20
@ -90,7 +92,7 @@
// version info // version info
#define VERSION "2.2" #define VERSION "2.3"
char program_info[] = "WRT350Nv2-Builder v%s by Dirk Teurlings <info@upexia.nl> and Matthias Buecher (http://www.maddes.net/)\n"; char program_info[] = "WRT350Nv2-Builder v%s by Dirk Teurlings <info@upexia.nl> and Matthias Buecher (http://www.maddes.net/)\n";
// verbosity // verbosity
@ -708,6 +710,7 @@ int main(int argc, char *argv[]) {
int help; int help;
int onlybin; int onlybin;
int havezip; int havezip;
int ignoremagic;
char option; char option;
char *par_filename = NULL; char *par_filename = NULL;
char *img_filename = NULL; char *img_filename = NULL;
@ -723,7 +726,8 @@ int main(int argc, char *argv[]) {
int mandatory; int mandatory;
int noupdate; int noupdate;
int sizecheck; int sizecheck;
unsigned char magic[2]; int magiccheck;
int magicerror;
// display program header // display program header
@ -735,7 +739,8 @@ int main(int argc, char *argv[]) {
help = 0; help = 0;
onlybin = 0; onlybin = 0;
havezip = 0; havezip = 0;
while ((option = getopt(argc, argv, ":hbzf:v")) != -1) { ignoremagic = 0;
while ((option = getopt(argc, argv, "hbzif:v")) != -1) {
switch(option) { switch(option) {
case 'h': case 'h':
help = 1; help = 1;
@ -746,6 +751,9 @@ int main(int argc, char *argv[]) {
case 'z': case 'z':
havezip = 1; havezip = 1;
break; break;
case 'i':
ignoremagic = 1;
break;
case 'f': case 'f':
sizecheck = sscanf(optarg, "%i", &i); sizecheck = sscanf(optarg, "%i", &i);
if (sizecheck != 1) { if (sizecheck != 1) {
@ -850,11 +858,12 @@ int main(int argc, char *argv[]) {
printf("This program creates Linksys style images for the WRT350Nv2 router.\n"); printf("This program creates Linksys style images for the WRT350Nv2 router.\n");
} }
printf(" Usage:\n\ printf(" Usage:\n\
%s [-h] [-b] [-z] [-f <version>] [-v] <parameter or zip file> [<image file>]\n\n\ %s [-h] [-b] [-z] [-i] [-f <version>] [-v] <parameter or zip file> [<image file>]\n\n\
Options:\n\ Options:\n\
-h - Show this help\n\ -h - Show this help\n\
-b - Create only bin file, no img or zip file is created\n\ -b - Create only bin file, no img or zip file is created\n\
-z - Have zip file, the img file will be directly created from it\n\ -z - Have zip file, the img file will be directly created from it\n\
-i - Ignore unknown magic numbers\n\
-f <version> - Wanted firmware version to use with -z\n\ -f <version> - Wanted firmware version to use with -z\n\
Default firmware version is 0x2020 = 2.00.20.\n\ Default firmware version is 0x2020 = 2.00.20.\n\
Note: version from parameter file will supersede this\n\ Note: version from parameter file will supersede this\n\
@ -929,16 +938,14 @@ int main(int argc, char *argv[]) {
mandatory = 0; mandatory = 0;
noupdate = 0; noupdate = 0;
sizecheck = 0; sizecheck = 0;
magic[0] = 0; magiccheck = 0;
magic[1] = 0;
switch (i) { switch (i) {
case 1: case 1:
mtd = &mtd_kernel; mtd = &mtd_kernel;
mandatory = 1; mandatory = 1;
sizecheck = mtd_kernel.size - 16; sizecheck = mtd_kernel.size - 16;
magic[0] = 0x27; magiccheck = 1;
magic[1] = 0x05;
break; break;
case 2: case 2:
mtd = &mtd_rootfs; mtd = &mtd_rootfs;
@ -946,8 +953,7 @@ int main(int argc, char *argv[]) {
mtd->size = ROOTFS_END_OFFSET - mtd_kernel.size; mtd->size = ROOTFS_END_OFFSET - mtd_kernel.size;
mandatory = 1; mandatory = 1;
sizecheck = PRODUCT_ID_OFFSET - mtd_kernel.size; sizecheck = PRODUCT_ID_OFFSET - mtd_kernel.size;
magic[0] = 0x68; magiccheck = 1;
magic[1] = 0x73;
break; break;
case 3: case 3:
mtd = &mtd_uboot; mtd = &mtd_uboot;
@ -973,7 +979,7 @@ int main(int argc, char *argv[]) {
printf("mtd %s not specified correctly or at all in parameter file\n", mtd->name); printf("mtd %s not specified correctly or at all in parameter file\n", mtd->name);
} }
// end checks if no file data present // no further checks if no file data present
if (!mtd->filename) { if (!mtd->filename) {
continue; continue;
} }
@ -984,10 +990,36 @@ int main(int argc, char *argv[]) {
} }
// general magic number check // general magic number check
if (magic[0]) { magicerror = 0;
if ((mtd->magic[0] != magic[0]) || (mtd->magic[1] != magic[1])) { if (magiccheck) {
switch (i) {
case 1: // kernel
if (!(
((mtd->magic[0] == 0x27) && (mtd->magic[1] == 0x05)) // uImage
)) {
magicerror = 1;
}
break;
case 2: // rootfs
if (!(
((mtd->magic[0] == 0x68) && (mtd->magic[1] == 0x73)) // squashfs
|| ((mtd->magic[0] == 0x85) && (mtd->magic[1] == 0x19)) // jffs
)) {
magicerror = 1;
}
break;
default:
magicerror = 1;
break;
}
if (magicerror) {
printf("mtd %s input file %s has unknown magic number (0x%02X%02X)", mtd->name, mtd->filename, mtd->magic[0], mtd->magic[1]);
if (ignoremagic) {
printf("...ignoring");
} else {
exitcode = 1; exitcode = 1;
printf("mtd %s input file %s has wrong magic number (0x%02X%02X)\n", mtd->name, mtd->filename, mtd->magic[0], mtd->magic[1]); }
printf("\n");
} }
} }