source: rtems/c/src/lib/libbsp/m68k/gen68360/README @ e4c07444

4.104.114.84.95
Last change on this file since e4c07444 was 35ece2e, checked in by Joel Sherrill <joel.sherrill@…>, on 02/11/00 at 15:21:40

Patch from Eric Norum <eric@…> based on working with
Bob Wisdon <bobwis@…> and Chris Johns <ccj@…>
to resolve a random network lockup problem.

ckinit.c:

Occasional network lockups have been noted when the PIT has a higher
interrupt request level than the CPM. The SCC1 bit in the CISR is set
even though the SCC1 interrupt handler is not active. This blocks
interrupts from SCC1 (and all other CPM sources) and locks up the
system. It has not been determined whether the error is within the
68360 or in the RTEMS interrupt support assembler code. The solution,
for now, is to set both PIT and CPM interrupt request levels to the same
value (4).

network.c:

Set CPM transmitter buffer pointer (_tbptr) to beginning of frame
before restarting transmitter. Don't retire transmitter buffer
descriptors belonging to the restarted frame.

  • Property mode set to 100644
File size: 10.1 KB
Line 
1#
2#  $Id$
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
44BSP NAME:           gen68360 or gen68360_040
45BOARD:              Generic 68360 as described in Motorola MC68360 User's Manual
46BOARD:              Atlas Computer Equipment Inc. High Speed Bridge (HSB)
47BOARD:              Atlas Computer Equipment Inc. Advanced Communication Engine (ACE)
48BOARD:              Arnewsh SBC360 68040/68360 card
49BUS:                none
50CPU FAMILY:         Motorola CPU32+, Motorola 68040
51COPROCESSORS:       none
52MODE:               not applicable
53
54DEBUG MONITOR:      none (Hardware provides BDM)
55
56PERIPHERALS
57===========
58TIMERS:             PIT, Watchdog, 4 general purpose, 16 RISC
59  RESOLUTION:       one microsecond
60SERIAL PORTS:       4 SCC, 2 SMC, 1 SPI
61REAL-TIME CLOCK:
62DMA:                Each serial port, 2 general purpose
63VIDEO:              none
64SCSI:               none
65NETWORKING:         Ethernet on SCC1.
66
67DRIVER INFORMATION
68==================
69CLOCK DRIVER:       Programmable Interval Timer
70IOSUPP DRIVER:      Serial Management Controller 1
71SHMSUPP:            none
72TIMER DRIVER:       Timer 1
73
74STDIO
75=====
76PORT:               SMC1
77ELECTRICAL:         EIA-232 (if board supplies level shifter)
78BAUD:               9600
79BITS PER CHARACTER: 8
80PARITY:             None
81STOP BITS:          1
82
83NOTES
84=====
85
86Board description
87-----------------
88clock rate:     25 MHz
89bus width:      8-bit PROM, 32-bit DRAM
90ROM:            To 1 MByte, 180 nsec (3 wait states), chip select 0
91RAM:            4 or 16 MBytes of 60 nsec parity DRAM (1Mx36) to RAS1*/CAS1*
92
93Host System
94-----------
95OPENSTEP 4.2 (Intel and Motorola), Solaris 2.5, Linux 2.0.29
96
97Verification (Standalone 68360)
98-------------------------------
99Single processor tests:  Passed
100Multi-processort tests:  not applicable
101Timing 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
274Network tests:
275       TCP throughput (as measured by ttcp):
276               Receive: 1081 kbytes/sec
277               Transmit: 953 kbytes/sec
278
279Porting
280-------
281This board support package is written for a 68360 system similar to that
282described in chapter 9 of the Motorola MC68360 Quad Integrated Communication
283Processor 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
292The 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
303Interrupt Notes
304===============
305ckinit.c:
306        Occasional network lockups have been noted when the PIT has a higher
307interrupt request level than the CPM.  The SCC1 bit in the CISR is set
308even though the SCC1 interrupt handler is not active.  This blocks
309interrupts from SCC1 (and all other CPM sources) and locks up the
310system.  It has not been determined whether the error is within the
31168360 or in the RTEMS interrupt support assembler code.  The solution,
312for now, is to set both PIT and CPM interrupt request levels to the same
313value (4).
314
315
Note: See TracBrowser for help on using the repository browser.