OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [lib/] [libbsp/] [m68k/] [gen68360/] [README] - Blame information for rev 389

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 unneback
#
2
#  $Id: README,v 1.2 2001-09-27 12:00:07 chris Exp $
3
#
4
 
5
#
6
# This package requires a version of GCC that supports the `-mcpu32' option.
7
#
8
 
9
#
10
# Please send any comments, improvements, or bug reports to:
11
#       W. Eric Norum
12
#       Saskatchewan Accelerator Laboratory
13
#       107 North Road
14
#       University of Saskatchewan
15
#       Saskatoon, Saskatchewan, CANADA
16
#       S7N 5C6
17
# eric@skatter.usask.ca
18
#
19
 
20
#
21
# This board support package works with several different versions of
22
# MC68360 systems.  See the conditional-compile tests in startup/init68360.c
23
# for examples.
24
#
25
# Decisions made at compile time include:
26
#       - If the CPU is a member of the 68040 family, the BSP is
27
#         compiled for a generic 68040/68360 system as described
28
#         in Chapter 9 of the MC68360 User's Manual.  This version
29
#         can be used with the Arnewsh SBC360 card.
30
#       - If the preprocessor symbol M68360_ATLAS_HSB is defined,
31
#         the BSP is compiled for an Atlas HSB card.
32
#       - Otherwise, the BSP is compiled for a generic 68360 system
33
#         as described in Chapter 9 of the MC68360 User's Manual.  This
34
#         version works with the Atlas ACE360 card.
35
#
36
# Decisions to be made a link-edit time are:
37
#     - The size of the memory allocator heap.  The default value is
38
#       64 kbytes.  If the network package is used the heap
39
#       should be at least 256 kbytes.  If your network is large, or
40
#       busy, the heap should be even larger.
41
#       To choose a heap size of 256 kbytes,
42
#       CFLAGS_LD += -Wl,--defsym -Wl,HeapSize=0x40000
43
 
44
BSP NAME:           gen68360 or gen68360_040
45
BOARD:              Generic 68360 as described in Motorola MC68360 User's Manual
46
BOARD:              Atlas Computer Equipment Inc. High Speed Bridge (HSB)
47
BOARD:              Atlas Computer Equipment Inc. Advanced Communication Engine (ACE)
48
BOARD:              Arnewsh SBC360 68040/68360 card
49
BUS:                none
50
CPU FAMILY:         Motorola CPU32+, Motorola 68040
51
COPROCESSORS:       none
52
MODE:               not applicable
53
 
54
DEBUG MONITOR:      none (Hardware provides BDM)
55
 
56
PERIPHERALS
57
===========
58
TIMERS:             PIT, Watchdog, 4 general purpose, 16 RISC
59
  RESOLUTION:       one microsecond
60
SERIAL PORTS:       4 SCC, 2 SMC, 1 SPI
61
REAL-TIME CLOCK:
62
DMA:                Each serial port, 2 general purpose
63
VIDEO:              none
64
SCSI:               none
65
NETWORKING:         Ethernet on SCC1.
66
 
67
DRIVER INFORMATION
68
==================
69
CLOCK DRIVER:       Programmable Interval Timer
70
IOSUPP DRIVER:      Serial Management Controller 1
71
SHMSUPP:            none
72
TIMER DRIVER:       Timer 1
73
 
74
STDIO
75
=====
76
PORT:               SMC1
77
ELECTRICAL:         EIA-232 (if board supplies level shifter)
78
BAUD:               9600
79
BITS PER CHARACTER: 8
80
PARITY:             None
81
STOP BITS:          1
82
 
83
NOTES
84
=====
85
 
86
Board description
87
-----------------
88
clock rate:     25 MHz
89
bus width:      8-bit PROM, 32-bit DRAM
90
ROM:            To 1 MByte, 180 nsec (3 wait states), chip select 0
91
RAM:            4 or 16 MBytes of 60 nsec parity DRAM (1Mx36) to RAS1*/CAS1*
92
 
93
Host System
94
-----------
95
OPENSTEP 4.2 (Intel and Motorola), Solaris 2.5, Linux 2.0.29
96
 
97
Verification (Standalone 68360)
98
-------------------------------
99
Single processor tests:  Passed
100
Multi-processort tests:  not applicable
101
Timing tests:
102
        Context Switch
103
 
104
        context switch: self 10
105
        context switch: to another task 11
106
        context switch: no floating point contexts 38
107
        fp context switch: restore 1st FP task 39
