changeset 50:f1df95eed62c

loadtools: -b option works in fc-iram
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sun, 23 Jun 2013 03:32:04 +0000
parents 54392d1ea474
children aa62352647f7
files loadtools/romload.c loadtools/sercomm.c loadtools/sertool.c
diffstat 3 files changed, 52 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/loadtools/romload.c	Sun Jun 23 02:53:16 2013 +0000
+++ b/loadtools/romload.c	Sun Jun 23 03:32:04 2013 +0000
@@ -21,6 +21,7 @@
 extern char *target_ttydev;
 extern int target_fd;
 extern struct baudrate baud_rate_table[];
+extern struct baudrate *find_baudrate_by_name();
 
 struct srecreader iramimage;
 struct baudrate *romload_baud_rate = baud_rate_table;	/* 1st entry default */
@@ -71,6 +72,27 @@
 }
 
 /*
+ * The following function should be called by command line option
+ * parsers upon encountering the -b option.
+ */
+set_romload_baudrate(arg)
+	char *arg;
+{
+	struct baudrate *br;
+
+	br = find_baudrate_by_name(arg);
+	if (!br)
+		exit(1);	/* error msg already printed */
+	if (br->bootrom_code < 0) {
+		fprintf(stderr,
+		"baud rate of %s is not supported by the Calypso boot ROM\n",
+			br->name);
+		exit(1);
+	}
+	romload_baud_rate = br;
+}
+
+/*
  * The following functions alter some of the parameters sent to the
  * boot ROM in the <p command.
  */
--- a/loadtools/sercomm.c	Sun Jun 23 02:53:16 2013 +0000
+++ b/loadtools/sercomm.c	Sun Jun 23 03:32:04 2013 +0000
@@ -9,6 +9,8 @@
 #include <termios.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
+#include <strings.h>
 #include <unistd.h>
 #include "baudrate.h"
 
@@ -54,6 +56,24 @@
 	return 0;
 }
 
+struct baudrate *
+find_baudrate_by_name(srch_name)
+	char *srch_name;
+{
+	struct baudrate *br;
+
+	for (br = baud_rate_table; br->name; br++)
+		if (!strcmp(br->name, srch_name))
+			break;
+	if (br->name)
+		return(br);
+	else {
+		fprintf(stderr, "error: baud rate \"%s\" not known\n",
+			srch_name);
+		return(NULL);
+	}
+}
+
 switch_baud_rate(br)
 	struct baudrate *br;
 {
--- a/loadtools/sertool.c	Sun Jun 23 02:53:16 2013 +0000
+++ b/loadtools/sertool.c	Sun Jun 23 03:32:04 2013 +0000
@@ -1,8 +1,8 @@
 /*
- * This module contains the main() function for fc-sertool: the simplest
- * of the FreeCalypso loading tools, which sends the user-specified
- * IRAM SREC image to the boot ROM and then switches into serial tty
- * pass-through.
+ * This module contains the main() function for fc-iram, previously
+ * called fc-sertool: the simplest of the FreeCalypso loading tools,
+ * which sends the user-specified IRAM SREC image to the boot ROM
+ * and then switches into serial tty pass-through.
  */
 
 #include <sys/types.h>
@@ -22,8 +22,11 @@
 	extern int optind;
 	int c;
 
-	while ((c = getopt(argc, argv, "h:H:i:")) != EOF)
+	while ((c = getopt(argc, argv, "b:h:H:i:")) != EOF)
 		switch (c) {
+		case 'b':
+			set_romload_baudrate(optarg);
+			continue;
 		case 'h':
 			read_hwparam_file_shortname(optarg);
 			continue;
@@ -36,7 +39,7 @@
 		case '?':
 		default:
 usage:			fprintf(stderr,
-			"usage: fc-sertool [options] ttyport iramimage.srec\n");
+			"usage: fc-iram [options] ttyport iramimage.srec\n");
 			exit(1);
 		}
 	if (argc - optind != 2)
@@ -51,7 +54,7 @@
 }
 
 /* called from hwparam.c config file parser */
-/* stub needed for fc-sertool to link */
+/* stub needed for fc-iram to link */
 void
 set_default_exit_mode()
 {