annotate packages/hal/mn10300/stdeval1/current/src/hal_diag.c @ 1777:c16341b1bac6 default tip

* Added execute permissions to files missed in conversion from CVS
author alexs
date Mon, 12 Oct 2009 02:26:09 +0100
parents d2c90368aeef
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1 /*=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
2 //
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
3 // hal_diag.c
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
4 //
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
5 // HAL diagnostic output code
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
6 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
7 //=============================================================================
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
8 //####ECOSGPLCOPYRIGHTBEGIN####
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
9 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
10 // This file is part of eCos, the Embedded Configurable Operating System.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
12 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
13 // eCos is free software; you can redistribute it and/or modify it under
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
14 // the terms of the GNU General Public License as published by the Free
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
15 // Software Foundation; either version 2 or (at your option) any later version.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
16 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
17 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
18 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
19 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
20 // for more details.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
21 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
22 // You should have received a copy of the GNU General Public License along
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
23 // with eCos; if not, write to the Free Software Foundation, Inc.,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
24 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
25 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
26 // As a special exception, if other files instantiate templates or use macros
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
27 // or inline functions from this file, or you compile this file and link it
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
28 // with other works to produce a work based on this file, this file does not
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
29 // by itself cause the resulting work to be covered by the GNU General Public
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
30 // License. However the source code for this file must still be made available
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
31 // in accordance with section (3) of the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
32 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
33 // This exception does not invalidate any other reasons why a work based on
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
34 // this file might be covered by the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
35 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
36 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
210
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
37 // at http://sources.redhat.com/ecos/ecos-license/
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
38 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 76
diff changeset
39 //####ECOSGPLCOPYRIGHTEND####
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
40 //=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
41 //#####DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 //
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
43 // Author(s): nickg
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
44 // Contributors: nickg
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
45 // Date: 1998-03-02
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46 // Purpose: HAL diagnostic output
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
47 // Description: Implementations of HAL diagnostic output support.
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
48 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
49 //####DESCRIPTIONEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
50 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51 //===========================================================================*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53 #include <pkgconf/hal.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
54
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
55 #include <cyg/infra/cyg_type.h> // base types
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
56 #include <cyg/infra/cyg_trac.h> // tracing macros
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
57 #include <cyg/infra/cyg_ass.h> // assertion macros
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59 #include <cyg/hal/hal_diag.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60 #include <cyg/hal/hal_intr.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
61
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
62 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
63 /* Select default diag channel to use */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
64
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65 //#define CYG_KERNEL_DIAG_ROMART
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
66 //#define CYG_KERNEL_DIAG_SERIAL1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
67 //#define CYG_KERNEL_DIAG_SERIAL2
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
68 //#define CYG_KERNEL_DIAG_GDB
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
69
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
70 #if !defined(CYG_KERNEL_DIAG_SERIAL1) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
71 !defined(CYG_KERNEL_DIAG_SERIAL2) && \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
72 !defined(CYG_KERNEL_DIAG_ROMART)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 2
diff changeset
74 # if defined(CYG_HAL_MN10300_AM31_STDEVAL1)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76 # if defined(CYG_HAL_STARTUP_RAM)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
77
62
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 34
diff changeset
78 # if defined(CYGSEM_HAL_USE_ROM_MONITOR_CygMon)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80 // If loaded into RAM via CYGMON we diag via
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81 // serial 2 using GDB protocol
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 2
diff changeset
82
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
83 # define CYG_KERNEL_DIAG_SERIAL2
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
84 # define CYG_KERNEL_DIAG_GDB
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85
62
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 34
diff changeset
86 # elif defined(CYGSEM_HAL_USE_ROM_MONITOR_Sload)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
87
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
88 // If loaded into RAM via SLOAD we diag via
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89 // serial 1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91 # define CYG_KERNEL_DIAG_SERIAL1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92
62
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 34
diff changeset
93 # elif defined(CYGSEM_HAL_USE_ROM_MONITOR_GDB_stubs)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95 // If loaded into RAM via GDB STUB ROM we diag via
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96 // serial 1 using GDB protocol
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98 # define CYG_KERNEL_DIAG_SERIAL1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
99 # define CYG_KERNEL_DIAG_GDB
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100
62
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 34
diff changeset
101 # endif // defined(CYGSEM_HAL_USE_ROM_MONITOR_CygMon)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
102
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
103 # elif defined(CYG_HAL_STARTUP_ROM)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
104
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
105 // If we are ROM resident, we diag via serial 1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
106
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
107 # define CYG_KERNEL_DIAG_SERIAL1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
108
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109 # endif // defined(CYG_HAL_STARTUP_RAM)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 2
diff changeset
111 # endif // defined(CYG_HAL_MN10300_AM31_STDEVAL1)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
112
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113 #endif // if ...
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116 // PromICE AI interface
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
118 #if defined(CYG_HAL_MN10300_STDEVAL1_ROMART) || defined(CYG_KERNEL_DIAG_ROMART)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
119
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 2
diff changeset
120 #ifdef CYG_HAL_MN10300_AM31_STDEVAL1
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
121 #define PROMICE_AILOC 0x40008000
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 #define PROMICE_BUS_SIZE 16
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
125 #define PROMICE_BURST_SIZE 1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
126
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127 #if PROMICE_BUS_SIZE == 16
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129 typedef volatile struct
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131 volatile cyg_uint16 zero;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132 // cyg_uint16 pad1[PROMICE_BURST_SIZE];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133 volatile cyg_uint16 one;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134 // cyg_uint16 pad2[PROMICE_BURST_SIZE];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135 volatile cyg_uint16 data;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136 // cyg_uint16 pad3[PROMICE_BURST_SIZE];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137 volatile cyg_uint16 status;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
138
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
139 } AISTRUCT;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
142
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
143 AISTRUCT *AI = (AISTRUCT *)PROMICE_AILOC;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
144
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
145 #define PROMICE_STATUS_TDA 0x01
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
146 #define PROMICE_STATUS_HDA 0x02
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
147 #define PROMICE_STATUS_OVR 0x04
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
148
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
149
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
150 void ai_diag_init()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
151 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
152 volatile cyg_uint8 junk;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
153
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
154 while( AI->status == 0xCC )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
155 continue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
156
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
157 junk = AI->data;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
158 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
159
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
160 static void ai_write_char(cyg_uint8 data)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
161 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
162 volatile cyg_uint8 junk;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
163 int i;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
164
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
165 // Wait for tda == 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
166 while( (AI->status & PROMICE_STATUS_TDA) == PROMICE_STATUS_TDA )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
167 continue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
168
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
169 // Send start bit
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
170 junk = AI->one;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
171
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
172 for( i = 0; i < 8; i++ )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
173 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
174 // send ls bit of data
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
175 if( (data & 1) == 1 )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176 junk = AI->one;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
177 else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
178 junk = AI->zero;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
179
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180 // shift down for next bit
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181 data >>= 1;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
182 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
183
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
184 // Send stop bit
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
185 junk = AI->one;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
186
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
187 // all done
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
188 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
189
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
190 void ai_diag_write_char(char c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
191 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
192 ai_write_char((cyg_uint8)c);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
193 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
194
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
195 void ai_diag_drain() {}
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
196
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
197 void ai_diag_read_char(char *c) { *c = '\n'; }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
198
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
199 void ai_writes(char *s)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
200 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
201 while( *s ) ai_write_char( *s++ );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
202 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
203
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
204 void ai_write_hex( cyg_uint32 x)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
205 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
206 int i;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
207 ai_writes("0x");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
208 for( i = 28; i >=0 ; i-=4 )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
209 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
210 char *d = "0123456789ABCDEF";
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
211 ai_write_char( d[(x>>i)&0xf] );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
212 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
213 ai_write_char(' ');
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
214 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
215
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
216 #if defined(CYG_KERNEL_DIAG_ROMART)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
217
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
218 #define hal_diag_init_serial ai_diag_init
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
219 #define hal_diag_write_char_serial ai_diag_write_char
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
220 #define hal_diag_drain_serial ai_diag_drain
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
221 #define hal_diag_read_char_serial ai_diag_read_char
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
222
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
223 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
224
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
225 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
226
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
227 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
228 // MN10300 Serial line
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
229
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230 #if defined(CYG_HAL_MN10300_STDEVAL1_SERIAL1) || defined(CYG_KERNEL_DIAG_SERIAL1)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
231
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
232 // We use serial1 on MN103002
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233 #define SERIAL1_CR ((volatile cyg_uint16 *)0x34000810)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
234 #define SERIAL1_ICR ((volatile cyg_uint8 *) 0x34000814)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
235 #define SERIAL1_TXR ((volatile cyg_uint8 *) 0x34000818)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
236 #define SERIAL1_RXR ((volatile cyg_uint8 *) 0x34000819)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
237 #define SERIAL1_SR ((volatile cyg_uint16 *)0x3400081c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
238
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
239 // Timer 1 provided baud rate divisor
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
240 #define TIMER1_MD ((volatile cyg_uint8 *)0x34001001)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
241 #define TIMER1_BR ((volatile cyg_uint8 *)0x34001011)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
242 #define TIMER1_CR ((volatile cyg_uint8 *)0x34001021)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
243
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
244 #define PORT3_MD ((volatile cyg_uint8 *)0x36008025)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
245
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
246 // Mystery register
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
247 #define TMPSCNT ((volatile cyg_uint8 *)0x34001071)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
248
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
249 #define SIO1_LSTAT_TRDY 0x20
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
250 #define SIO1_LSTAT_RRDY 0x10
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
251
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
252 void hal_diag_init_serial1(void)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
253 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
254 // 48 translates to 38400 baud.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
255 *TIMER1_BR = 48;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
256
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
257 // Timer1 sourced from IOCLK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
258 *TIMER1_MD = 0x80;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
259
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
260 // Mode on PORT3, used for serial line controls.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
261 *PORT3_MD = 0x01;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
262
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
263 // No interrupts for now.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
264 *SERIAL1_ICR = 0x00;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
265
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
266 // Source from timer 1, 8bit chars, enable tx and rx
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
267 *SERIAL1_CR = 0xc084;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
268 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
269
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
270 void hal_diag_write_char_serial1(char c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
271 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
272 register volatile cyg_uint16 *volatile tty_status = SERIAL1_SR;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
273 register volatile cyg_uint8 *volatile tty_tx = SERIAL1_TXR;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
274
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
275 while( (*tty_status & SIO1_LSTAT_TRDY) != 0 ) continue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
276
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
277 *tty_tx = c;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
278 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
279
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
280 void hal_diag_drain_serial1(void)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
281 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
282 register volatile cyg_uint16 *volatile tty_status = SERIAL1_SR;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
283
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
284 while( (*tty_status & SIO1_LSTAT_TRDY) != 0 ) continue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
285 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
286
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
287 void hal_diag_read_char_serial1(char *c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
288 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
289 register volatile cyg_uint16 *volatile tty_status = SERIAL1_SR;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
290 register volatile cyg_uint8 *volatile tty_rx = SERIAL1_RXR;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
291
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
292 while( (*tty_status & SIO1_LSTAT_RRDY) == 0 ) continue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
293
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
294 *c = *tty_rx;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
295
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 2
diff changeset
296 // We must ack the interrupt caused by that read to avoid
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 2
diff changeset
297 // confusing cygmon.
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 2
diff changeset
298 HAL_INTERRUPT_ACKNOWLEDGE( CYGNUM_HAL_INTERRUPT_SERIAL_1_RX );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
299 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
300
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
301 #if defined(CYG_KERNEL_DIAG_SERIAL1)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
302
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
303 #define hal_diag_init_serial hal_diag_init_serial1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
304 #define hal_diag_write_char_serial hal_diag_write_char_serial1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
305 #define hal_diag_drain_serial hal_diag_drain_serial1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
306 #define hal_diag_read_char_serial hal_diag_read_char_serial1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
307
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
308 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
309
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
310 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
311
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 2
diff changeset
312 #if defined(CYG_HAL_MN10300_AM31_STDEVAL1)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
313
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
314 void led(int x)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
315 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
316 *((cyg_uint8 *)0x36008004) = x<<4;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
317 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
318
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
319 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
320
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
321
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
322 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
323
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
324 #if defined(CYG_HAL_MN10300_STDEVAL1_SERIAL2) || defined(CYG_KERNEL_DIAG_SERIAL2)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
325
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
326 // We use serial2 on MN103002
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
327 #define SERIAL2_CR ((volatile cyg_uint16 *)0x34000820)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
328 #define SERIAL2_ICR ((volatile cyg_uint8 *) 0x34000824)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
329 #define SERIAL2_TXR ((volatile cyg_uint8 *) 0x34000828)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
330 #define SERIAL2_RXR ((volatile cyg_uint8 *) 0x34000829)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
331 #define SERIAL2_SR ((volatile cyg_uint8 *)0x3400082c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
332 #define SERIAL2_TR ((volatile cyg_uint8 *)0x3400082d)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
333
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
334 // Timer 2 provided baud rate divisor
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
335 #define TIMER2_MD ((volatile cyg_uint8 *)0x34001002)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
336 #define TIMER2_BR ((volatile cyg_uint8 *)0x34001012)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
337 #define TIMER2_CR ((volatile cyg_uint8 *)0x34001022)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
338
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
339 #define PORT3_MD ((volatile cyg_uint8 *)0x36008025)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
340
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
341 // Mystery register
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
342 #define TMPSCNT ((volatile cyg_uint8 *)0x34001071)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
343
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
344 #define SIO2_LSTAT_TRDY 0x20
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
345 #define SIO2_LSTAT_RRDY 0x10
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
346
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
347 void hal_diag_init_serial2(void)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
348 {
62
7a6ac9edc838 Merge from eCos master repository on 2000-01-24-19:43:49-GMT
jlarmour
parents: 34
diff changeset
349 #if !defined(CYGSEM_HAL_USE_ROM_MONITOR_CygMon)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
350
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
351 // 16 and 22 translate to 38400 baud.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
352 *TIMER2_BR = 16;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
353 *SERIAL2_TR = 22;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
354
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
355 // Timer2 sourced from IOCLK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
356 *TIMER2_MD = 0x80;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
357
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
358 // Mode on PORT3, used for serial line controls.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
359 *PORT3_MD = 0x01;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
360
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
361 // No interrupts for now.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
362 *SERIAL2_ICR = 0x00;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
363
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
364 // Source from timer 2, 8bit chars, enable tx and rx
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
365 *SERIAL2_CR = 0xc081;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
366
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
367 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
368 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
369
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
370 void hal_diag_write_char_serial2(char c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
371 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
372 register volatile cyg_uint8 *volatile tty_status = SERIAL2_SR;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
373 register volatile cyg_uint8 *volatile tty_tx = SERIAL2_TXR;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
374
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
375 while( (*tty_status & SIO2_LSTAT_TRDY) != 0 ) continue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
376
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
377 *tty_tx = c;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
378 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
379
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
380 void hal_diag_drain_serial2(void)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
381 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
382 register volatile cyg_uint8 *volatile tty_status = SERIAL2_SR;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
383
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
384 while( (*tty_status & SIO2_LSTAT_TRDY) != 0 ) continue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
385 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
386
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
387 void hal_diag_read_char_serial2(char *c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
388 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
389 register volatile cyg_uint8 *volatile tty_status = SERIAL2_SR;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
390 register volatile cyg_uint8 *volatile tty_rx = SERIAL2_RXR;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
391
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
392 while( (*tty_status & SIO2_LSTAT_RRDY) == 0 ) continue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
393
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
394 *c = *tty_rx;
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 2
diff changeset
395
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
396 #if !defined(CYGSEM_HAL_USE_ROM_MONITOR_CygMon)
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 2
diff changeset
397 // We must ack the interrupt caused by that read to avoid
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
398 // confusing the stubs.
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 2
diff changeset
399 HAL_INTERRUPT_ACKNOWLEDGE( CYGNUM_HAL_INTERRUPT_SERIAL_2_RX );
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
400 #endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
401 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
402
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
403 #if defined(CYG_KERNEL_DIAG_SERIAL2)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
404
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
405 #define hal_diag_init_serial hal_diag_init_serial2
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
406 #define hal_diag_write_char_serial hal_diag_write_char_serial2
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
407 #define hal_diag_drain_serial hal_diag_drain_serial2
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
408 #define hal_diag_read_char_serial hal_diag_read_char_serial2
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
409
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
410 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
411
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
412 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
413
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
414 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
415
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
416 void hal_diag_init(void)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
417 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
418 hal_diag_init_serial();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
419 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
420
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
421 void hal_diag_write_char(char c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
422 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
423 #ifdef CYG_KERNEL_DIAG_GDB
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
424
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
425 static char line[100];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
426 static int pos = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
427
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
428 // No need to send CRs
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
429 if( c == '\r' ) return;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
430
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
431 line[pos++] = c;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
432
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
433 if( c == '\n' || pos == sizeof(line) )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
434 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
435 // Disable interrupts. This prevents GDB trying to interrupt us
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
436 // while we are in the middle of sending a packet. The serial
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
437 // receive interrupt will be seen when we re-enable interrupts
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
438 // later.
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
439
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
440 CYG_INTERRUPT_STATE oldstate;
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 30
diff changeset
441 CYG_BYTE wdcr;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
442 HAL_DISABLE_INTERRUPTS(oldstate);
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 30
diff changeset
443
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 30
diff changeset
444 // Beacuse of problems with NT on the testfarm, we also have
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 30
diff changeset
445 // to disable the watchdog here. This only matters in the
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 30
diff changeset
446 // watchdog tests. And yes, this sends my irony meter off the
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 30
diff changeset
447 // scale too.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 30
diff changeset
448
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 30
diff changeset
449 HAL_READ_UINT8( 0x34004002, wdcr );
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 30
diff changeset
450 HAL_WRITE_UINT8( 0x34004002, wdcr&0x3F );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
451
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
452 while(1)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
453 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
454 static char hex[] = "0123456789ABCDEF";
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
455 cyg_uint8 csum = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
456 int i;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
457
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
458 hal_diag_write_char_serial('$');
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
459 hal_diag_write_char_serial('O');
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
460 csum += 'O';
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
461 for( i = 0; i < pos; i++ )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
462 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
463 char ch = line[i];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
464 char h = hex[(ch>>4)&0xF];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
465 char l = hex[ch&0xF];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
466 hal_diag_write_char_serial(h);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
467 hal_diag_write_char_serial(l);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
468 csum += h;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
469 csum += l;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
470 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
471 hal_diag_write_char_serial('#');
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
472 hal_diag_write_char_serial(hex[(csum>>4)&0xF]);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
473 hal_diag_write_char_serial(hex[csum&0xF]);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
474
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
475 #if !defined(CYGSEM_HAL_USE_ROM_MONITOR_CygMon)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
476 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
477 char c1;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
478
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
479 hal_diag_read_char_serial( &c1 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
480
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
481 if( c1 == '+' ) break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
482
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 2
diff changeset
483 if( cyg_hal_is_break( &c1, 1 ) )
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 2
diff changeset
484 cyg_hal_user_break( NULL );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
485
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
486 }
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
487 #else
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
488 // When using Cygmon, the ack character is absorbed by cygmon's
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
489 // serial interrupt handler that is looking for Ctrl-Cs.
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
490 break;
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
491 #endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
492 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
493
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
494 pos = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
495
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
496 // Wait for tx buffer to drain
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
497 hal_diag_drain_serial();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
498
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
499 // And re-enable interrupts
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
500 HAL_RESTORE_INTERRUPTS(oldstate);
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 30
diff changeset
501 HAL_WRITE_UINT8( 0x34004002, wdcr );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
502
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
503 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
504
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
505 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
506 hal_diag_write_char_serial(c);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
507 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
508 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
509
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
510
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
511
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
512
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
513 void hal_diag_read_char(char *c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
514 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
515 hal_diag_read_char_serial(c);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
516 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
517
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
518
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
519 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
520 /* End of hal_diag.c */