108
        fp context switch: save initialized, restore initialized 14
109
        fp context switch: save idle, restore initialized 15
110
        fp context switch: save idle, restore idle 41
111
 
112
        Task Manager
113
 
114
        rtems_task_create 202
115
        rtems_task_ident 390
116
        rtems_task_start 71
117
        rtems_task_restart: calling task 99
118
        rtems_task_restart: suspended task -- returns to caller 86
119
        rtems_task_restart: blocked task -- returns to caller 116
120
        rtems_task_restart: ready task -- returns to caller 88
121
        rtems_task_restart: suspended task -- preempts caller 132
122
        rtems_task_restart: blocked task -- preempts caller 153
123
        rtems_task_restart: ready task -- preempts caller 149
124
        rtems_task_delete: calling task 236
125
        rtems_task_delete: suspended task 191
126
        rtems_task_delete: blocked task 195
127
        rtems_task_delete: ready task 198
128
        rtems_task_suspend: calling task 78
129
        rtems_task_suspend: returns to caller 36
130
        rtems_task_resume: task readied -- returns to caller 39
131
        rtems_task_resume: task readied -- preempts caller 67
132
        rtems_task_set_priority: obtain current priority 26
133
        rtems_task_set_priority: returns to caller 59
134
        rtems_task_set_priority: preempts caller 110
135
        rtems_task_mode: obtain current mode 13
136
        rtems_task_mode: no reschedule 15
137
        rtems_task_mode: reschedule -- returns to caller 20
138
        rtems_task_mode: reschedule -- preempts caller 67
139
        rtems_task_get_note 28
140
        rtems_task_set_note 27
141
        rtems_task_wake_after: yield -- returns to caller 16
142
        rtems_task_wake_after: yields -- preempts caller 65
143
        rtems_task_wake_when 116
144
 
145
        Interrupt Manager
146
 
147
        interrupt entry overhead: returns to nested interrupt 10
148
        interrupt entry overhead: returns to interrupted task 10
149
        interrupt entry overhead: returns to preempting task 10
150
        interrupt exit overhead: returns to nested interrupt 8
151
        interrupt exit overhead: returns to interrupted task 10
152
        interrupt exit overhead: returns to preempting task 59
153
 
154
        Clock Manager
155
 
156
        rtems_clock_set 73
157
        rtems_clock_get 1
158
        rtems_clock_tick 16
159
 
160
        Timer Manager
161
 
162
        rtems_timer_create 31
163
        rtems_timer_ident 380
164
        rtems_timer_delete: inactive 43
165
        rtems_timer_delete: active 46
166
        rtems_timer_fire_after: inactive 53
167
        rtems_timer_fire_after: active 56
168
        rtems_timer_fire_when: inactive 72
169
        rtems_timer_fire_when: active 72
170
        rtems_timer_reset: inactive 47
171
        rtems_timer_reset: active 51
172
        rtems_timer_cancel: inactive 25
173
        rtems_timer_cancel: active 28
174
 
175
        Semaphore Manager
176
 
177
        rtems_semaphore_create 59
178
        rtems_semaphore_ident 438
179
        rtems_semaphore_delete 57
180
        rtems_semaphore_obtain: available 31
181
        rtems_semaphore_obtain: not available -- NO_WAIT 31
182
        rtems_semaphore_obtain: not available -- caller blocks 108
183
        rtems_semaphore_release: no waiting tasks 40
184
        rtems_semaphore_release: task readied -- returns to caller 56
185
        rtems_semaphore_release: task readied -- preempts caller 83
186
 
187
        Message Queue Manager
188
 
189
        rtems_message_queue_create 241
190
        rtems_message_queue_ident 379
191
        rtems_message_queue_delete 75
192
        rtems_message_queue_send: no waiting tasks 72
193
        rtems_message_queue_send: task readied -- returns to caller 72
194
        rtems_message_queue_send: task readied -- preempts caller 99
195
        rtems_message_queue_urgent: no waiting tasks 72
196
        rtems_message_queue_urgent: task readied -- returns to caller 72
197
        rtems_message_queue_urgent: task readied -- preempts caller 99
198
        rtems_message_queue_broadcast: no waiting tasks 43
199
        rtems_message_queue_broadcast: task readied -- returns to caller 82
200
        rtems_message_queue_broadcast: task readied -- preempts caller 109
201
        rtems_message_queue_receive: available 52
202
        rtems_message_queue_receive: not available -- NO_WAIT 34
