annotate packages/hal/mips/jmr3904/current/src/hal_diag.c @ 0:3111d98ba7b3 ecos-v1_1-release

Initial commit of eCos version 1.1
author jlarmour
date Tue, 11 May 1999 11:16:07 +0000
parents
children 443894e2e912
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 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
3 // hal_diag.c
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
4 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
5 // HAL diagnostic output code
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 //=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
8 //####COPYRIGHTBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
9 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
10 // -------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
11 // The contents of this file are subject to the Cygnus eCos Public License
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
12 // Version 1.0 (the "License"); you may not use this file except in
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
14 // http://sourceware.cygnus.com/ecos
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
15 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
18 // License for the specific language governing rights and limitations under
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
19 // the License.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
20 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
21 // The Original Code is eCos - Embedded Cygnus Operating System, released
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
22 // September 30, 1998.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
23 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
24 // The Initial Developer of the Original Code is Cygnus. Portions created
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
25 // by Cygnus are Copyright (C) 1998 Cygnus Solutions. All Rights Reserved.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
26 // -------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
27 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
28 //####COPYRIGHTEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
29 //=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
30 //#####DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
31 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
32 // Author(s): nickg
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
33 // Contributors: nickg
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
34 // Date: 1998-03-02
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
35 // Purpose: HAL diagnostic output
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
36 // Description: Implementations of HAL diagnostic output support.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
37 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
38 //####DESCRIPTIONEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
39 //
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 #include <pkgconf/hal.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
43
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
44 #include <cyg/infra/cyg_type.h> // base types
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
45 #include <cyg/infra/cyg_trac.h> // tracing macros
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46 #include <cyg/infra/cyg_ass.h> // assertion macros
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
47
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
48 #include <cyg/hal/hal_arch.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
49 #include <cyg/hal/hal_diag.h>
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 #include <cyg/hal/hal_intr.h>
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 <cyg/hal/hal_io.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 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
56
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
57 //#define CYG_KERNEL_DIAG_LCD
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58 #define CYG_KERNEL_DIAG_SERIAL0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60 #if defined(CYG_HAL_USE_ROM_MONITOR)
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 #define CYG_KERNEL_DIAG_GDB
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
63
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
64 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
66 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
67
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
68 static cyg_uint8 leds = 0;
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 void hal_diag_led(int x)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
71 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
72 // return;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73 leds ^= x;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75 HAL_WRITE_UINT8( 0xfffff504, leds);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
77 #if 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
78 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79 int i;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81 for( i = 0; i < 0x00020000; i++ );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
83 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
84 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
86 /*---------------------------------------------------------------------------*/
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 #ifdef CYG_KERNEL_DIAG_SERIAL0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90 #define DIAG_BASE 0xfffff300
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91 #define DIAG_SLCR (DIAG_BASE+0x00)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92 #define DIAG_SLSR (DIAG_BASE+0x04)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
93 #define DIAG_SLDICR (DIAG_BASE+0x08)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94 #define DIAG_SLDISR (DIAG_BASE+0x0C)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95 #define DIAG_SFCR (DIAG_BASE+0x10)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96 #define DIAG_SBRG (DIAG_BASE+0x14)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97 #define DIAG_TFIFO (DIAG_BASE+0x20)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98 #define DIAG_RFIFO (DIAG_BASE+0x30)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
99
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100 #define BRG_T0 0x0000
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
101 #define BRG_T2 0x0100
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
102 #define BRG_T4 0x0200
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
103 #define BRG_T5 0x0300
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
106 void hal_diag_init()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
107 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
108 #if defined(CYG_HAL_USE_ROM_MONITOR)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109 // If we are using the ROM monitor, it has already
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110 // initialized the serial line.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
111 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
112 //hal_diag_led(0x10);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113 HAL_WRITE_UINT16( DIAG_SLCR , 0x0020 );
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 HAL_WRITE_UINT16( DIAG_SLDICR , 0x0000 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117 HAL_WRITE_UINT16( DIAG_SFCR , 0x0000 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
118
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
119 // HAL_WRITE_UINT16( DIAG_SBRG , BRG_T2 | 20 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
120 HAL_WRITE_UINT16( DIAG_SBRG , BRG_T2 | 10 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
121 // HAL_WRITE_UINT16( DIAG_SBRG , BRG_T2 | 5 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122 //hal_diag_led(0x10);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
125
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
126 void hal_diag_write_char_serial0( char c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128 CYG_WORD16 disr;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130 //hal_diag_led(0x20);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132 for(;;)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134 HAL_READ_UINT16( DIAG_SLDISR , disr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136 if( disr & 0x0002 ) break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137 }
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 disr = disr & ~0x0002;
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 HAL_WRITE_UINT8( DIAG_TFIFO, c );
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 HAL_WRITE_UINT16( DIAG_SLDISR , disr );
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 //hal_diag_led(0x20);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
146 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
147
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
148 void hal_diag_drain_serial0(void)
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 CYG_WORD16 disr;
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 for(;;)
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 HAL_READ_UINT16( DIAG_SLDISR , disr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
155
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
156 if( disr & 0x0002 ) break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
157 }
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 disr = disr & ~0x0002;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
160
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
161 HAL_WRITE_UINT16( DIAG_SLDISR , disr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
162 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
163
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
164 void hal_diag_read_char_serial0(char *c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
165 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
166 CYG_WORD16 disr;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
167
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
168 //hal_diag_led(0x40);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
169 for(;;)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
170 {
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 HAL_READ_UINT16( DIAG_SLDISR , disr );
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 if( disr & 0x0001 ) break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
175 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
177 disr = disr & ~0x0001;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
178
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
179 HAL_READ_UINT8( DIAG_RFIFO, *c );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181 HAL_WRITE_UINT16( DIAG_SLDISR , disr );
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 //hal_diag_led(0x40);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
184 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
185
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 void hal_diag_write_char(char c)
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 #ifdef CYG_KERNEL_DIAG_GDB
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
190 #if 0 //defined(CYG_HAL_USE_ROM_MONITOR)
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 typedef void rom_write_fn(char c);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
193 rom_write_fn *fn = ((rom_write_fn **)0x80000100)[63];
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 fn(c);
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 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
198 static char line[100];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
199 static int pos = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
200 // register volatile cyg_uint16 *volatile tty_status = SERIAL1_SR;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
201
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
202 // No need to send CRs
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
203 if( c == '\r' ) return;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
204
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
205 line[pos++] = c;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
206
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
207 if( c == '\n' || pos == sizeof(line) )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
208 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
209 CYG_INTERRUPT_STATE old;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
210 // CYG_ADDRWORD old;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
211
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
212 // Disable interrupts. This prevents GDB trying to interrupt us
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
213 // while we are in the middle of sending a packet. The serial
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
214 // receive interrupt will be seen when we re-enable interrupts
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
215 // later.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
216
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
217 HAL_DISABLE_INTERRUPTS(old);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
218
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
219 while(1)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
220 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
221 static char hex[] = "0123456789ABCDEF";
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
222 cyg_uint8 csum = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
223 int i;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
224 char c1;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
225
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
226 hal_diag_write_char_serial0('$');
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
227 hal_diag_write_char_serial0('O');
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
228 csum += 'O';
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
229 for( i = 0; i < pos; i++ )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
231 char ch = line[i];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
232 char h = hex[(ch>>4)&0xF];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233 char l = hex[ch&0xF];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
234 hal_diag_write_char_serial0(h);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
235 hal_diag_write_char_serial0(l);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
236 csum += h;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
237 csum += l;
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 hal_diag_write_char_serial0('#');
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
240 hal_diag_write_char_serial0(hex[(csum>>4)&0xF]);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
241 hal_diag_write_char_serial0(hex[csum&0xF]);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
242
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
243 #if 1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
244 hal_diag_read_char_serial0( &c1 );
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 // We must ack the interrupt caused by that read to avoid
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
247 // confusing the GDB stub ROM.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
248 // HAL_INTERRUPT_ACKNOWLEDGE( CYG_VECTOR_EXTERNAL_2 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
249
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
250 if( c1 == '+' ) break;
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 #if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
253 if( c1 == 3 )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
254 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
255 // Ctrl-C: breakpoint.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
256 extern void breakpoint();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
257 breakpoint();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
258 break;
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 #elif defined(CYG_HAL_USE_ROM_MONITOR) && defined(CYG_HAL_USE_ROM_MONITOR_GDB_STUBS)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
261 if( c1 == 3 )
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 // Ctrl-C: breakpoint.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
264 // HAL_BREAKPOINT(_breakinst);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
265 typedef void bpt_fn();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
266 bpt_fn *bfn = ((bpt_fn **)0x80000100)[61];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
267
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
268 bfn();
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 break;
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 #elif defined(CYG_HAL_USE_ROM_MONITOR) && defined(CYG_HAL_USE_ROM_MONITOR_CYGMON)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
273 if( c1 == 3 )
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 // Ctrl-C: breakpoint.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
276 HAL_BREAKPOINT(_breakinst);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
277
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
278 break;
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 #endif
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 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
283 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
284 #endif
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 pos = 0;
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 // Wait for all data from serial line to drain
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
290 // and clear ready-to-send indication.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
291 hal_diag_drain_serial0();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
292
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
293 // And re-enable interrupts
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
294 HAL_RESTORE_INTERRUPTS(old);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
295
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
296 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
297 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
298 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
299 hal_diag_write_char_serial0(c);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
300 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
301 }
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 void hal_diag_read_char(char *c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
304 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
305 for(;;)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
306 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
307 #if defined(CYG_KERNEL_DIAG_GDB) && defined(CYG_HAL_USE_ROM_MONITOR)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
308
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
309 typedef void rom_read_fn(char *c);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
310 rom_read_fn *fn = ((rom_read_fn **)0x80000100)[62];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
311
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
312 fn(c);
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 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
315 hal_diag_read_char_serial0(c);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
316
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
317 #endif
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 #if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
320 if( *c == 3 )
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 // Ctrl-C: breakpoint.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
323 extern void breakpoint(void);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
324 breakpoint();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
325 continue;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
326 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
327 #elif defined(CYG_HAL_USE_ROM_MONITOR)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
328 if( *c == 3 )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
329 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
330 // Ctrl-C: breakpoint.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
331
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
332 // HAL_BREAKPOINT(_breakinst);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
333 typedef void bpt_fn(void);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
334 bpt_fn *bfn = ((bpt_fn **)0x80000100)[61];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
335
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
336 bfn();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
337 continue;
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 #endif
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 break;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
342 }
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
345 #endif
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 /*---------------------------------------------------------------------------*/
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
348
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
349 #ifdef CYG_KERNEL_DIAG_LCD
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 /* ----------------------------------------------------------- */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
352 #define ISA_BASE 0xA0000000
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
353 #define LCD_DATA *(volatile unsigned char*)(0x13400000+ISA_BASE)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
354 #define LCD_CMD *(volatile unsigned char*)(0x13000000+ISA_BASE)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
355
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
356 #define DISPCLR 0x01 /* Display Clear */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
357 #define ECURINC 0x06 /* Cursor Increment */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
358 #define DISPCONT 0x08 /* Display Control */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
359 #define BLINK 0x01 /* Blink */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
360 #define CURON 0x02 /* Cursor ON */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
361 #define DISPON 0x04 /* Display ON */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
362 #define INITCMD 0x38 /* Initial Command */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
363 #define DDRAM 0x80 /* DDRAM address */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
364 #define LCDBUSY 0x80 /* Busy */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
365
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
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 /* JMZ-LCD202 LCD Display Unit */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
370 /* - Sample Program (for JMR-TX3904) - */
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
373 static void readyLCD(){
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
374 while(LCD_CMD & LCDBUSY);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
375 }
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 static void outLCD(unsigned char d){
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
378 readyLCD();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
379 LCD_DATA = d;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
380 }
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 static void outLCD_CMD(unsigned char d){
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
383 readyLCD();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
384 LCD_CMD = d;
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 static void INIT_LCD(){
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
388 outLCD_CMD(INITCMD);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
389 outLCD_CMD(DISPCONT);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
390 outLCD_CMD(DISPCLR);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
391 outLCD_CMD(ECURINC);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
392 outLCD_CMD(DISPCONT|BLINK|CURON|DISPON);
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
395 #if 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
396 static void MAIN(){
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
397 int i;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
398 static char c[]="JMZ-LCD202 LCD UNIT";
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
399 static char d[]="Display Test Sample";
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
400
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
401 INIT_LCD();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
402 outLCD_CMD(DDRAM);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
403 for (i=0;i<20;i++) outLCD(c[i]);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
404 outLCD_CMD(DDRAM+0x40);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
405 for (i=0;i<20;i++) outLCD(d[i]);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
406 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
407 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
408
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
409 #define LCD_LINE0 0x00
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
410 #define LCD_LINE1 0x40
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 #define LCD_LINE_LENGTH 20
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 static char lcd_line0[LCD_LINE_LENGTH+1];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
415 static char lcd_line1[LCD_LINE_LENGTH+1];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
416 static char *lcd_line[2] = { lcd_line0, lcd_line1 };
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
417 static int lcd_curline = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
418 static int lcd_linepos = 0;
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 static void lcd_dis(int add, char *string);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
421
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
422 void hal_diag_init()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
423 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
424 int i;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
425 //hal_diag_led(0x10);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
426
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
427 INIT_LCD();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
428
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
429 lcd_curline = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
430 lcd_linepos = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
431
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
432 for( i = 0; i < LCD_LINE_LENGTH; i++ )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
433 lcd_line[0][i] = lcd_line[1][i] = ' ';
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 lcd_line[0][LCD_LINE_LENGTH] = lcd_line[1][LCD_LINE_LENGTH] = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
436
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
437 lcd_dis( LCD_LINE0, lcd_line[0] );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
438 lcd_dis( LCD_LINE1, lcd_line[1] );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
439
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
440 #if 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
441 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
442 int i;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
443 static char c[]="JMZ-LCD202 LCD UNIT";
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
444 static char d[]="Display Test Sample";
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
445
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
446 outLCD_CMD(DDRAM);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
447 for (i=0;i<20;i++) outLCD(c[i]);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
448 outLCD_CMD(DDRAM+0x40);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
449 for (i=0;i<20;i++) outLCD(d[i]);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
450 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
451 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
452
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
453 //hal_diag_led(0x10);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
454 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
455
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
456 /* this routine writes the string to the LCD */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
457 /* display after setting the address to add */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
458 static void lcd_dis(int add, char *string)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
459 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
460 int i;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
461
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
462 outLCD_CMD(DDRAM+add);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
463
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
464 for (i=0 ; i<LCD_LINE_LENGTH ; i++) outLCD(string[i]);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
465 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
466
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
467 void hal_diag_write_char( char c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
468 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
469 int i;
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_led(0x20);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
472
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
473 // Truncate long lines
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
474 if( lcd_linepos >= LCD_LINE_LENGTH ) return;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
475
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
476 // ignore CR
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
477 if( c == '\r' ) return;
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 if( c == '\n' )
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 lcd_dis( LCD_LINE0, &lcd_line[lcd_curline^1][0] );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
482 lcd_dis( LCD_LINE1, &lcd_line[lcd_curline][0] );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
483
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
484 // Do a line feed
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
485 lcd_curline ^= 1;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
486 lcd_linepos = 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
487
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
488 for( i = 0; i < LCD_LINE_LENGTH; i++ )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
489 lcd_line[lcd_curline][i] = ' ';
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
490
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
491 return;
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 lcd_line[lcd_curline][lcd_linepos++] = c;
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 //hal_diag_led(0x20);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
497 }
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 void hal_diag_read_char(char *c)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
500 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
501 //hal_diag_led(0x40);
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 //hal_diag_led(0x40);
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
506
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 /* End of hal_diag.c */