changeset 257:d4d07c751e56

helpers: mk-flash-script helper program written
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 04 Aug 2017 06:54:12 +0000
parents ba63f14d1e84
children 13bcc2ed7e44
files .hgignore helpers/Makefile helpers/mk-flash-script.c
diffstat 3 files changed, 44 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/.hgignore	Fri Aug 04 00:09:09 2017 +0000
+++ b/.hgignore	Fri Aug 04 06:54:12 2017 +0000
@@ -3,5 +3,6 @@
 ^build-
 ^helpers/build-date$
 ^helpers/makeline$
+^helpers/mk-flash-script$
 ^helpers/srec4ram$
 ^helpers/str2ind-ver$
--- a/helpers/Makefile	Fri Aug 04 00:09:09 2017 +0000
+++ b/helpers/Makefile	Fri Aug 04 06:54:12 2017 +0000
@@ -1,6 +1,6 @@
 CC=	gcc
 CFLAGS=	-O2
-PROGS=	build-date makeline srec4ram str2ind-ver
+PROGS=	build-date makeline mk-flash-script srec4ram str2ind-ver
 
 all:	${PROGS}
 
@@ -10,6 +10,9 @@
 makeline:	makeline.c
 	${CC} ${CFLAGS} -o $@ $@.c
 
+mk-flash-script:	mk-flash-script.c
+	${CC} ${CFLAGS} -o $@ $@.c
+
 srec4ram:	srec4ram.c
 	${CC} ${CFLAGS} -o $@ $@.c
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/helpers/mk-flash-script.c	Fri Aug 04 06:54:12 2017 +0000
@@ -0,0 +1,39 @@
+/*
+ * This helper program generates the fc-loadtool command script
+ * for flashing the just-built firmware image.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+main(argc, argv)
+	char **argv;
+{
+	struct stat st;
+	u_long image_size, sector_size;
+
+	if (argc != 4) {
+		fprintf(stderr,
+			"usage: %s fwimage.bin flash-base flash-sector-size\n",
+			argv[0]);
+		exit(1);
+	}
+	if (stat(argv[1], &st) < 0) {
+		perror(argv[1]);
+		exit(1);
+	}
+	if (!S_ISREG(st.st_mode)) {
+		fprintf(stderr, "error: %s is not a regular file\n", argv[1]);
+		exit(1);
+	}
+	image_size = st.st_size;
+	sector_size = strtoul(argv[3], 0, 16);
+	image_size += sector_size - 1;
+	image_size &= ~(sector_size - 1);
+	printf("flash erase %s 0x%lx\n", argv[2], image_size);
+	printf("flash program-bin %s %s\n", argv[2], argv[1]);
+	exit(0);
+}