203
        rtems_message_queue_receive: not available -- caller blocks 111
204
        rtems_message_queue_flush: no messages flushed 25
205
        rtems_message_queue_flush: messages flushed 34
206
 
207
        Event Manager
208
 
209
        rtems_event_send: no task readied 22
210
        rtems_event_send: task readied -- returns to caller 50
211
        rtems_event_send: task readied -- preempts caller 80
212
        rtems_event_receive: obtain current events -1
213
        rtems_event_receive: available 26
214
        rtems_event_receive: not available -- NO_WAIT 22
215
        rtems_event_receive: not available -- caller blocks 89
216
 
217
        Signal Manager
218
 
219
        rtems_signal_catch 16
220
        rtems_signal_send: returns to caller 32
221
        rtems_signal_send: signal to self 51
222
        exit ASR overhead: returns to calling task 42
223
        exit ASR overhead: returns to preempting task 58
224
 
225
        Partition Manager
226
 
227
        rtems_partition_create 74
228
        rtems_partition_ident 379
229
        rtems_partition_delete 40
230
        rtems_partition_get_buffer: available 29
231
        rtems_partition_get_buffer: not available 27
232
        rtems_partition_return_buffer 34
233
 
234
        Region Manager
235
 
236
        rtems_region_create 63
237
        rtems_region_ident 388
238
        rtems_region_delete 40
239
        rtems_region_get_segment: available 43
240
        rtems_region_get_segment: not available -- NO_WAIT 40
241
        rtems_region_get_segment: not available -- caller blocks 120
242
        rtems_region_return_segment: no waiting tasks 48
243
        rtems_region_return_segment: task readied -- returns to caller 98
244
        rtems_region_return_segment: task readied -- preempts caller 125
245
 
246
        Dual-Ported Memory Manager
247
 
248
        rtems_port_create 38
249
        rtems_port_ident 380
250
        rtems_port_delete 40
251
        rtems_port_internal_to_external 22
252
        rtems_port_external_to_internal 22
253
 
254
        IO Manager
255
 
256
        rtems_io_initialize 4
257
        rtems_io_open 1
258
        rtems_io_close 1
259
        rtems_io_read 1
260
        rtems_io_write 1
261
        rtems_io_control 1
262
 
263
        Rate Monotonic Manager
264
 
265
        rtems_rate_monotonic_create 36
266
        rtems_rate_monotonic_ident 380
267
        rtems_rate_monotonic_cancel 34
268
        rtems_rate_monotonic_delete: active 51
269
        rtems_rate_monotonic_delete: inactive 47
270
        rtems_rate_monotonic_period: obtain status 27
271
        rtems_rate_monotonic_period: initiate period -- returns to caller 50
272
        rtems_rate_monotonic_period: conclude periods -- caller blocks 72
273
 
274
Network tests:
275
       TCP throughput (as measured by ttcp):
276
               Receive: 1081 kbytes/sec
277
               Transmit: 953 kbytes/sec
278
 
279
Porting
280
-------
281
This board support package is written for a 68360 system similar to that
282
described in chapter 9 of the Motorola MC68360 Quad Integrated Communication
283
Processor Users' Manual.  The salient features of this hardware are:
284
 
285
        25 MHz external clock
286
        DRAM address multiplexing provided by 68360
287
        8-bit 180nsec PROM to CS0*
288
        4 MBytes of 60 nsec parity DRAM (1Mx36) to RAS1*/CAS1*
289
        Console serial port on SMC1
290
        Ethernet interface on SCC1
291
 
292
The board support package has been tested with:
293
        A home-built 68360 board
294
        An ACE360A and an HSB board produced by:
295
                Atlas Computer Equipment
296
                703 Colina Lane
297
                Santa Barbara, CA 93103
298
        A 68040/68360 board (SBC360) produced by:
299
                Arnewsh Inc.
300
                P.O. Box 270352
301
                Fort Collins, CO 80527-0352
302
 
303
Interrupt Notes
304
===============
305
ckinit.c:
306
        Occasional network lockups have been noted when the PIT has a higher
307
interrupt request level than the CPM.  The SCC1 bit in the CISR is set
308
even though the SCC1 interrupt handler is not active.  This blocks
309
interrupts from SCC1 (and all other CPM sources) and locks up the
310
system.  It has not been determined whether the error is within the
311
68360 or in the RTEMS interrupt support assembler code.  The solution,
312
for now, is to set both PIT and CPM interrupt request levels to the same
313
value (4).
314
 
315
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.