FreeCalypso > hg > freecalypso-sw
changeset 52:b015036286f3
fc-loadtool: fast-baud communication with loadagent implemented, works!
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sun, 23 Jun 2013 04:34:22 +0000 |
parents | aa62352647f7 |
children | 604648026e9c |
files | loadtools/Makefile loadtools/labaud.c loadtools/ltdispatch.c |
diffstat | 3 files changed, 52 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/loadtools/Makefile Sun Jun 23 03:38:09 2013 +0000 +++ b/loadtools/Makefile Sun Jun 23 04:34:22 2013 +0000 @@ -9,9 +9,9 @@ IRAM_OBJS= defpath.o hexdecode.o hwparam.o romload.o sercomm.o sertool.o \ srecreader.o ttypassthru.o -LOADTOOL_OBJS= crc32tab.o defpath.o hexdecode.o hwparam.o ltdispatch.o \ - ltdump.o ltexit.o ltmain.o ltpassthru.o ltscript.o romload.o \ - sercomm.o srecreader.o tpinterf.o tpinterf2.o +LOADTOOL_OBJS= crc32tab.o defpath.o hexdecode.o hwparam.o labaud.o \ + ltdispatch.o ltdump.o ltexit.o ltmain.o ltpassthru.o ltscript.o\ + romload.o sercomm.o srecreader.o tpinterf.o tpinterf2.o XRAM_OBJS= chainload.o clmain.o defpath.o hexdecode.o hwparam.o \ initscript.o romload.o sercomm.o srecreader.o tpinterf.o \
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/loadtools/labaud.c Sun Jun 23 04:34:22 2013 +0000 @@ -0,0 +1,47 @@ +/* + * This module handles the switching of serial baud rates + * in coordination with loadagent. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <termios.h> +#include <unistd.h> +#include "baudrate.h" + +extern int target_fd; +extern struct baudrate *current_baud_rate; +extern struct baudrate *find_baudrate_by_name(); + +loadagent_switch_baud(newbr) + struct baudrate *newbr; +{ + char *argv[3]; + static char U = 'U'; + + argv[0] = "baud"; + argv[1] = newbr->name; + argv[2] = 0; + tpinterf_make_cmd(argv); + if (tpinterf_send_cmd() < 0) + return(-1); + switch_baud_rate(newbr); + usleep(150000); + write(target_fd, &U, 1); + return tpinterf_pass_output(1); +} + +cmd_baud(argc, argv) + char **argv; +{ + struct baudrate *br; + + if (argc < 2) { + printf("Current baud rate is %s\n", current_baud_rate->name); + return(0); + } + br = find_baudrate_by_name(argv[1]); + if (!br) + return(-1); /* error msg already printed */ + return loadagent_switch_baud(br); +}
--- a/loadtools/ltdispatch.c Sun Jun 23 03:38:09 2013 +0000 +++ b/loadtools/ltdispatch.c Sun Jun 23 04:34:22 2013 +0000 @@ -8,6 +8,7 @@ #include <strings.h> #include <stdlib.h> +extern int cmd_baud(); extern int cmd_crc32(); extern int cmd_dump2bin(); extern int cmd_dump2srec(); @@ -21,6 +22,7 @@ int maxargs; int (*func)(); } cmdtab[] = { + {"baud", 0, 1, cmd_baud}, {"crc32", 2, 2, cmd_crc32}, {"dump", 2, 2, loadtool_cmd_passthru}, {"dump2bin", 3, 3, cmd_dump2bin},