aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorAndré Valentin <avalentin@marcant.net>2019-10-23 11:30:28 +0200
committerJohn Crispin <john@phrozen.org>2019-10-27 13:38:05 +0100
commit6ae7ee7724f402237214d610afd3d29e66a3e6b7 (patch)
tree96c9749c88eed62b0c575a13ee70944ab3cc5f23 /tools
parent522d5ff42835f7ad01c090b9ea1863f5d56b91d3 (diff)
downloadupstream-6ae7ee7724f402237214d610afd3d29e66a3e6b7.tar.gz
upstream-6ae7ee7724f402237214d610afd3d29e66a3e6b7.tar.bz2
upstream-6ae7ee7724f402237214d610afd3d29e66a3e6b7.zip
tools/mkrasimage: Add support for 128k header size
128k header size support is needed for ZyXEL NBG6716. Signed-off-by: André Valentin <avalentin@marcant.net>
Diffstat (limited to 'tools')
-rw-r--r--tools/firmware-utils/src/mkrasimage.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/tools/firmware-utils/src/mkrasimage.c b/tools/firmware-utils/src/mkrasimage.c
index 8eee29cc08..cff3a533d1 100644
--- a/tools/firmware-utils/src/mkrasimage.c
+++ b/tools/firmware-utils/src/mkrasimage.c
@@ -70,6 +70,7 @@ static char *progname;
static char *board_name = 0;
static char *version_name = 0;
static unsigned int rootfs_size = 0;
+static unsigned int header_length = HEADER_PARTITION_LENGTH;
static struct file_info kernel = { NULL, NULL, 0 };
static struct file_info rootfs = { NULL, NULL, 0 };
@@ -144,6 +145,7 @@ void usage(int status)
" -v <version> version string\n"
" -b <boardname> name of board to generate image for\n"
" -o <out_name> name of output image\n"
+ " -l <hdr_length> length of header, default 65536\n"
" -h show this screen\n"
);
@@ -334,7 +336,7 @@ int build_image()
board_header = generate_board_header(kernel_header, rootfs_header, board_name);
/* Prepare output file */
- out.size = HEADER_PARTITION_LENGTH + rootfs_out.size;
+ out.size = header_length + rootfs_out.size;
if (kernel.name)
out.size += kernel.size;
out.data = malloc(out.size);
@@ -345,7 +347,7 @@ int build_image()
memcpy(out.data + ROOTFS_HEADER_LEN, board_header, BOARD_HEADER_LEN);
if (kernel.name)
memcpy(out.data + ROOTFS_HEADER_LEN + BOARD_HEADER_LEN, kernel_header, KERNEL_HEADER_LEN);
- ptr = HEADER_PARTITION_LENGTH;
+ ptr = header_length;
memcpy(out.data + ptr, rootfs_out.data, rootfs_out.size);
ptr += rootfs_out.size;
if (kernel.name)
@@ -410,7 +412,7 @@ int main(int argc, char *argv[])
while (1) {
int c;
- c = getopt(argc, argv, "b:k:o:r:s:v:h");
+ c = getopt(argc, argv, "b:k:o:r:s:v:l:h");
if (c == -1)
break;
@@ -436,6 +438,9 @@ int main(int argc, char *argv[])
case 'v':
version_name = optarg;
break;
+ case 'l':
+ sscanf(optarg, "%u", &header_length);
+ break;
default:
usage(EXIT_FAILURE);
break;