annotate packages/redboot/current/src/main.c @ 2257:467fd46113f3

* src/fs/fileio.c (do_list): Use getcwd for current directory, rather than "." which may not be implemented in the FS. * src/parse.c (redboot_exec): Conditionalise use of __mem_fault_handler to only be when stubs are included. (error_handler): Ditto for this function. * src/main.c (cyg_start): Conditionalise use of __mem_fault_handler to only be when stubs are included. (do_go): Ditto. (error_handler): Ditto for this function. * src/fs/fileio.c (do_mkdir, do_deldir, do_del, do_write): Added some extra argument checking to these functions. * src/fs/fileio.c (do_mount): Only support -f with "legacy" flash block devices. Clear mount table on failure. (do_move): Silence rename undefined warning. (do_write): Silence warnings. (do_info): Support longer device names. * src/decompress.c (ZLIB_COMPRESSION_OVERHEAD): Increase substantially if jffs2 is present. * src/fs/fileio.c: Fixed some bugs in handling of mounts. The strings used in the mount table must be copied, otherwise the mount table is corrupted by later commands. Also toughened up some error testing. * doc/redboot_cmds.sgml: Added file mode documentation to load command. * doc/redboot_cmds.sgml: Added documentation of filesystem access commands. * src/fs/fileio.c (do_write): Added O_TRUNC to the open call to ensure that the file is resized to fit the new data. * src/fs/fileio.c: Significantly reorganized to present an interface similar to the fis commands. Added a variety of command to manipulate files and directories in a filesystem. * src/parse.c: Added redboot_exec() to provide an internal interface for executing RedBoot commands. Added err_printf() which allows an error message to be printed before longjumping out to an enclosing call to redboot_exec(). Where redboot_exec() is not involved, it just behaves like diag_printf(). * src/main.c: Removed unnecessary delay during startup. Changed diag_printf() in do_go() into err_printf(). * src/load.c: Changed some calls to diag_printf() to err_printf(). * src/net/net_io.c: Changed init priority to RedBoot_INIT_NET. * include/redboot.h: Added some extra initialization priorities. Added prototypes for redboot_exec() and err_printf().
author jlarmour
date Thu, 20 Jul 2006 20:27:47 +0000
parents 5c5e93c863ac
children 6cbecf3cc2e4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
1 //==========================================================================
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
2 //
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
3 // main.c
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
4 //
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
5 // RedBoot main routine
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
6 //
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
7 //==========================================================================
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
8 //####ECOSGPLCOPYRIGHTBEGIN####
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
9 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
10 // This file is part of eCos, the Embedded Configurable Operating System.
1740
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
1605
43a89c18d005 Add checking (assert) for size of option arrays. Also fix port for TFTP on little endian systems.
gthomas
parents: 1513
diff changeset
12 // Copyright (C) 2002, 2003, 2004 Gary Thomas
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
13 // Copyright (C) 2003, 2004, 2005, 2006 eCosCentric Limited
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
14 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
15 // eCos is free software; you can redistribute it and/or modify it under
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
16 // the terms of the GNU General Public License as published by the Free
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
17 // Software Foundation; either version 2 or (at your option) any later version.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
18 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
19 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
20 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
21 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
22 // for more details.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
23 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
24 // You should have received a copy of the GNU General Public License along
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
25 // with eCos; if not, write to the Free Software Foundation, Inc.,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
26 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
27 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
28 // As a special exception, if other files instantiate templates or use macros
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
29 // or inline functions from this file, or you compile this file and link it
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
30 // with other works to produce a work based on this file, this file does not
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
31 // by itself cause the resulting work to be covered by the GNU General Public
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
32 // License. However the source code for this file must still be made available
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
33 // in accordance with section (3) of the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
34 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
35 // This exception does not invalidate any other reasons why a work based on
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
36 // this file might be covered by the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
37 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
38 //####ECOSGPLCOPYRIGHTEND####
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
39 //==========================================================================
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
40 //#####DESCRIPTIONBEGIN####
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
41 //
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
42 // Author(s): gthomas
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
43 // Contributors: gthomas, tkoeller, eCosCentric
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
44 // Date: 2000-07-14
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
45 // Purpose:
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
46 // Description:
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
47 //
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
48 // This code is part of RedBoot (tm).
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
49 //
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
50 //####DESCRIPTIONEND####
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
51 //
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
52 //==========================================================================
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
53
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
54 #define DEFINE_VARS
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
55 #include <redboot.h>
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
56 #include <cyg/hal/hal_arch.h>
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
57 #include <cyg/hal/hal_intr.h>
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
58 #include <cyg/hal/hal_if.h>
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
59 #include <cyg/hal/hal_cache.h>
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
60 #include CYGHWR_MEMORY_LAYOUT_H
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
61
907
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
62 #ifdef CYGPKG_IO_ETH_DRIVERS
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
63 #include <cyg/io/eth/eth_drv.h> // Logical driver interfaces
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
64 #endif
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
65
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
66 #include <cyg/hal/hal_tables.h>
1605
43a89c18d005 Add checking (assert) for size of option arrays. Also fix port for TFTP on little endian systems.
gthomas
parents: 1513
diff changeset
67 #include <cyg/infra/cyg_ass.h> // assertion macros
1872
321c9b8eb063 * src/main.c (cyg_start): Fix compiler warning with
asl
parents: 1855
diff changeset
68 #include <cyg/infra/cyg_type.h>
162
2395031e7a66 Merge from eCos master repository on 2001-06-15-06:43:03-BST
jlarmour
parents: 161
diff changeset
69 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
145
2e9a636d9de9 Merge from eCos master repository on 2000-12-21-14:18:40-GMT
jlarmour
parents: 143
diff changeset
70 #ifdef CYGBLD_HAL_PLATFORM_STUB_H
2e9a636d9de9 Merge from eCos master repository on 2000-12-21-14:18:40-GMT
jlarmour
parents: 143
diff changeset
71 #include CYGBLD_HAL_PLATFORM_STUB_H
2e9a636d9de9 Merge from eCos master repository on 2000-12-21-14:18:40-GMT
jlarmour
parents: 143
diff changeset
72 #else
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
73 #include <cyg/hal/plf_stub.h>
145
2e9a636d9de9 Merge from eCos master repository on 2000-12-21-14:18:40-GMT
jlarmour
parents: 143
diff changeset
74 #endif
264
57f3c72256bb Reorg CLI functions into separate files. Update CDL. Fix macros in scripts.
gthomas
parents: 210
diff changeset
75 // GDB interfaces
57f3c72256bb Reorg CLI functions into separate files. Update CDL. Fix macros in scripts.
gthomas
parents: 210
diff changeset
76 extern void breakpoint(void);
162
2395031e7a66 Merge from eCos master repository on 2001-06-15-06:43:03-BST
jlarmour
parents: 161
diff changeset
77 #endif
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
78
132
0ae0bc38e387 Merge from eCos master repository on 2000-10-31-00:30:36-GMT
jlarmour
parents: 130
diff changeset
79 // Builtin Self Test (BIST)
0ae0bc38e387 Merge from eCos master repository on 2000-10-31-00:30:36-GMT
jlarmour
parents: 130
diff changeset
80 externC void bist(void);
0ae0bc38e387 Merge from eCos master repository on 2000-10-31-00:30:36-GMT
jlarmour
parents: 130
diff changeset
81
1002
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
82 // Path to code run from a go command or to GDB stubs
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
83 static void trampoline(unsigned long entry);
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
84
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
85 // Return path for code run from a go command or for GDB stubs
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
86 static void return_to_redboot(int status);
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
87
1002
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
88 // Address of area where current context is saved before executing
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
89 // trampoline procedure
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
90 static void * saved_context;
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
91
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
92 // Status returned after trampoline execution
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
93 static int return_status;
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
94
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
95
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
96 // CLI command processing (defined in this file)
138
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 132
diff changeset
97 RedBoot_cmd("version",
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 132
diff changeset
98 "Display RedBoot version information",
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 132
diff changeset
99 "",
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 132
diff changeset
100 do_version
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 132
diff changeset
101 );
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
102 RedBoot_cmd("help",
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
103 "Help about help?",
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
104 "[<topic>]",
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
105 do_help
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
106 );
1503
0ec4d1b9182f Update help strings for 'go' command - from Andy Dyer
gthomas
parents: 1492
diff changeset
107
0ec4d1b9182f Update help strings for 'go' command - from Andy Dyer
gthomas
parents: 1492
diff changeset
108 static char go_usage[] = "[-w <timeout>] [-c] "
0ec4d1b9182f Update help strings for 'go' command - from Andy Dyer
gthomas
parents: 1492
diff changeset
109 #ifdef CYGPKG_IO_ETH_DRIVERS
0ec4d1b9182f Update help strings for 'go' command - from Andy Dyer
gthomas
parents: 1492
diff changeset
110 "[-n] "
0ec4d1b9182f Update help strings for 'go' command - from Andy Dyer
gthomas
parents: 1492
diff changeset
111 #endif
0ec4d1b9182f Update help strings for 'go' command - from Andy Dyer
gthomas
parents: 1492
diff changeset
112 "[entry]";
0ec4d1b9182f Update help strings for 'go' command - from Andy Dyer
gthomas
parents: 1492
diff changeset
113
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
114 RedBoot_cmd("go",
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
115 "Execute code at a location",
1503
0ec4d1b9182f Update help strings for 'go' command - from Andy Dyer
gthomas
parents: 1492
diff changeset
116 go_usage,
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
117 do_go
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
118 );
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
119 #ifdef HAL_PLATFORM_RESET
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
120 RedBoot_cmd("reset",
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
121 "Reset the system",
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
122 "",
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
123 do_reset
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
124 );
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
125 #endif
160
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
126 #ifdef CYGSEM_REDBOOT_VARIABLE_BAUD_RATE
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
127 RedBoot_cmd("baudrate",
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
128 "Set/Query the system console baud rate",
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
129 "[-b <rate>]",
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
130 do_baud_rate
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
131 );
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
132 #endif
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
133
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
134 // Define table boundaries
130
eb9fd8c04db3 Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents: 128
diff changeset
135 CYG_HAL_TABLE_BEGIN( __RedBoot_INIT_TAB__, RedBoot_inits );
eb9fd8c04db3 Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents: 128
diff changeset
136 CYG_HAL_TABLE_END( __RedBoot_INIT_TAB_END__, RedBoot_inits );
eb9fd8c04db3 Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents: 128
diff changeset
137 extern struct init_tab_entry __RedBoot_INIT_TAB__[], __RedBoot_INIT_TAB_END__;
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
138
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
139 CYG_HAL_TABLE_BEGIN( __RedBoot_CMD_TAB__, RedBoot_commands );
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
140 CYG_HAL_TABLE_END( __RedBoot_CMD_TAB_END__, RedBoot_commands );
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
141 extern struct cmd __RedBoot_CMD_TAB__[], __RedBoot_CMD_TAB_END__;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
142
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
143 CYG_HAL_TABLE_BEGIN( __RedBoot_IDLE_TAB__, RedBoot_idle );
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
144 CYG_HAL_TABLE_END( __RedBoot_IDLE_TAB_END__, RedBoot_idle );
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
145 extern struct idle_tab_entry __RedBoot_IDLE_TAB__[], __RedBoot_IDLE_TAB_END__;
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
146
141
450e4e1f1e80 Merge from eCos master repository on 2000-11-27-23:09:27-GMT
jlarmour
parents: 138
diff changeset
147 #ifdef HAL_ARCH_PROGRAM_NEW_STACK
450e4e1f1e80 Merge from eCos master repository on 2000-11-27-23:09:27-GMT
jlarmour
parents: 138
diff changeset
148 extern void HAL_ARCH_PROGRAM_NEW_STACK(void *fun);
450e4e1f1e80 Merge from eCos master repository on 2000-11-27-23:09:27-GMT
jlarmour
parents: 138
diff changeset
149 #endif
450e4e1f1e80 Merge from eCos master repository on 2000-11-27-23:09:27-GMT
jlarmour
parents: 138
diff changeset
150
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
151 //
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
152 // [Null] Builtin [Power On] Self Test
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
153 //
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
154 void bist(void) CYGBLD_ATTRIB_WEAK;
160
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
155
138
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 132
diff changeset
156 void
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
157 bist(void)
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
158 {
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
159 }
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
160
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
161 //
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
162 // 'version' command
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
163 //
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
164 void
138
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 132
diff changeset
165 do_version(int argc, char *argv[])
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 132
diff changeset
166 {
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
167 #if CYGBLD_REDBOOT_MAX_MEM_SEGMENTS > 1
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
168 int seg;
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
169 #endif
800
900f348771ef * src/main.c (do_version): Test for CYGPKG_REDBOOT_FLASH as
jlarmour
parents: 791
diff changeset
170 #ifdef CYGPKG_REDBOOT_FLASH
171
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents: 165
diff changeset
171 externC void _flash_info(void);
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents: 165
diff changeset
172 #endif
447
44f818173f96 Export RedBoot version via virtual vector table.
gthomas
parents: 335
diff changeset
173 char *version = CYGACC_CALL_IF_MONITOR_VERSION();
171
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents: 165
diff changeset
174
447
44f818173f96 Export RedBoot version via virtual vector table.
gthomas
parents: 335
diff changeset
175 diag_printf(version);
138
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 132
diff changeset
176 #ifdef HAL_PLATFORM_CPU
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
177 diag_printf("Platform: %s (%s) %s\n", HAL_PLATFORM_BOARD, HAL_PLATFORM_CPU, HAL_PLATFORM_EXTRA);
138
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 132
diff changeset
178 #endif
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
179 diag_printf("Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.\n");
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
180 diag_printf("Copyright (C) 2003, 2004, 2005, 2006 eCosCentric Limited\n\n");
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
181 diag_printf("RAM: %p-%p, ", (void*)ram_start, (void*)ram_end);
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
182 diag_printf("[%p-%p]", mem_segments[0].start, mem_segments[0].end);
1226
e4e339326f84 Improve memory layout display - from Chris Garry
gthomas
parents: 1223
diff changeset
183 diag_printf(" available\n");
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
184 #if CYGBLD_REDBOOT_MAX_MEM_SEGMENTS > 1
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
185 for (seg = 1; seg < CYGBLD_REDBOOT_MAX_MEM_SEGMENTS; seg++) {
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
186 if (mem_segments[seg].start != NO_MEMORY) {
1226
e4e339326f84 Improve memory layout display - from Chris Garry
gthomas
parents: 1223
diff changeset
187 diag_printf(" %p-%p, ", mem_segments[seg].start, mem_segments[seg].end);
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
188 diag_printf("[%p-%p]", mem_segments[seg].start, mem_segments[seg].end);
1226
e4e339326f84 Improve memory layout display - from Chris Garry
gthomas
parents: 1223
diff changeset
189 diag_printf(" available\n");
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
190 }
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
191 }
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
192 #endif
800
900f348771ef * src/main.c (do_version): Test for CYGPKG_REDBOOT_FLASH as
jlarmour
parents: 791
diff changeset
193 #ifdef CYGPKG_REDBOOT_FLASH
171
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents: 165
diff changeset
194 _flash_info();
42f843b391aa Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents: 165
diff changeset
195 #endif
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
196 }
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
197
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
198 //
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
199 // This function is called when RedBoot is idle (waiting for user
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
200 // input). It will call any registered "idle" routines, e.g. scan
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
201 // for incoming network connections, blank an LCD screen, etc.
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
202 //
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
203 void
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
204 do_idle(bool is_idle)
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
205 {
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
206 struct idle_tab_entry *idle_entry;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
207
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
208 for (idle_entry = __RedBoot_IDLE_TAB__;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
209 idle_entry != &__RedBoot_IDLE_TAB_END__; idle_entry++) {
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
210 (*idle_entry->fun)(is_idle);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
211 }
138
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 132
diff changeset
212 }
289bf90c6a9b Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents: 132
diff changeset
213
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
214 // Wrapper used by diag_printf()
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
215 static void
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
216 _mon_write_char(char c, void **param)
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
217 {
210
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
218 if (c == '\n') {
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
219 mon_write_char('\r');
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
220 }
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
221 mon_write_char(c);
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
222 }
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
223
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
224 //
1328
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
225 // Handle illegal memory accesses (and other abort conditions)
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
226 //
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
227 static hal_jmp_buf error_jmpbuf;
1475
c9e09b1c18cb Fix for building without GDB stubs
gthomas
parents: 1444
diff changeset
228 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
229 __externC void* volatile __mem_fault_handler;
1328
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
230
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
231 static void error_handler(void)
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
232 {
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
233 hal_longjmp(error_jmpbuf, 1);
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
234 }
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
235 #endif
1328
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
236
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
237
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
238 //
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
239 // This is the main entry point for RedBoot
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
240 //
1855
6535959b8edf Updates required by GCC v4 - from Andrea Michelotti <amichelotti@atmel.com>
gthomas
parents: 1740
diff changeset
241
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
242 void
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
243 cyg_start(void)
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
244 {
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
245 int res = 0;
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
246 bool prompt = true;
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
247 static char line[CYGPKG_REDBOOT_MAX_CMD_LINE];
183
9160a8005d76 Merge from eCos master repository on 2001-09-12-03:52:30-BST
jlarmour
parents: 182
diff changeset
248 char *command;
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
249 struct cmd *cmd;
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
250 int cur;
126
518f42066aba Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents: 117
diff changeset
251 struct init_tab_entry *init_entry;
447
44f818173f96 Export RedBoot version via virtual vector table.
gthomas
parents: 335
diff changeset
252 extern char RedBoot_version[];
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
253 #if CYGBLD_REDBOOT_MAX_MEM_SEGMENTS > 1
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
254 int seg;
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
255 #endif
447
44f818173f96 Export RedBoot version via virtual vector table.
gthomas
parents: 335
diff changeset
256
44f818173f96 Export RedBoot version via virtual vector table.
gthomas
parents: 335
diff changeset
257 // Export version information
44f818173f96 Export RedBoot version via virtual vector table.
gthomas
parents: 335
diff changeset
258 CYGACC_CALL_IF_MONITOR_VERSION_SET(RedBoot_version);
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
259
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
260 CYGACC_CALL_IF_MONITOR_RETURN_SET(return_to_redboot);
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
261
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
262 // Make sure the channels are properly initialized.
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
263 diag_init_putc(_mon_write_char);
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
264 hal_if_diag_init();
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
265
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
266 // Force console to output raw text - but remember the old setting
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
267 // so it can be restored if interaction with a debugger is
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
268 // required.
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
269 cur = CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT);
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
270 CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL);
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
271 #ifdef CYGPKG_REDBOOT_ANY_CONSOLE
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
272 console_selected = false;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
273 #endif
128
0c2b7be0d798 Merge from eCos master repository on 2000-10-12-08:46:24-BST
jlarmour
parents: 126
diff changeset
274 console_echo = true;
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
275
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
276 ram_start = (unsigned char *)CYGMEM_REGION_ram;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
277 ram_end = (unsigned char *)(CYGMEM_REGION_ram+CYGMEM_REGION_ram_SIZE);
150
f0e3fb000de8 Merge from eCos master repository on 2001-01-26-06:43:02-GMT
jlarmour
parents: 147
diff changeset
278 #ifdef HAL_MEM_REAL_REGION_TOP
f0e3fb000de8 Merge from eCos master repository on 2001-01-26-06:43:02-GMT
jlarmour
parents: 147
diff changeset
279 {
f0e3fb000de8 Merge from eCos master repository on 2001-01-26-06:43:02-GMT
jlarmour
parents: 147
diff changeset
280 unsigned char *ram_end_tmp = ram_end;
f0e3fb000de8 Merge from eCos master repository on 2001-01-26-06:43:02-GMT
jlarmour
parents: 147
diff changeset
281 ram_end = HAL_MEM_REAL_REGION_TOP( ram_end_tmp );
f0e3fb000de8 Merge from eCos master repository on 2001-01-26-06:43:02-GMT
jlarmour
parents: 147
diff changeset
282 }
f0e3fb000de8 Merge from eCos master repository on 2001-01-26-06:43:02-GMT
jlarmour
parents: 147
diff changeset
283 #endif
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
284 #ifdef CYGMEM_SECTION_heap1
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
285 workspace_start = (unsigned char *)CYGMEM_SECTION_heap1;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
286 workspace_end = (unsigned char *)(CYGMEM_SECTION_heap1+CYGMEM_SECTION_heap1_SIZE);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
287 #else
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
288 workspace_start = (unsigned char *)CYGMEM_REGION_ram;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
289 workspace_end = (unsigned char *)(CYGMEM_REGION_ram+CYGMEM_REGION_ram_SIZE);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
290 #endif
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
291
158
f2545e5de153 Merge from eCos master repository on 2001-04-24-11:22:42-BST
jlarmour
parents: 156
diff changeset
292 if ( ram_end < workspace_end ) {
f2545e5de153 Merge from eCos master repository on 2001-04-24-11:22:42-BST
jlarmour
parents: 156
diff changeset
293 // when *less* SDRAM is installed than the possible maximum,
f2545e5de153 Merge from eCos master repository on 2001-04-24-11:22:42-BST
jlarmour
parents: 156
diff changeset
294 // but the heap1 region remains greater...
f2545e5de153 Merge from eCos master repository on 2001-04-24-11:22:42-BST
jlarmour
parents: 156
diff changeset
295 workspace_end = ram_end;
f2545e5de153 Merge from eCos master repository on 2001-04-24-11:22:42-BST
jlarmour
parents: 156
diff changeset
296 }
f2545e5de153 Merge from eCos master repository on 2001-04-24-11:22:42-BST
jlarmour
parents: 156
diff changeset
297
2195
5c5e93c863ac Redundant FIS table support - from Alexander Neundorf
gthomas
parents: 2144
diff changeset
298 workspace_end_init=workspace_end;
5c5e93c863ac Redundant FIS table support - from Alexander Neundorf
gthomas
parents: 2144
diff changeset
299
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
300 // Nothing has ever been loaded into memory
1475
c9e09b1c18cb Fix for building without GDB stubs
gthomas
parents: 1444
diff changeset
301 entry_address = (unsigned long)NO_MEMORY;
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
302
132
0ae0bc38e387 Merge from eCos master repository on 2000-10-31-00:30:36-GMT
jlarmour
parents: 130
diff changeset
303 bist();
0ae0bc38e387 Merge from eCos master repository on 2000-10-31-00:30:36-GMT
jlarmour
parents: 130
diff changeset
304
1492
8b3549abe4ac * cdl/redboot.cdl: Bring CYGNUM_REDBOOT_LOAD_ZLIB_BUFFER under
jlarmour
parents: 1491
diff changeset
305 #if defined(CYGPRI_REDBOOT_ZLIB_FLASH) && defined(CYGOPT_REDBOOT_FIS_ZLIB_COMMON_BUFFER)
307
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 264
diff changeset
306 fis_zlib_common_buffer =
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 264
diff changeset
307 workspace_end -= CYGNUM_REDBOOT_FIS_ZLIB_COMMON_BUFFER_SIZE;
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 264
diff changeset
308 #endif
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 264
diff changeset
309
1444
d9e058a49f03 TCP SYN fix - from Jani Monoses
gthomas
parents: 1399
diff changeset
310 #ifdef CYGFUN_REDBOOT_BOOT_SCRIPT
d9e058a49f03 TCP SYN fix - from Jani Monoses
gthomas
parents: 1399
diff changeset
311 script_timeout = CYGNUM_REDBOOT_BOOT_SCRIPT_DEFAULT_TIMEOUT;
d9e058a49f03 TCP SYN fix - from Jani Monoses
gthomas
parents: 1399
diff changeset
312 #endif
d9e058a49f03 TCP SYN fix - from Jani Monoses
gthomas
parents: 1399
diff changeset
313
126
518f42066aba Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents: 117
diff changeset
314 for (init_entry = __RedBoot_INIT_TAB__; init_entry != &__RedBoot_INIT_TAB_END__; init_entry++) {
518f42066aba Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents: 117
diff changeset
315 (*init_entry->fun)();
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
316 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
317
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
318 mem_segments[0].start = workspace_start;
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
319 mem_segments[0].end = workspace_end;
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
320 #if CYGBLD_REDBOOT_MAX_MEM_SEGMENTS > 1
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
321 for (seg = 1; seg < CYGBLD_REDBOOT_MAX_MEM_SEGMENTS; seg++) {
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
322 cyg_plf_memory_segment(seg, &mem_segments[seg].start, &mem_segments[seg].end);
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
323 }
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
324 #endif
191
678094f34118 Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents: 186
diff changeset
325
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
326 #ifdef CYGSEM_REDBOOT_PLF_STARTUP
1855
6535959b8edf Updates required by GCC v4 - from Andrea Michelotti <amichelotti@atmel.com>
gthomas
parents: 1740
diff changeset
327
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
328 cyg_plf_redboot_startup();
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
329 #endif
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
330 do_version(0,0);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
331
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
332 #ifdef CYGFUN_REDBOOT_BOOT_SCRIPT
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
333 # ifdef CYGDAT_REDBOOT_DEFAULT_BOOT_SCRIPT
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
334 if (!script) {
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
335 script = CYGDAT_REDBOOT_DEFAULT_BOOT_SCRIPT;
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
336 }
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
337 # endif
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
338 if (script) {
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
339 // Give the guy a chance to abort any boot script
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
340 unsigned char *hold_script = script;
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
341 int script_timeout_ms = script_timeout * CYGNUM_REDBOOT_BOOT_SCRIPT_TIMEOUT_RESOLUTION;
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
342 diag_printf("== Executing boot script in %d.%03d seconds - enter ^C to abort\n",
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
343 script_timeout_ms/1000, script_timeout_ms%1000);
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
344 script = (unsigned char *)0;
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
345 res = _GETS_CTRLC; // Treat 0 timeout as ^C
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
346 while (script_timeout_ms >= CYGNUM_REDBOOT_CLI_IDLE_TIMEOUT) {
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
347 res = _rb_gets(line, sizeof(line), CYGNUM_REDBOOT_CLI_IDLE_TIMEOUT);
158
f2545e5de153 Merge from eCos master repository on 2001-04-24-11:22:42-BST
jlarmour
parents: 156
diff changeset
348 if (res >= _GETS_OK) {
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
349 diag_printf("== Executing boot script in %d.%03d seconds - enter ^C to abort\n",
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
350 script_timeout_ms/1000, script_timeout_ms%1000);
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
351 continue; // Ignore anything but ^C
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
352 }
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
353 if (res != _GETS_TIMEOUT) break;
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
354 script_timeout_ms -= CYGNUM_REDBOOT_CLI_IDLE_TIMEOUT;
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
355 }
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
356 if (res == _GETS_CTRLC) {
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
357 script = (unsigned char *)0; // Disable script
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
358 } else {
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
359 script = hold_script; // Re-enable script
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
360 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
361 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
362 #endif
2144
36bfd6474600 * src/xyzModem.c (xyzModem_stream_open): Fix compiler warnings.
asl
parents: 1984
diff changeset
363 CYG_ASSERT(workspace_start < workspace_end,
36bfd6474600 * src/xyzModem.c (xyzModem_stream_open): Fix compiler warnings.
asl
parents: 1984
diff changeset
364 "negative workspace size");
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
365 while (true) {
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
366 if (prompt) {
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
367 diag_printf("RedBoot> ");
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
368 prompt = false;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
369 }
195
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
370 #if CYGNUM_REDBOOT_CMD_LINE_EDITING != 0
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
371 cmd_history = true; // Enable history collection
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
372 #endif
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
373 res = _rb_gets(line, sizeof(line), CYGNUM_REDBOOT_CLI_IDLE_TIMEOUT);
195
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
374 #if CYGNUM_REDBOOT_CMD_LINE_EDITING != 0
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
375 cmd_history = false; // Enable history collection
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
376 #endif
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
377 if (res == _GETS_TIMEOUT) {
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
378 // No input arrived
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
379 } else {
162
2395031e7a66 Merge from eCos master repository on 2001-06-15-06:43:03-BST
jlarmour
parents: 161
diff changeset
380 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
381 if (res == _GETS_GDB) {
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
382 int dbgchan;
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents: 160
diff changeset
383 hal_virtual_comm_table_t *__chan;
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents: 160
diff changeset
384 int i;
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
385 // Special case of '$' - need to start GDB protocol
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
386 gdb_active = true;
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents: 160
diff changeset
387 // Mask interrupts on all channels
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents: 160
diff changeset
388 for (i = 0; i < CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS; i++) {
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents: 160
diff changeset
389 CYGACC_CALL_IF_SET_CONSOLE_COMM(i);
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents: 160
diff changeset
390 __chan = CYGACC_CALL_IF_CONSOLE_PROCS();
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents: 160
diff changeset
391 CYGACC_COMM_IF_CONTROL( *__chan, __COMMCTL_IRQ_DISABLE );
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents: 160
diff changeset
392 }
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents: 160
diff changeset
393
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
394 CYGACC_CALL_IF_SET_CONSOLE_COMM(cur);
1002
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
395
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
396 // set up a temporary context that will take us to the trampoline
1872
321c9b8eb063 * src/main.c (cyg_start): Fix compiler warning with
asl
parents: 1855
diff changeset
397 HAL_THREAD_INIT_CONTEXT((CYG_ADDRWORD)workspace_end,
321c9b8eb063 * src/main.c (cyg_start): Fix compiler warning with
asl
parents: 1855
diff changeset
398 breakpoint, trampoline,0);
1002
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
399
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
400 // switch context to trampoline (get GDB stubs started)
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
401 HAL_THREAD_SWITCH_CONTEXT(&saved_context, &workspace_end);
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
402
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
403 gdb_active = false;
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
404
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
405 dbgchan = CYGACC_CALL_IF_SET_DEBUG_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
406 CYGACC_CALL_IF_SET_CONSOLE_COMM(dbgchan);
162
2395031e7a66 Merge from eCos master repository on 2001-06-15-06:43:03-BST
jlarmour
parents: 161
diff changeset
407 } else
2395031e7a66 Merge from eCos master repository on 2001-06-15-06:43:03-BST
jlarmour
parents: 161
diff changeset
408 #endif // CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
2395031e7a66 Merge from eCos master repository on 2001-06-15-06:43:03-BST
jlarmour
parents: 161
diff changeset
409 {
160
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
410 expand_aliases(line, sizeof(line));
183
9160a8005d76 Merge from eCos master repository on 2001-09-12-03:52:30-BST
jlarmour
parents: 182
diff changeset
411 command = (char *)&line;
195
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
412 if ((*command == '#') || (*command == '=')) {
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
413 // Special cases
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
414 if (*command == '=') {
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
415 // Print line on console
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
416 diag_printf("%s\n", &line[2]);
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
417 }
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
418 } else {
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
419 while (strlen(command) > 0) {
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
420 if ((cmd = parse(&command, &argc, &argv[0])) != (struct cmd *)0) {
1328
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
421 // Try to handle aborts - messy because of the stack unwinding...
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
422 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
1328
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
423 __mem_fault_handler = error_handler;
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
424 #endif
1328
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
425 if (hal_setjmp(error_jmpbuf)) {
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
426 diag_printf("** command abort - illegal memory access?\n");
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
427 } else {
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
428 (cmd->fun)(argc, argv);
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
429 }
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
430 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
1328
afd4dd211d3a Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents: 1226
diff changeset
431 __mem_fault_handler = 0;
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
432 #endif
195
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
433 } else {
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
434 diag_printf("** Error: Illegal command: \"%s\"\n", argv[0]);
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 191
diff changeset
435 }
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
436 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
437 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
438 prompt = true;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
439 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
440 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
441 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
442 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
443
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
444 void
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
445 show_help(struct cmd *cmd, struct cmd *cmd_end, char *which, char *pre)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
446 {
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
447 bool show;
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
448 int len = 0;
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
449
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
450 if (which) {
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
451 len = strlen(which);
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
452 }
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
453 while (cmd != cmd_end) {
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
454 show = true;
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
455 if (which && (strncasecmp(which, cmd->str, len) != 0)) {
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
456 show = false;
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
457 }
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
458 if (show) {
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
459 diag_printf("%s\n %s %s %s\n", cmd->help, pre, cmd->str, cmd->usage);
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
460 if ((cmd->sub_cmds != (struct cmd *)0) && (which != (char *)0)) {
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
461 show_help(cmd->sub_cmds, cmd->sub_cmds_end, 0, cmd->str);
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
462 }
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
463 }
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
464 cmd++;
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
465 }
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
466 }
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
467
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
468 void
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
469 do_help(int argc, char *argv[])
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
470 {
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
471 struct cmd *cmd;
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
472 char *which = (char *)0;
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
473
1513
c4355f101bf6 Cleanups to remove warnings
gthomas
parents: 1503
diff changeset
474 if (!scan_opts(argc, argv, 1, 0, 0, (void *)&which, OPTION_ARG_TYPE_STR, "<topic>")) {
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
475 diag_printf("Invalid argument\n");
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
476 return;
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
477 }
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
478 cmd = __RedBoot_CMD_TAB__;
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
479 show_help(cmd, &__RedBoot_CMD_TAB_END__, which, "");
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
480 return;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
481 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
482
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
483 static void
1002
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
484 trampoline(unsigned long entry)
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
485 {
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
486 typedef void code_fun(void);
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
487 code_fun *fun = (code_fun *)entry;
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
488 unsigned long oldints;
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
489
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
490 HAL_DISABLE_INTERRUPTS(oldints);
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
491
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
492 #ifdef HAL_ARCH_PROGRAM_NEW_STACK
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
493 HAL_ARCH_PROGRAM_NEW_STACK(fun);
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
494 #else
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
495 (*fun)();
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
496 #endif
1002
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
497
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
498 HAL_THREAD_LOAD_CONTEXT(&saved_context);
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
499 }
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
500
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
501 static void
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
502 return_to_redboot(int status)
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
503 {
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
504 CYGARC_HAL_SAVE_GP();
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
505
1002
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
506 return_status = status;
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
507 HAL_THREAD_LOAD_CONTEXT(&saved_context);
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
508 // never returns
566
17d4ac30ee71 return_to_redboot tweak
msalter
parents: 556
diff changeset
509
17d4ac30ee71 return_to_redboot tweak
msalter
parents: 556
diff changeset
510 // need this to balance above CYGARC_HAL_SAVE_GP on
17d4ac30ee71 return_to_redboot tweak
msalter
parents: 556
diff changeset
511 // some platforms. It will never run, though.
17d4ac30ee71 return_to_redboot tweak
msalter
parents: 556
diff changeset
512 CYGARC_HAL_RESTORE_GP();
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
513 }
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
514
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
515 void
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
516 do_go(int argc, char *argv[])
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
517 {
908
6aa5728bb6a0 go command tweak
msalter
parents: 907
diff changeset
518 int i, cur, num_options;
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
519 unsigned long entry;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
520 unsigned long oldints;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
521 bool wait_time_set;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
522 int wait_time, res;
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
523 bool cache_enabled = false;
913
3c59fd67ae50 * src/main.c (do_go): Silence unused variable warning when no net.
jlarmour
parents: 908
diff changeset
524 #ifdef CYGPKG_IO_ETH_DRIVERS
907
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
525 bool stop_net = false;
913
3c59fd67ae50 * src/main.c (do_go): Silence unused variable warning when no net.
jlarmour
parents: 908
diff changeset
526 #endif
907
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
527 struct option_info opts[3];
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
528 char line[8];
907
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
529 hal_virtual_comm_table_t *__chan;
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
530
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
531 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
1364
19f40f995cc2 Fix GDB exceptions - broken on 10/23
gthomas
parents: 1328
diff changeset
532 __mem_fault_handler = 0; // Let GDB handle any faults directly
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
533 #endif
196
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents: 195
diff changeset
534 entry = entry_address; // Default from last 'load' operation
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
535 init_opts(&opts[0], 'w', true, OPTION_ARG_TYPE_NUM,
1513
c4355f101bf6 Cleanups to remove warnings
gthomas
parents: 1503
diff changeset
536 (void *)&wait_time, (bool *)&wait_time_set, "wait timeout");
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
537 init_opts(&opts[1], 'c', false, OPTION_ARG_TYPE_FLG,
1513
c4355f101bf6 Cleanups to remove warnings
gthomas
parents: 1503
diff changeset
538 (void *)&cache_enabled, (bool *)0, "go with caches enabled");
908
6aa5728bb6a0 go command tweak
msalter
parents: 907
diff changeset
539 num_options = 2;
6aa5728bb6a0 go command tweak
msalter
parents: 907
diff changeset
540 #ifdef CYGPKG_IO_ETH_DRIVERS
907
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
541 init_opts(&opts[2], 'n', false, OPTION_ARG_TYPE_FLG,
1513
c4355f101bf6 Cleanups to remove warnings
gthomas
parents: 1503
diff changeset
542 (void *)&stop_net, (bool *)0, "go with network driver stopped");
908
6aa5728bb6a0 go command tweak
msalter
parents: 907
diff changeset
543 num_options++;
6aa5728bb6a0 go command tweak
msalter
parents: 907
diff changeset
544 #endif
1605
43a89c18d005 Add checking (assert) for size of option arrays. Also fix port for TFTP on little endian systems.
gthomas
parents: 1513
diff changeset
545
43a89c18d005 Add checking (assert) for size of option arrays. Also fix port for TFTP on little endian systems.
gthomas
parents: 1513
diff changeset
546 CYG_ASSERT(num_options <= NUM_ELEMS(opts), "Too many options");
43a89c18d005 Add checking (assert) for size of option arrays. Also fix port for TFTP on little endian systems.
gthomas
parents: 1513
diff changeset
547
908
6aa5728bb6a0 go command tweak
msalter
parents: 907
diff changeset
548 if (!scan_opts(argc, argv, 1, opts, num_options, (void *)&entry, OPTION_ARG_TYPE_NUM, "starting address"))
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
549 {
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
550 return;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
551 }
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
552 if (entry == (unsigned long)NO_MEMORY) {
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
553 err_printf("No entry point known - aborted\n");
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
554 return;
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
555 }
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
556 if (wait_time_set) {
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
557 int script_timeout_ms = wait_time * 1000;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
558 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
559 unsigned char *hold_script = script;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
560 script = (unsigned char *)0;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
561 #endif
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
562 diag_printf("About to start execution at %p - abort with ^C within %d seconds\n",
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
563 (void *)entry, wait_time);
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
564 while (script_timeout_ms >= CYGNUM_REDBOOT_CLI_IDLE_TIMEOUT) {
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
565 res = _rb_gets(line, sizeof(line), CYGNUM_REDBOOT_CLI_IDLE_TIMEOUT);
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
566 if (res == _GETS_CTRLC) {
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
567 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
568 script = hold_script; // Re-enable script
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
569 #endif
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
570 return;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
571 }
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 151
diff changeset
572 script_timeout_ms -= CYGNUM_REDBOOT_CLI_IDLE_TIMEOUT;
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
573 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
574 }
907
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
575
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
576 // Mask interrupts on all channels
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
577 cur = CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT);
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
578 for (i = 0; i < CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS; i++) {
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
579 CYGACC_CALL_IF_SET_CONSOLE_COMM(i);
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
580 __chan = CYGACC_CALL_IF_CONSOLE_PROCS();
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
581 CYGACC_COMM_IF_CONTROL( *__chan, __COMMCTL_IRQ_DISABLE );
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
582 }
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
583 CYGACC_CALL_IF_SET_CONSOLE_COMM(cur);
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
584
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
585 __chan = CYGACC_CALL_IF_CONSOLE_PROCS();
329
85c0eb753287 Add control for netio line flushing.
msalter
parents: 307
diff changeset
586 CYGACC_COMM_IF_CONTROL(*__chan, __COMMCTL_ENABLE_LINE_FLUSH);
85c0eb753287 Add control for netio line flushing.
msalter
parents: 307
diff changeset
587
907
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
588 #ifdef CYGPKG_IO_ETH_DRIVERS
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
589 if (stop_net)
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
590 eth_drv_stop();
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
591 #endif
a289defa82f0 go command enhancements
msalter
parents: 800
diff changeset
592
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
593 HAL_DISABLE_INTERRUPTS(oldints);
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
594 HAL_DCACHE_SYNC();
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
595 if (!cache_enabled) {
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
596 HAL_ICACHE_DISABLE();
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
597 HAL_DCACHE_DISABLE();
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
598 HAL_DCACHE_SYNC();
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
599 }
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
600 HAL_ICACHE_INVALIDATE_ALL();
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
601 HAL_DCACHE_INVALIDATE_ALL();
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
602 // set up a temporary context that will take us to the trampoline
1872
321c9b8eb063 * src/main.c (cyg_start): Fix compiler warning with
asl
parents: 1855
diff changeset
603 HAL_THREAD_INIT_CONTEXT((CYG_ADDRWORD)workspace_end,
321c9b8eb063 * src/main.c (cyg_start): Fix compiler warning with
asl
parents: 1855
diff changeset
604 entry, trampoline, 0);
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
605
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
606 // switch context to trampoline
1002
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
607 HAL_THREAD_SWITCH_CONTEXT(&saved_context, &workspace_end);
556
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
608
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
609 // we get back here by way of return_to_redboot()
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
610
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
611 // undo the changes we made before switching context
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
612 if (!cache_enabled) {
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
613 HAL_ICACHE_ENABLE();
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
614 HAL_DCACHE_ENABLE();
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
615 }
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
616
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
617 CYGACC_COMM_IF_CONTROL(*__chan, __COMMCTL_DISABLE_LINE_FLUSH);
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
618
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
619 HAL_RESTORE_INTERRUPTS(oldints);
f2b5df359050 Support return to redboot from go
msalter
parents: 447
diff changeset
620
1002
609c8b1447ee HAL enhancements from Pierre Habraken
msalter
parents: 913
diff changeset
621 diag_printf("\nProgram completed with status %d\n", return_status);
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
622 }
132
0ae0bc38e387 Merge from eCos master repository on 2000-10-31-00:30:36-GMT
jlarmour
parents: 130
diff changeset
623
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 150
diff changeset
624 #ifdef HAL_PLATFORM_RESET
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
625 void
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
626 do_reset(int argc, char *argv[])
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
627 {
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
628 diag_printf("... Resetting.");
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
629 CYGACC_CALL_IF_DELAY_US(2*100000);
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
630 diag_printf("\n");
165
d63db767121d Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents: 162
diff changeset
631 CYGACC_CALL_IF_RESET();
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
632 diag_printf("!! oops, RESET not working on this platform\n");
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
633 }
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
634 #endif
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 141
diff changeset
635
160
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
636 #ifdef CYGSEM_REDBOOT_VARIABLE_BAUD_RATE
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
637 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
638 #include <flash_config.h>
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
639 #endif
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
640
335
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
641 static int
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
642 set_comm_baud_rate(hal_virtual_comm_table_t *chan, int rate)
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
643 {
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
644 int current_rate;
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
645
1491
ab4a708d689e * src/main.c (set_comm_baud_rate): Get current rate with GETBAUD
jlarmour
parents: 1475
diff changeset
646 current_rate = CYGACC_COMM_IF_CONTROL(*chan, __COMMCTL_GETBAUD);
335
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
647 if (rate != current_rate)
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
648 return CYGACC_COMM_IF_CONTROL(*chan, __COMMCTL_SETBAUD, rate);
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
649
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
650 return 0;
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
651 }
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
652
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
653 int
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
654 set_console_baud_rate(int rate)
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
655 {
791
a2dfa8bf3c57 Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents: 566
diff changeset
656 int ret = -1;
335
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
657 #ifdef CYGPKG_REDBOOT_ANY_CONSOLE
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
658 if (!console_selected) {
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
659 int cur = CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT);
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
660 int i;
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
661 // Set baud for all channels
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
662 for (i = 0; i < CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS; i++) {
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
663 CYGACC_CALL_IF_SET_CONSOLE_COMM(i);
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
664 ret = set_comm_baud_rate(CYGACC_CALL_IF_CONSOLE_PROCS(), rate);
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
665 if (ret < 0)
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
666 break;
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
667 }
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
668 CYGACC_CALL_IF_SET_CONSOLE_COMM(cur);
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
669 } else
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
670 #endif
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
671 ret = set_comm_baud_rate(CYGACC_CALL_IF_CONSOLE_PROCS(), rate);
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
672
335
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
673 if (ret < 0)
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
674 diag_printf("Setting console baud rate to %d failed\n", rate);
a253970d627b Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents: 329
diff changeset
675
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
676 return ret;
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
677 }
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
678
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
679 static void
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
680 _sleep(int ms)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
681 {
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
682 int i;
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
683 for (i = 0; i < ms; i++) {
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
684 CYGACC_CALL_IF_DELAY_US((cyg_int32)1000);
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
685 }
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
686 }
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
687
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
688 void
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
689 do_baud_rate(int argc, char *argv[])
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
690 {
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
691 int new_rate, ret, old_rate;
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
692 bool new_rate_set;
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
693 hal_virtual_comm_table_t *__chan;
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
694 struct option_info opts[1];
160
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
695 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
696 struct config_option opt;
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
697 #endif
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
698
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
699 init_opts(&opts[0], 'b', true, OPTION_ARG_TYPE_NUM,
1513
c4355f101bf6 Cleanups to remove warnings
gthomas
parents: 1503
diff changeset
700 (void *)&new_rate, (bool *)&new_rate_set, "new baud rate");
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
701 if (!scan_opts(argc, argv, 1, opts, 1, 0, 0, "")) {
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
702 return;
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
703 }
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
704 __chan = CYGACC_CALL_IF_CONSOLE_PROCS();
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
705 if (new_rate_set) {
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
706 diag_printf("Baud rate will be changed to %d - update your settings\n", new_rate);
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
707 _sleep(500); // Give serial time to flush
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
708 old_rate = CYGACC_COMM_IF_CONTROL(*__chan, __COMMCTL_GETBAUD);
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
709 ret = set_console_baud_rate(new_rate);
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
710 if (ret < 0) {
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
711 if (old_rate > 0) {
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
712 // Try to restore
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
713 set_console_baud_rate(old_rate);
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
714 _sleep(500); // Give serial time to flush
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
715 diag_printf("\nret = %d\n", ret);
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
716 }
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
717 return; // Couldn't set the desired rate
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
718 }
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
719 // Make sure this new rate works or back off to previous value
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
720 // Sleep for a few seconds, then prompt to see if it works
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
721 _sleep(3000); // Give serial time to flush
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
722 if (!verify_action_with_timeout(5000, "Baud rate changed to %d", new_rate)) {
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
723 _sleep(500); // Give serial time to flush
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
724 set_console_baud_rate(old_rate);
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
725 _sleep(500); // Give serial time to flush
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
726 return;
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 202
diff changeset
727 }
160
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
728 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
729 opt.type = CONFIG_INT;
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
730 opt.enable = (char *)0;
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
731 opt.enable_sense = 1;
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
732 opt.key = "console_baud_rate";
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
733 opt.dflt = new_rate;
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents: 160
diff changeset
734 flash_add_config(&opt, true);
160
0d0f03f76f6a Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents: 159
diff changeset
735 #endif
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
736 } else {
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
737 ret = CYGACC_COMM_IF_CONTROL(*__chan, __COMMCTL_GETBAUD);
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
738 diag_printf("Baud rate = ");
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
739 if (ret <= 0) {
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
740 diag_printf("unknown\n");
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
741 } else {
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 174
diff changeset
742 diag_printf("%d\n", ret);
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
743 }
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
744 }
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
745 }
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
746 #endif
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 158
diff changeset
747
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
748 //
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
749 // Validate an address to see if it is within any known RAM area
132
0ae0bc38e387 Merge from eCos master repository on 2000-10-31-00:30:36-GMT
jlarmour
parents: 130
diff changeset
750 //
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
751 bool
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
752 valid_address(unsigned char *addr)
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
753 {
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
754 int seg;
132
0ae0bc38e387 Merge from eCos master repository on 2000-10-31-00:30:36-GMT
jlarmour
parents: 130
diff changeset
755
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
756 for (seg = 0; seg < CYGBLD_REDBOOT_MAX_MEM_SEGMENTS; seg++) {
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
757 if (mem_segments[seg].start != NO_MEMORY) {
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
758 if ((addr >= mem_segments[seg].start) && (addr < mem_segments[seg].end)) {
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
759 return true;
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
760 }
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
761 }
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
762 }
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1002
diff changeset
763 return false;
132
0ae0bc38e387 Merge from eCos master repository on 2000-10-31-00:30:36-GMT
jlarmour
parents: 130
diff changeset
764 }