This is the mail archive of the
ecos-patches@sources.redhat.com
mailing list for the eCos project.
go command enhancements
- From: Mark Salter <msalter at redhat dot com>
- To: ecos-patches at sources dot redhat dot com
- Date: Fri, 4 Apr 2003 10:41:39 -0500 (EST)
- Subject: go command enhancements
Index: redboot/current/ChangeLog
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/ChangeLog,v
retrieving revision 1.101
diff -u -p -5 -r1.101 ChangeLog
--- redboot/current/ChangeLog 3 Apr 2003 15:27:23 -0000 1.101
+++ redboot/current/ChangeLog 4 Apr 2003 15:29:20 -0000
@@ -1,5 +1,11 @@
+2003-04-04 Mark Salter <msalter at redhat dot com>
+
+ * src/main.c (do_go): Add -n switch to optionally stop network
+ device. Mask interrupts on all comm channels.
+ * doc/redboot_cmds.sgml: Update go command info.
+
2003-04-03 Gary Thomas <gary at mlbassoc dot com>
* src/load.c: Better handling of default download mode. Also
display information when I/O errors occor (was silent).
(do_load): Handle case when X-modem protocol is disabled.
Index: redboot/current/doc/redboot_cmds.sgml
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/doc/redboot_cmds.sgml,v
retrieving revision 1.5
diff -u -p -5 -r1.5 redboot_cmds.sgml
--- redboot/current/doc/redboot_cmds.sgml 15 Sep 2002 21:45:31 -0000 1.5
+++ redboot/current/doc/redboot_cmds.sgml 4 Apr 2003 15:29:26 -0000
@@ -8,11 +8,11 @@
<!-- -->
<!-- =============================================================== -->
<!-- ####COPYRIGHTBEGIN#### -->
<!-- -->
<!-- =============================================================== -->
-<!-- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. -->
+<!-- Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. -->
<!-- This material may be distributed only subject to the terms -->
<!-- and conditions set forth in the Open Publication License, v1.0 -->
<!-- or later (the latest version is presently available at -->
<!-- http://www.opencontent.org/openpub/) -->
<!-- Distribution of the work or derivative of the work in any -->
@@ -122,11 +122,11 @@ Display (hex dump) a range of memory
Manage flash images
fis {cmds}
Manage configuration kept in FLASH memory
fconfig [-i] [-l] [-n] [-f] [-d] | [-d] nickname [value]
Execute code at a location
- go [-w <timeout>] [entry]
+ go [-w <timeout>] [-c] [-n] [entry]
Help about help?
help [<topic>]
Set/change IP addresses
ip_address [-l <local_ip_address>] [-h <server_address>]
Load a file
@@ -2703,10 +2703,12 @@ or a Linux kernel.</para>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>go</command>
<arg>-w <replaceable> timeout</replaceable></arg>
+ <arg>-c</arg>
+ <arg>-n</arg>
<arg><replaceable> start_address</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Arguments</title>
@@ -2728,10 +2730,22 @@ or a Linux kernel.</para>
<row>
<entry>-w <replaceable>timeout</replaceable></entry>
<entry>Number</entry>
<entry>How long to wait before starting execution.</entry>
<entry>0</entry>
+ </row>
+ <row>
+ <entry>-c</entry>
+ <entry>Boolean</entry>
+ <entry>Go with caches enabled.</entry>
+ <entry>caches off</entry>
+ </row>
+ <row>
+ <entry>-n</entry>
+ <entry>Boolean</entry>
+ <entry>Go with network interface stopped.</entry>
+ <entry>network enabled</entry>
</row>
<row>
<entry><replaceable>start_address</replaceable></entry>
<entry>Number</entry>
<entry>Address in memory to begin execution.</entry>
Index: redboot/current/src/main.c
===================================================================
RCS file: /cvs/ecos/ecos/packages/redboot/current/src/main.c,v
retrieving revision 1.41
diff -u -p -5 -r1.41 main.c
--- redboot/current/src/main.c 5 Mar 2003 01:46:29 -0000 1.41
+++ redboot/current/src/main.c 4 Apr 2003 15:29:26 -0000
@@ -59,10 +59,14 @@
#include <cyg/hal/hal_intr.h>
#include <cyg/hal/hal_if.h>
#include <cyg/hal/hal_cache.h>
#include CYGHWR_MEMORY_LAYOUT_H
+#ifdef CYGPKG_IO_ETH_DRIVERS
+#include <cyg/io/eth/eth_drv.h> // Logical driver interfaces
+#endif
+
#include <cyg/hal/hal_tables.h>
#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
#ifdef CYGBLD_HAL_PLATFORM_STUB_H
#include CYGBLD_HAL_PLATFORM_STUB_H
@@ -418,25 +422,29 @@ return_to_redboot(int status)
}
void
do_go(int argc, char *argv[])
{
+ int i, cur;
unsigned long entry;
unsigned long oldints;
bool wait_time_set;
int wait_time, res;
bool cache_enabled = false;
- struct option_info opts[2];
+ bool stop_net = false;
+ struct option_info opts[3];
char line[8];
- hal_virtual_comm_table_t *__chan = CYGACC_CALL_IF_CONSOLE_PROCS();
+ hal_virtual_comm_table_t *__chan;
entry = entry_address; // Default from last 'load' operation
init_opts(&opts[0], 'w', true, OPTION_ARG_TYPE_NUM,
(void **)&wait_time, (bool *)&wait_time_set, "wait timeout");
init_opts(&opts[1], 'c', false, OPTION_ARG_TYPE_FLG,
(void **)&cache_enabled, (bool *)0, "go with caches enabled");
- if (!scan_opts(argc, argv, 1, opts, 2, (void *)&entry, OPTION_ARG_TYPE_NUM, "starting address"))
+ init_opts(&opts[2], 'n', false, OPTION_ARG_TYPE_FLG,
+ (void **)&stop_net, (bool *)0, "go with network driver stopped");
+ if (!scan_opts(argc, argv, 1, opts, 3, (void *)&entry, OPTION_ARG_TYPE_NUM, "starting address"))
{
return;
}
if (wait_time_set) {
int script_timeout_ms = wait_time * 1000;
@@ -455,12 +463,28 @@ do_go(int argc, char *argv[])
return;
}
script_timeout_ms -= CYGNUM_REDBOOT_CLI_IDLE_TIMEOUT;
}
}
+
+ // Mask interrupts on all channels
+ cur = CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT);
+ for (i = 0; i < CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS; i++) {
+ CYGACC_CALL_IF_SET_CONSOLE_COMM(i);
+ __chan = CYGACC_CALL_IF_CONSOLE_PROCS();
+ CYGACC_COMM_IF_CONTROL( *__chan, __COMMCTL_IRQ_DISABLE );
+ }
+ CYGACC_CALL_IF_SET_CONSOLE_COMM(cur);
+
+ __chan = CYGACC_CALL_IF_CONSOLE_PROCS();
CYGACC_COMM_IF_CONTROL(*__chan, __COMMCTL_ENABLE_LINE_FLUSH);
+#ifdef CYGPKG_IO_ETH_DRIVERS
+ if (stop_net)
+ eth_drv_stop();
+#endif
+
HAL_DISABLE_INTERRUPTS(oldints);
HAL_DCACHE_SYNC();
if (!cache_enabled) {
HAL_ICACHE_DISABLE();
HAL_DCACHE_DISABLE();