* dsrec.c (load_srec): Remove unused variable.

monitor.c (monitor_expect): Don't expect a ^C to echo.
	* serial.c (serial_open): Add parallel interface.
	* sh3-rom.c (parallel, parallel_in_use): New.
	(sh3_load): If parallel_in_use, download though the
	parallel port.
	(sh3_open): Open parallel port if specified.
	(sh3_close): New function.
	(_inititalize_sh3): Add sh3_close hook and documentation.
	* monitor.c (monitor_close): Export.
	* monitor.h (monitor_close): Add prototype.
This commit is contained in:
Steve Chamberlain 1996-01-13 00:21:55 +00:00
parent 2afa4f215e
commit c84e500001
4 changed files with 95 additions and 16 deletions

View File

@ -1,3 +1,17 @@
Fri Jan 12 15:56:12 1996 Steve Chamberlain <sac@slash.cygnus.com>
* dsrec.c (load_srec): Remove unused variable.
monitor.c (monitor_expect): Don't expect a ^C to echo.
* serial.c (serial_open): Add parallel interface.
* sh3-rom.c (parallel, parallel_in_use): New.
(sh3_load): If parallel_in_use, download though the
parallel port.
(sh3_open): Open parallel port if specified.
(sh3_close): New function.
(_inititalize_sh3): Add sh3_close hook and documentation.
* monitor.c (monitor_close): Export.
* monitor.h (monitor_close): Add prototype.
Fri Jan 12 13:11:42 1996 Stan Shebs <shebs@andros.cygnus.com>
From Wilfried Moser <wilfried.moser@aut.alcatel.at>:

View File

@ -1,8 +1,5 @@
/* Remote debugging interface ROM monitors.
* Copyright 1990, 1991, 1992 Free Software Foundation, Inc.
* Contributed by Cygnus Support. Written by Rob Savoye for Cygnus.
*
* Copyright 1990, 1991, 1992 Free Software Foundation, Inc.
* Copyright 1990, 1991, 1992, 1996 Free Software Foundation, Inc.
* Contributed by Cygnus Support. Written by Rob Savoye for Cygnus.
*
* This file is part of GDB.
@ -165,6 +162,7 @@ extern struct monitor_ops *current_monitor;
#define REG_DELIM (current_monitor->regset.delim)
extern void monitor_open PARAMS ((char *args, struct monitor_ops *ops, int from_tty));
extern void monitor_close PARAMS ((int quitting));
extern char *monitor_supply_register PARAMS ((int regno, char *valstr));
extern int monitor_expect PARAMS ((char *prompt, char *buf, int buflen));
extern int monitor_expect_prompt PARAMS ((char *buf, int buflen));

View File

@ -1,5 +1,5 @@
/* Generic serial interface routines
Copyright 1992, 1993 Free Software Foundation, Inc.
Copyright 1992, 1993, 1996 Free Software Foundation, Inc.
This file is part of GDB.
@ -74,6 +74,8 @@ serial_open (name)
ops = serial_interface_lookup ("pc");
else if (strchr (name, ':'))
ops = serial_interface_lookup ("tcp");
else if (strncmp (name, "lpt", 3) == 0)
ops = serial_interface_lookup ("parallel");
else
ops = serial_interface_lookup ("hardwire");

View File

@ -1,5 +1,5 @@
/* Remote target glue for the Hitachi SH-3 ROM monitor.
Copyright 1995 Free Software Foundation, Inc.
Copyright 1995, 1996 Free Software Foundation, Inc.
This file is part of GDB.
@ -24,6 +24,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "serial.h"
#include "srec.h"
static serial_t parallel;
static int parallel_in_use;
static void sh3_open PARAMS ((char *args, int from_tty));
static void
@ -109,16 +112,25 @@ sh3_load (desc, file, hashmark)
char *file;
int hashmark;
{
monitor_printf ("il;s:x\r");
monitor_expect ("\005", NULL, 0); /* Look for ENQ */
SERIAL_WRITE (desc, "\006", 1); /* Send ACK */
monitor_expect ("LO x\r", NULL, 0); /* Look for filename */
if (parallel_in_use)
{
monitor_printf("pl;s\r");
load_srec (parallel, file, 80, SREC_ALL, hashmark);
monitor_expect_prompt (NULL, 0);
}
else
{
monitor_printf ("il;s:x\r");
monitor_expect ("\005", NULL, 0); /* Look for ENQ */
SERIAL_WRITE (desc, "\006", 1); /* Send ACK */
monitor_expect ("LO x\r", NULL, 0); /* Look for filename */
load_srec (desc, file, 80, SREC_ALL, hashmark);
load_srec (desc, file, 80, SREC_ALL, hashmark);
monitor_expect ("\005", NULL, 0); /* Look for ENQ */
SERIAL_WRITE (desc, "\006", 1); /* Send ACK */
monitor_expect_prompt (NULL, 0);
monitor_expect ("\005", NULL, 0); /* Look for ENQ */
SERIAL_WRITE (desc, "\006", 1); /* Send ACK */
monitor_expect_prompt (NULL, 0);
}
}
/* This array of registers need to match the indexes used by GDB.
@ -203,7 +215,48 @@ sh3_open (args, from_tty)
char *args;
int from_tty;
{
monitor_open (args, &sh3_cmds, from_tty);
char *serial_port_name = args;
char *parallel_port_name = 0;
if (args)
{
char *cursor = serial_port_name = strsave (args);
while (*cursor && *cursor != ' ')
cursor++;
if (*cursor)
*cursor++ = 0;
while (*cursor == ' ')
cursor++;
if (*cursor)
parallel_port_name = cursor;
}
monitor_open (serial_port_name, &sh3_cmds, from_tty);
if (parallel_port_name)
{
parallel = SERIAL_OPEN (parallel_port_name);
if (!parallel)
{
perror_with_name ("Unable to open parallel port.");
}
parallel_in_use = 1;
}
}
static void
sh3_close (quitting)
int quitting;
{
monitor_close (quitting);
if (parallel_in_use) {
SERIAL_CLOSE (parallel);
parallel_in_use = 0;
}
}
void
@ -213,9 +266,21 @@ _initialize_sh3 ()
sh3_ops.to_shortname = "sh3";
sh3_ops.to_longname = "Hitachi SH-3 rom monitor";
sh3_ops.to_doc = "Debug on a Hitachi eval board running the SH-3 rom monitor.\n\
sh3_ops.to_doc =
#ifdef _WINDOWS
/* On windows we can talk through the parallel port too. */
"Debug on a Hitachi eval board running the SH-3 rom monitor.\n"
"Specify the serial device it is connected to (e.g. com2).\n"
"If you want to use the parallel port to download to it, specify that\n"
"as the second argument. (e.g. lpt1)";
#else
"Debug on a Hitachi eval board running the SH-3 rom monitor.\n\
Specify the serial device it is connected to (e.g. /dev/ttya).";
#endif
sh3_ops.to_open = sh3_open;
sh3_ops.to_close = sh3_close;
add_target (&sh3_ops);
}