Mercurial > ecos
annotate packages/redboot/current/src/main.c @ 2821:b5a12bb6a634 ecos-v3_0-branchpoint
* src/main.c: Update copyright notice.
| author | jld |
|---|---|
| date | Thu, 19 Feb 2009 11:44:47 +0000 |
| parents | 4794a43c1c7c |
| children | 0c14b973ca7d |
| 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 //========================================================================== |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
8 // ####ECOSGPLCOPYRIGHTBEGIN#### |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
9 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
10 // This file is part of eCos, the Embedded Configurable Operating System. |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
12 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
13 // eCos is free software; you can redistribute it and/or modify it under |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
14 // the terms of the GNU General Public License as published by the Free |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
15 // Software Foundation; either version 2 or (at your option) any later |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
16 // version. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
17 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
18 // eCos is distributed in the hope that it will be useful, but WITHOUT |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
19 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
20 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
21 // for more details. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
22 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
23 // You should have received a copy of the GNU General Public License |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
24 // along with eCos; if not, write to the Free Software Foundation, Inc., |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
25 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
26 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
27 // As a special exception, if other files instantiate templates or use |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
28 // macros or inline functions from this file, or you compile this file |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
29 // and link it with other works to produce a work based on this file, |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
30 // this file does not by itself cause the resulting work to be covered by |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
31 // the GNU General Public License. However the source code for this file |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
32 // must still be made available in accordance with section (3) of the GNU |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
33 // General Public License v2. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
34 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
35 // This exception does not invalidate any other reasons why a work based |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
36 // on this file might be covered by the GNU General Public License. |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
37 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
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 | 62 #ifdef CYGPKG_IO_ETH_DRIVERS |
| 63 #include <cyg/io/eth/eth_drv.h> // Logical driver interfaces | |
| 64 #endif | |
| 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 | 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 | 82 // Path to code run from a go command or to GDB stubs |
| 83 static void trampoline(unsigned long entry); | |
| 84 | |
| 85 // Return path for code run from a go command or for GDB stubs | |
| 556 | 86 static void return_to_redboot(int status); |
| 87 | |
| 1002 | 88 // Address of area where current context is saved before executing |
| 89 // trampoline procedure | |
| 90 static void * saved_context; | |
| 91 | |
| 92 // Status returned after trampoline execution | |
| 93 static int return_status; | |
| 94 | |
| 556 | 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 | 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 | 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 |
| 2821 | 179 diag_printf("Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009\nFree Software Foundation, Inc.\n"); |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
180 /* The following line fulfils requirement 2(c) of the GPL. If you modify it, ensure |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
181 * you remain compliant with the GPL requirements. Removing it entirely constitutes |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
182 * a breach of the GPL, and you should note section 4 of the GPL as to what that means! |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
183 */ |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
184 diag_printf("RedBoot is free software, covered by the eCos license, derived from the\n" |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
185 "GNU General Public License. You are welcome to change it and/or distribute\n" |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
186 "copies of it under certain conditions. Under the license terms, RedBoot's\n" |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2614
diff
changeset
|
187 "source code and full license terms must have been made available to you.\n" |
|
2732
4794a43c1c7c
Add missing close bracket in redboot version string
jlarmour
parents:
2731
diff
changeset
|
188 "Redboot comes with ABSOLUTELY NO WARRANTY.\n\n"); |
|
1223
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
189 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
|
190 diag_printf("[%p-%p]", mem_segments[0].start, mem_segments[0].end); |
| 1226 | 191 diag_printf(" available\n"); |
|
1223
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
192 #if CYGBLD_REDBOOT_MAX_MEM_SEGMENTS > 1 |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
193 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
|
194 if (mem_segments[seg].start != NO_MEMORY) { |
| 1226 | 195 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
|
196 diag_printf("[%p-%p]", mem_segments[seg].start, mem_segments[seg].end); |
| 1226 | 197 diag_printf(" available\n"); |
|
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 } |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
200 #endif |
|
800
900f348771ef
* src/main.c (do_version): Test for CYGPKG_REDBOOT_FLASH as
jlarmour
parents:
791
diff
changeset
|
201 #ifdef CYGPKG_REDBOOT_FLASH |
|
171
42f843b391aa
Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
165
diff
changeset
|
202 _flash_info(); |
|
42f843b391aa
Merge from eCos master repository on 2001-07-18-03:13:25-BST
jlarmour
parents:
165
diff
changeset
|
203 #endif |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
204 } |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
205 |
|
1223
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
206 // |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
207 // 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
|
208 // 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
|
209 // 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
|
210 // |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
211 void |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
212 do_idle(bool is_idle) |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
213 { |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
214 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
|
215 |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
216 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
|
217 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
|
218 (*idle_entry->fun)(is_idle); |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
219 } |
|
138
289bf90c6a9b
Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents:
132
diff
changeset
|
220 } |
|
289bf90c6a9b
Merge from eCos master repository on 2000-11-24-06:43:05-GMT
jlarmour
parents:
132
diff
changeset
|
221 |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
174
diff
changeset
|
222 // Wrapper used by diag_printf() |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
174
diff
changeset
|
223 static void |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
174
diff
changeset
|
224 _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
|
225 { |
|
210
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
208
diff
changeset
|
226 if (c == '\n') { |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
208
diff
changeset
|
227 mon_write_char('\r'); |
|
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
208
diff
changeset
|
228 } |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
174
diff
changeset
|
229 mon_write_char(c); |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
174
diff
changeset
|
230 } |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
174
diff
changeset
|
231 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
232 // |
|
1328
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
233 // Handle illegal memory accesses (and other abort conditions) |
|
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
234 // |
|
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
235 static hal_jmp_buf error_jmpbuf; |
| 1475 | 236 #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
|
237 __externC void* volatile __mem_fault_handler; |
|
1328
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
238 |
|
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
239 static void error_handler(void) |
|
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
240 { |
|
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
241 hal_longjmp(error_jmpbuf, 1); |
|
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
242 } |
|
2257
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
243 #endif |
|
1328
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
244 |
|
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
245 |
|
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
246 // |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
247 // 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
|
248 // |
|
1855
6535959b8edf
Updates required by GCC v4 - from Andrea Michelotti <amichelotti@atmel.com>
gthomas
parents:
1740
diff
changeset
|
249 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
250 void |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
251 cyg_start(void) |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
252 { |
|
143
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
141
diff
changeset
|
253 int res = 0; |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
254 bool prompt = true; |
|
143
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
141
diff
changeset
|
255 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
|
256 char *command; |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
257 struct cmd *cmd; |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
258 int cur; |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
117
diff
changeset
|
259 struct init_tab_entry *init_entry; |
| 447 | 260 extern char RedBoot_version[]; |
|
1223
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
261 #if CYGBLD_REDBOOT_MAX_MEM_SEGMENTS > 1 |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
262 int seg; |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
263 #endif |
| 447 | 264 |
| 265 // Export version information | |
| 266 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
|
267 |
| 556 | 268 CYGACC_CALL_IF_MONITOR_RETURN_SET(return_to_redboot); |
| 269 | |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
270 // 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
|
271 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
|
272 hal_if_diag_init(); |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
273 |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
274 // 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
|
275 // 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
|
276 // required. |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
277 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
|
278 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
|
279 #ifdef CYGPKG_REDBOOT_ANY_CONSOLE |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
280 console_selected = false; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
281 #endif |
|
128
0c2b7be0d798
Merge from eCos master repository on 2000-10-12-08:46:24-BST
jlarmour
parents:
126
diff
changeset
|
282 console_echo = true; |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
283 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
284 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
|
285 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
|
286 #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
|
287 { |
|
f0e3fb000de8
Merge from eCos master repository on 2001-01-26-06:43:02-GMT
jlarmour
parents:
147
diff
changeset
|
288 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
|
289 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
|
290 } |
|
f0e3fb000de8
Merge from eCos master repository on 2001-01-26-06:43:02-GMT
jlarmour
parents:
147
diff
changeset
|
291 #endif |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
292 #ifdef CYGMEM_SECTION_heap1 |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
293 workspace_start = (unsigned char *)CYGMEM_SECTION_heap1; |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
294 workspace_end = (unsigned char *)CYGMEM_SECTION_heap1+CYGMEM_SECTION_heap1_SIZE; |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
295 #else |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
296 workspace_start = (unsigned char *)CYGMEM_REGION_ram; |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
297 workspace_end = (unsigned char *)CYGMEM_REGION_ram+CYGMEM_REGION_ram_SIZE; |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
298 #endif |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
299 |
|
158
f2545e5de153
Merge from eCos master repository on 2001-04-24-11:22:42-BST
jlarmour
parents:
156
diff
changeset
|
300 if ( ram_end < workspace_end ) { |
|
f2545e5de153
Merge from eCos master repository on 2001-04-24-11:22:42-BST
jlarmour
parents:
156
diff
changeset
|
301 // 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
|
302 // 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
|
303 workspace_end = ram_end; |
|
f2545e5de153
Merge from eCos master repository on 2001-04-24-11:22:42-BST
jlarmour
parents:
156
diff
changeset
|
304 } |
|
f2545e5de153
Merge from eCos master repository on 2001-04-24-11:22:42-BST
jlarmour
parents:
156
diff
changeset
|
305 |
|
2195
5c5e93c863ac
Redundant FIS table support - from Alexander Neundorf
gthomas
parents:
2144
diff
changeset
|
306 workspace_end_init=workspace_end; |
|
5c5e93c863ac
Redundant FIS table support - from Alexander Neundorf
gthomas
parents:
2144
diff
changeset
|
307 |
|
1223
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
308 // Nothing has ever been loaded into memory |
| 1475 | 309 entry_address = (unsigned long)NO_MEMORY; |
|
1223
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
310 |
|
132
0ae0bc38e387
Merge from eCos master repository on 2000-10-31-00:30:36-GMT
jlarmour
parents:
130
diff
changeset
|
311 bist(); |
|
0ae0bc38e387
Merge from eCos master repository on 2000-10-31-00:30:36-GMT
jlarmour
parents:
130
diff
changeset
|
312 |
|
1492
8b3549abe4ac
* cdl/redboot.cdl: Bring CYGNUM_REDBOOT_LOAD_ZLIB_BUFFER under
jlarmour
parents:
1491
diff
changeset
|
313 #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
|
314 fis_zlib_common_buffer = |
|
906a5d289c6d
Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents:
264
diff
changeset
|
315 workspace_end -= CYGNUM_REDBOOT_FIS_ZLIB_COMMON_BUFFER_SIZE; |
|
906a5d289c6d
Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents:
264
diff
changeset
|
316 #endif |
|
906a5d289c6d
Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents:
264
diff
changeset
|
317 |
| 1444 | 318 #ifdef CYGFUN_REDBOOT_BOOT_SCRIPT |
| 319 script_timeout = CYGNUM_REDBOOT_BOOT_SCRIPT_DEFAULT_TIMEOUT; | |
| 320 #endif | |
| 321 | |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
117
diff
changeset
|
322 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
|
323 (*init_entry->fun)(); |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
324 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
325 |
|
1223
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
326 mem_segments[0].start = workspace_start; |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
327 mem_segments[0].end = workspace_end; |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
328 #if CYGBLD_REDBOOT_MAX_MEM_SEGMENTS > 1 |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
329 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
|
330 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
|
331 } |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
332 #endif |
|
191
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
186
diff
changeset
|
333 |
|
1223
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
334 #ifdef CYGSEM_REDBOOT_PLF_STARTUP |
|
1855
6535959b8edf
Updates required by GCC v4 - from Andrea Michelotti <amichelotti@atmel.com>
gthomas
parents:
1740
diff
changeset
|
335 |
|
1223
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
336 cyg_plf_redboot_startup(); |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
337 #endif |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
338 do_version(0,0); |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
339 |
|
159
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
340 #ifdef CYGFUN_REDBOOT_BOOT_SCRIPT |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
341 # 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
|
342 if (!script) { |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
343 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
|
344 } |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
345 # endif |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
346 if (script) { |
|
159
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
347 // Give the guy a chance to abort any boot script |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
348 char *hold_script = script; |
|
159
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
349 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
|
350 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
|
351 script_timeout_ms/1000, script_timeout_ms%1000); |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
352 script = NULL; |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
353 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
|
354 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
|
355 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
|
356 if (res >= _GETS_OK) { |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
174
diff
changeset
|
357 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
|
358 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
|
359 continue; // Ignore anything but ^C |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
141
diff
changeset
|
360 } |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
141
diff
changeset
|
361 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
|
362 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
|
363 } |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
141
diff
changeset
|
364 if (res == _GETS_CTRLC) { |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
365 script = NULL; // Disable script |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
366 } else { |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
367 script = hold_script; // Re-enable script |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
368 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
369 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
370 #endif |
|
2144
36bfd6474600
* src/xyzModem.c (xyzModem_stream_open): Fix compiler warnings.
asl
parents:
1984
diff
changeset
|
371 CYG_ASSERT(workspace_start < workspace_end, |
|
36bfd6474600
* src/xyzModem.c (xyzModem_stream_open): Fix compiler warnings.
asl
parents:
1984
diff
changeset
|
372 "negative workspace size"); |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
373 while (true) { |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
374 if (prompt) { |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
174
diff
changeset
|
375 diag_printf("RedBoot> "); |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
376 prompt = false; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
377 } |
|
195
67850532eebb
Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents:
191
diff
changeset
|
378 #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
|
379 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
|
380 #endif |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
174
diff
changeset
|
381 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
|
382 #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
|
383 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
|
384 #endif |
|
143
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
141
diff
changeset
|
385 if (res == _GETS_TIMEOUT) { |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
386 // No input arrived |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
387 } else { |
|
162
2395031e7a66
Merge from eCos master repository on 2001-06-15-06:43:03-BST
jlarmour
parents:
161
diff
changeset
|
388 #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
|
389 if (res == _GETS_GDB) { |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
390 int dbgchan; |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
160
diff
changeset
|
391 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
|
392 int i; |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
393 CYG_ADDRESS gdb_stack_sp; |
|
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
394 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
395 // 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
|
396 gdb_active = true; |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
160
diff
changeset
|
397 // Mask interrupts on all channels |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
160
diff
changeset
|
398 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
|
399 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
|
400 __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
|
401 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
|
402 } |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
160
diff
changeset
|
403 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
404 CYGACC_CALL_IF_SET_CONSOLE_COMM(cur); |
| 1002 | 405 |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
406 gdb_stack_sp = (CYG_ADDRESS)workspace_end; |
| 1002 | 407 // set up a temporary context that will take us to the trampoline |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
408 HAL_THREAD_INIT_CONTEXT(gdb_stack_sp, |
| 1872 | 409 breakpoint, trampoline,0); |
| 1002 | 410 |
| 411 // switch context to trampoline (get GDB stubs started) | |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
412 HAL_THREAD_SWITCH_CONTEXT(&saved_context, &gdb_stack_sp); |
| 1002 | 413 |
| 414 gdb_active = false; | |
| 415 | |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
416 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
|
417 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
|
418 } else |
|
2395031e7a66
Merge from eCos master repository on 2001-06-15-06:43:03-BST
jlarmour
parents:
161
diff
changeset
|
419 #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
|
420 { |
|
160
0d0f03f76f6a
Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents:
159
diff
changeset
|
421 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
|
422 command = (char *)&line; |
|
195
67850532eebb
Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents:
191
diff
changeset
|
423 if ((*command == '#') || (*command == '=')) { |
|
67850532eebb
Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents:
191
diff
changeset
|
424 // Special cases |
|
67850532eebb
Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents:
191
diff
changeset
|
425 if (*command == '=') { |
|
67850532eebb
Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents:
191
diff
changeset
|
426 // Print line on console |
|
67850532eebb
Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents:
191
diff
changeset
|
427 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
|
428 } |
|
67850532eebb
Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents:
191
diff
changeset
|
429 } else { |
|
67850532eebb
Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents:
191
diff
changeset
|
430 while (strlen(command) > 0) { |
|
67850532eebb
Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents:
191
diff
changeset
|
431 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
|
432 // 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
|
433 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS |
|
1328
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
434 __mem_fault_handler = error_handler; |
|
2257
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
435 #endif |
|
1328
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
436 if (hal_setjmp(error_jmpbuf)) { |
|
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
437 diag_printf("** command abort - illegal memory access?\n"); |
|
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
438 } else { |
|
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
439 (cmd->fun)(argc, argv); |
|
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
440 } |
|
2257
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
441 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS |
|
1328
afd4dd211d3a
Attempt to handle illegal memory accesses and other abort conditions
gthomas
parents:
1226
diff
changeset
|
442 __mem_fault_handler = 0; |
|
2257
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
443 #endif |
|
195
67850532eebb
Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents:
191
diff
changeset
|
444 } else { |
|
67850532eebb
Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents:
191
diff
changeset
|
445 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
|
446 } |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
447 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
448 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
449 prompt = true; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
450 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
451 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
452 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
453 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
454 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
455 void |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
456 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
|
457 { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
458 bool show; |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
459 int len = 0; |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
460 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
461 if (which) { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
462 len = strlen(which); |
|
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 while (cmd != cmd_end) { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
465 show = true; |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
466 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
|
467 show = false; |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
468 } |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
469 if (show) { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
470 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
|
471 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
|
472 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
|
473 } |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
474 } |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
475 cmd++; |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
476 } |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
477 } |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
478 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
479 void |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
480 do_help(int argc, char *argv[]) |
|
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 struct cmd *cmd; |
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
150
diff
changeset
|
483 char *which = (char *)0; |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
484 |
| 1513 | 485 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
|
486 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
|
487 return; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
150
diff
changeset
|
488 } |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
489 cmd = __RedBoot_CMD_TAB__; |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
490 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
|
491 return; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
492 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
493 |
| 556 | 494 static void |
| 1002 | 495 trampoline(unsigned long entry) |
| 556 | 496 { |
| 497 typedef void code_fun(void); | |
| 498 code_fun *fun = (code_fun *)entry; | |
| 499 unsigned long oldints; | |
| 500 | |
| 501 HAL_DISABLE_INTERRUPTS(oldints); | |
| 502 | |
| 503 #ifdef HAL_ARCH_PROGRAM_NEW_STACK | |
| 504 HAL_ARCH_PROGRAM_NEW_STACK(fun); | |
| 505 #else | |
| 506 (*fun)(); | |
| 507 #endif | |
| 1002 | 508 |
| 509 HAL_THREAD_LOAD_CONTEXT(&saved_context); | |
| 556 | 510 } |
| 511 | |
| 512 static void | |
| 513 return_to_redboot(int status) | |
| 514 { | |
| 515 CYGARC_HAL_SAVE_GP(); | |
| 516 | |
| 1002 | 517 return_status = status; |
| 518 HAL_THREAD_LOAD_CONTEXT(&saved_context); | |
| 556 | 519 // never returns |
| 566 | 520 |
| 521 // need this to balance above CYGARC_HAL_SAVE_GP on | |
| 522 // some platforms. It will never run, though. | |
| 523 CYGARC_HAL_RESTORE_GP(); | |
| 556 | 524 } |
| 525 | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
526 void |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
527 do_go(int argc, char *argv[]) |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
528 { |
| 908 | 529 int i, cur, num_options; |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
530 unsigned long entry; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
531 unsigned long oldints; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
532 bool wait_time_set; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
533 int wait_time, res; |
| 556 | 534 bool cache_enabled = false; |
|
913
3c59fd67ae50
* src/main.c (do_go): Silence unused variable warning when no net.
jlarmour
parents:
908
diff
changeset
|
535 #ifdef CYGPKG_IO_ETH_DRIVERS |
| 907 | 536 bool stop_net = false; |
|
913
3c59fd67ae50
* src/main.c (do_go): Silence unused variable warning when no net.
jlarmour
parents:
908
diff
changeset
|
537 #endif |
| 907 | 538 struct option_info opts[3]; |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
539 char line[8]; |
| 907 | 540 hal_virtual_comm_table_t *__chan; |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
541 CYG_ADDRESS trampoline_stack_sp; |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
542 |
|
2257
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
543 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS |
| 1364 | 544 __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
|
545 #endif |
|
196
9b55e9c69693
Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
195
diff
changeset
|
546 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
|
547 init_opts(&opts[0], 'w', true, OPTION_ARG_TYPE_NUM, |
| 1513 | 548 (void *)&wait_time, (bool *)&wait_time_set, "wait timeout"); |
| 556 | 549 init_opts(&opts[1], 'c', false, OPTION_ARG_TYPE_FLG, |
| 1513 | 550 (void *)&cache_enabled, (bool *)0, "go with caches enabled"); |
| 908 | 551 num_options = 2; |
| 552 #ifdef CYGPKG_IO_ETH_DRIVERS | |
| 907 | 553 init_opts(&opts[2], 'n', false, OPTION_ARG_TYPE_FLG, |
| 1513 | 554 (void *)&stop_net, (bool *)0, "go with network driver stopped"); |
| 908 | 555 num_options++; |
| 556 #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
|
557 |
|
43a89c18d005
Add checking (assert) for size of option arrays. Also fix port for TFTP on little endian systems.
gthomas
parents:
1513
diff
changeset
|
558 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
|
559 |
| 908 | 560 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
|
561 { |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
562 return; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
563 } |
|
1223
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
564 if (entry == (unsigned long)NO_MEMORY) { |
|
2257
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
565 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
|
566 return; |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
567 } |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
568 if (wait_time_set) { |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
569 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
|
570 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
571 char *hold_script = script; |
|
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
572 script = NULL; |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
573 #endif |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
174
diff
changeset
|
574 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
|
575 (void *)entry, wait_time); |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
576 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
|
577 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
|
578 if (res == _GETS_CTRLC) { |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
579 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
580 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
|
581 #endif |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
582 return; |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
583 } |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
151
diff
changeset
|
584 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
|
585 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
586 } |
| 907 | 587 |
| 588 // Mask interrupts on all channels | |
| 589 cur = CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT); | |
| 590 for (i = 0; i < CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS; i++) { | |
| 591 CYGACC_CALL_IF_SET_CONSOLE_COMM(i); | |
| 592 __chan = CYGACC_CALL_IF_CONSOLE_PROCS(); | |
| 593 CYGACC_COMM_IF_CONTROL( *__chan, __COMMCTL_IRQ_DISABLE ); | |
| 594 } | |
| 595 CYGACC_CALL_IF_SET_CONSOLE_COMM(cur); | |
| 596 | |
| 597 __chan = CYGACC_CALL_IF_CONSOLE_PROCS(); | |
| 329 | 598 CYGACC_COMM_IF_CONTROL(*__chan, __COMMCTL_ENABLE_LINE_FLUSH); |
| 599 | |
| 907 | 600 #ifdef CYGPKG_IO_ETH_DRIVERS |
| 601 if (stop_net) | |
| 602 eth_drv_stop(); | |
| 603 #endif | |
| 604 | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
605 HAL_DISABLE_INTERRUPTS(oldints); |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
606 HAL_DCACHE_SYNC(); |
| 556 | 607 if (!cache_enabled) { |
| 608 HAL_ICACHE_DISABLE(); | |
| 609 HAL_DCACHE_DISABLE(); | |
| 610 HAL_DCACHE_SYNC(); | |
| 611 } | |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
612 HAL_ICACHE_INVALIDATE_ALL(); |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
613 HAL_DCACHE_INVALIDATE_ALL(); |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
614 trampoline_stack_sp = (CYG_ADDRESS)workspace_end; |
| 556 | 615 // set up a temporary context that will take us to the trampoline |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
616 HAL_THREAD_INIT_CONTEXT(trampoline_stack_sp, entry, trampoline, 0); |
| 556 | 617 |
| 618 // switch context to trampoline | |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
619 HAL_THREAD_SWITCH_CONTEXT(&saved_context, &trampoline_stack_sp); |
| 556 | 620 |
| 621 // we get back here by way of return_to_redboot() | |
| 622 | |
| 623 // undo the changes we made before switching context | |
| 624 if (!cache_enabled) { | |
| 625 HAL_ICACHE_ENABLE(); | |
| 626 HAL_DCACHE_ENABLE(); | |
| 627 } | |
| 628 | |
| 629 CYGACC_COMM_IF_CONTROL(*__chan, __COMMCTL_DISABLE_LINE_FLUSH); | |
| 630 | |
| 631 HAL_RESTORE_INTERRUPTS(oldints); | |
| 632 | |
| 1002 | 633 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
|
634 } |
|
132
0ae0bc38e387
Merge from eCos master repository on 2000-10-31-00:30:36-GMT
jlarmour
parents:
130
diff
changeset
|
635 |
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
150
diff
changeset
|
636 #ifdef HAL_PLATFORM_RESET |
|
143
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
141
diff
changeset
|
637 void |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
141
diff
changeset
|
638 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
|
639 { |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
174
diff
changeset
|
640 diag_printf("... Resetting."); |
|
143
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
141
diff
changeset
|
641 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
|
642 diag_printf("\n"); |
|
165
d63db767121d
Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents:
162
diff
changeset
|
643 CYGACC_CALL_IF_RESET(); |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
174
diff
changeset
|
644 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
|
645 } |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
141
diff
changeset
|
646 #endif |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
141
diff
changeset
|
647 |
|
160
0d0f03f76f6a
Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents:
159
diff
changeset
|
648 #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
|
649 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG |
|
0d0f03f76f6a
Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents:
159
diff
changeset
|
650 #include <flash_config.h> |
|
0d0f03f76f6a
Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents:
159
diff
changeset
|
651 #endif |
|
159
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
652 |
|
335
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
653 static int |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
654 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
|
655 { |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
656 int current_rate; |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
657 |
|
1491
ab4a708d689e
* src/main.c (set_comm_baud_rate): Get current rate with GETBAUD
jlarmour
parents:
1475
diff
changeset
|
658 current_rate = CYGACC_COMM_IF_CONTROL(*chan, __COMMCTL_GETBAUD); |
|
335
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
659 if (rate != current_rate) |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
660 return CYGACC_COMM_IF_CONTROL(*chan, __COMMCTL_SETBAUD, rate); |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
661 |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
662 return 0; |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
663 } |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
664 |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
665 int |
|
159
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
666 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
|
667 { |
|
791
a2dfa8bf3c57
Export RedBoot FIS functions - from Knud Woehler <knud.woehler@microplex.de>
gthomas
parents:
566
diff
changeset
|
668 int ret = -1; |
|
335
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
669 #ifdef CYGPKG_REDBOOT_ANY_CONSOLE |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
670 if (!console_selected) { |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
671 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
|
672 int i; |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
673 // Set baud for all channels |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
674 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
|
675 CYGACC_CALL_IF_SET_CONSOLE_COMM(i); |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
676 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
|
677 if (ret < 0) |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
678 break; |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
679 } |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
680 CYGACC_CALL_IF_SET_CONSOLE_COMM(cur); |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
681 } else |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
682 #endif |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
683 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
|
684 |
|
335
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
685 if (ret < 0) |
|
a253970d627b
Fix baudrate setting for CYGPKG_REDBOOT_ANY_CONSOLE
msalter
parents:
329
diff
changeset
|
686 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
|
687 |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
688 return ret; |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
689 } |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
690 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
691 static void |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
692 _sleep(int ms) |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
693 { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
694 int i; |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
695 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
|
696 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
|
697 } |
|
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 |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
700 void |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
701 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
|
702 { |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
703 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
|
704 bool new_rate_set; |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
705 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
|
706 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
|
707 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG |
|
0d0f03f76f6a
Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents:
159
diff
changeset
|
708 struct config_option opt; |
|
0d0f03f76f6a
Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents:
159
diff
changeset
|
709 #endif |
|
159
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
710 |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
711 init_opts(&opts[0], 'b', true, OPTION_ARG_TYPE_NUM, |
| 1513 | 712 (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
|
713 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
|
714 return; |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
715 } |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
716 __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
|
717 if (new_rate_set) { |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
718 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
|
719 _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
|
720 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
|
721 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
|
722 if (ret < 0) { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
723 if (old_rate > 0) { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
724 // Try to restore |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
725 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
|
726 _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
|
727 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
|
728 } |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
729 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
|
730 } |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
731 // 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
|
732 // 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
|
733 _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
|
734 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
|
735 _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
|
736 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
|
737 _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
|
738 return; |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
739 } |
|
160
0d0f03f76f6a
Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents:
159
diff
changeset
|
740 #ifdef CYGSEM_REDBOOT_FLASH_CONFIG |
|
0d0f03f76f6a
Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents:
159
diff
changeset
|
741 opt.type = CONFIG_INT; |
|
0d0f03f76f6a
Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents:
159
diff
changeset
|
742 opt.enable = (char *)0; |
|
0d0f03f76f6a
Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents:
159
diff
changeset
|
743 opt.enable_sense = 1; |
|
0d0f03f76f6a
Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents:
159
diff
changeset
|
744 opt.key = "console_baud_rate"; |
|
0d0f03f76f6a
Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents:
159
diff
changeset
|
745 opt.dflt = new_rate; |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
160
diff
changeset
|
746 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
|
747 #endif |
|
159
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
748 } else { |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
749 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
|
750 diag_printf("Baud rate = "); |
|
159
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
751 if (ret <= 0) { |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
174
diff
changeset
|
752 diag_printf("unknown\n"); |
|
159
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
753 } else { |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
174
diff
changeset
|
754 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
|
755 } |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
756 } |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
757 } |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
758 #endif |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
158
diff
changeset
|
759 |
|
1223
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 // 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
|
762 // |
|
1223
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
763 bool |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
764 valid_address(unsigned char *addr) |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
765 { |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
766 int seg; |
|
132
0ae0bc38e387
Merge from eCos master repository on 2000-10-31-00:30:36-GMT
jlarmour
parents:
130
diff
changeset
|
767 |
|
1223
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
768 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
|
769 if (mem_segments[seg].start != NO_MEMORY) { |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
770 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
|
771 return true; |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
772 } |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
773 } |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
774 } |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1002
diff
changeset
|
775 return false; |
|
132
0ae0bc38e387
Merge from eCos master repository on 2000-10-31-00:30:36-GMT
jlarmour
parents:
130
diff
changeset
|
776 } |
|
2614
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
777 |
|
6cbecf3cc2e4
* src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents:
2257
diff
changeset
|
778 /* EOF main.c */ |
