FreeCalypso > hg > freecalypso-sw
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() {