summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/m68k/gen68360/README
blob: ce3aa09cef5167cb19b46f430f1af8bba3485971 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
#
#  $Id$
#

#
# This package works best with a version of GCC that has been modified
# to support the `-mcpu32' argument.  I have submitted the required
# changes to the GCC maintainers.
#

#
# Please send any comments, improvements, or bug reports to:
#	W. Eric Norum
#	Saskatchewan Accelerator Laboratory
#	107 North Road
#	University of Saskatchewan
#	Saskatoon, Saskatchewan, CANADA
#	S7N 5C6
# eric@skatter.usask.ca
#

#
# This board support package works with several different versions of
# MC68360 systems.  The choice of hardware is made at the final link-edit
# phase by setting the Makefile LDFLAGS definition appropriately.
#
# Decisions made at compile time include:
#	- If the CPU is a member of the 68040 family, the BSP is
#	  compiled for a generic 68040/68360 system as described
#	  in Chapter 9 of the MC68360 User's Manual.
#	- If the preprocessor symbol M68360_ATLAS_HSB is defined,
#	  the BSP is compiled for an Atlas HSB card.
#	- Otherwise, the BSP is compiled for a generic 68360 system
#	  as described in Chapter 9 of the MC68360 User's Manual.
#
# Decisions to be made a link-edit time are:
#	- The amount of dynamic RAM in the system.  This value applies
#	  only to hardware versions which support different sizes of RAM.
#	  The default value is 4 Mbytes.  To specify 16 Mbytes of memory,
#		--defsym RamSize=0x1000000
#
#     - The size of the memory allocator heap.  The default value is
#       64 kbytes.  If the KA9Q network package is used the heap
#       should be at least 256 kbytes.  If your network is large, or
#       busy, the heap should be even larger.
#       To choose a heap size of 256 kbytes,
#             --defsym HeapSize=0x40000
#	  
#	- The Ethernet address for network boot proms.

BSP NAME:	    gen68360 or gen68360_040
BOARD:              Generic 68360 as described in Motorola MC68360 User's Manual
BOARD:              Atlas Computer Equipment Inc. High Speed Bridge (HSB)
BOARD:              Atlas Computer Equipment Inc. Advanced Communication Engine (ACE)
BOARD:              Arnewsh SBC360 68040/68360 card
BUS:                none
CPU FAMILY:         Motorola CPU32+, Motorola 68040
COPROCESSORS:       none
MODE:               not applicable

DEBUG MONITOR:      none (Hardware provides BDM)

PERIPHERALS
===========
TIMERS:             PIT, Watchdog, 4 general purpose, 16 RISC
  RESOLUTION:       one microsecond
SERIAL PORTS:       4 SCC, 2 SMC, 1 SPI
REAL-TIME CLOCK:
DMA:                Each serial port, 2 general purpose
VIDEO:              none
SCSI:               none
NETWORKING:         Ethernet on SCC1.

DRIVER INFORMATION
==================
CLOCK DRIVER:       Programmable Interval Timer
IOSUPP DRIVER:      Serial Management Controller 1
SHMSUPP:            none
TIMER DRIVER:       Timer 1

STDIO
=====
PORT:               SMC1
ELECTRICAL:         EIA-232 (if board supplies level shifter)
BAUD:               9600
BITS PER CHARACTER: 8
PARITY:             None
STOP BITS:          1

NOTES
=====

Board description
-----------------
clock rate:	25 MHz
bus width:	8-bit PROM, 32-bit DRAM
ROM:		To 1 MByte, 180 nsec (3 wait states), chip select 0
RAM:		1 to 64 MByte DRAM SIMM, 60 nsec (0 wait states), parity or nonparity

Host System
-----------
NEXTSTEP 3.3 (Intel and Motorola), Solaris 2.5
gcc-2.7.2
binutils-2.6

Verification (Standalone 68360)
-------------------------------
Single processor tests:  Passed
Multi-processort tests:  not applicable
Timing tests:
	Context Switch

	context switch: self 10
	context switch: to another task 11
	context switch: no floating point contexts 40
	fp context switch: restore 1st FP task 41
	fp context switch: save initialized, restore initialized 14
	fp context switch: save idle, restore initialized 14
	fp context switch: save idle, restore idle 43

	Task Manager

	rtems_task_create 133
	rtems_task_ident 351
	rtems_task_start 77
	rtems_task_restart: calling task 93
	rtems_task_restart: suspended task -- returns to caller 90
	rtems_task_restart: blocked task -- returns to caller 120
	rtems_task_restart: ready task -- returns to caller 92
	rtems_task_restart: suspended task -- preempts caller 121
	rtems_task_restart: blocked task -- preempts caller 143
	rtems_task_restart: ready task -- preempts caller 138
	rtems_task_delete: calling task 158
	rtems_task_delete: suspended task 129
	rtems_task_delete: blocked task 134
	rtems_task_delete: ready task 136
	rtems_task_suspend: calling task 71
	rtems_task_suspend: returns to caller 47
	rtems_task_resume: task readied -- returns to caller 48
	rtems_task_resume: task readied -- preempts caller 67
	rtems_task_set_priority: obtain current priority 36
	rtems_task_set_priority: returns to caller 65
	rtems_task_set_priority: preempts caller 102
	rtems_task_mode: obtain current mode 13
	rtems_task_mode: no reschedule 15
	rtems_task_mode: reschedule -- returns to caller 22
	rtems_task_mode: reschedule -- preempts caller 61
	rtems_task_get_note 38
	rtems_task_set_note 37
	rtems_task_wake_after: yield -- returns to caller 22
	rtems_task_wake_after: yields -- preempts caller 56
	rtems_task_wake_when 110

	Interrupt Manager

	interrupt entry overhead: returns to nested interrupt 8
	interrupt entry overhead: returns to interrupted task 8
	interrupt entry overhead: returns to preempting task 8
	interrupt exit overhead: returns to nested interrupt 7
	interrupt exit overhead: returns to interrupted task 8
	interrupt exit overhead: returns to preempting task 52

	Clock Manager

	rtems_clock_set 82
	rtems_clock_get 2
	rtems_clock_tick 15

	Timer Manager

	rtems_timer_create 33
	rtems_timer_ident 343
	rtems_timer_delete: inactive 47
	rtems_timer_delete: active 50
	rtems_timer_fire_after: inactive 59
	rtems_timer_fire_after: active 63
	rtems_timer_fire_when: inactive 83
	rtems_timer_fire_when: active 83
	rtems_timer_reset: inactive 55
	rtems_timer_reset: active 58
	rtems_timer_cancel: inactive 35
	rtems_timer_cancel: active 38

	Semaphore Manager

	rtems_semaphore_create 62
	rtems_semaphore_ident 368
	rtems_semaphore_delete 61
	rtems_semaphore_obtain: available 42
	rtems_semaphore_obtain: not available -- NO_WAIT 42
	rtems_semaphore_obtain: not available -- caller blocks 105
	rtems_semaphore_release: no waiting tasks 46
	rtems_semaphore_release: task readied -- returns to caller 64
	rtems_semaphore_release: task readied -- preempts caller 84

	Message Queue Manager

	rtems_message_queue_create 240
	rtems_message_queue_ident 342
	rtems_message_queue_delete 79
	rtems_message_queue_send: no waiting tasks 93
	rtems_message_queue_send: task readied -- returns to caller 96
	rtems_message_queue_send: task readied -- preempts caller 116
	rtems_message_queue_urgent: no waiting tasks 93
	rtems_message_queue_urgent: task readied -- returns to caller 97
	rtems_message_queue_urgent: task readied -- preempts caller 117
	rtems_message_queue_broadcast: no waiting tasks 54
	rtems_message_queue_broadcast: task readied -- returns to caller 106
	rtems_message_queue_broadcast: task readied -- preempts caller 126
	rtems_message_queue_receive: available 79
	rtems_message_queue_receive: not available -- NO_WAIT 48
	rtems_message_queue_receive: not available -- caller blocks 111
	rtems_message_queue_flush: no messages flushed 35
	rtems_message_queue_flush: messages flushed 44

	Event Manager

	rtems_event_send: no task readied 30
	rtems_event_send: task readied -- returns to caller 59
	rtems_event_send: task readied -- preempts caller 81
	rtems_event_receive: obtain current events 1
	rtems_event_receive: available 34
	rtems_event_receive: not available -- NO_WAIT 31
	rtems_event_receive: not available -- caller blocks 84

	Signal Manager

	rtems_signal_catch 24
	rtems_signal_send: returns to caller 42
	rtems_signal_send: signal to self 47
	exit ASR overhead: returns to calling task 33
	exit ASR overhead: returns to preempting task 58

	Partition Manager

	rtems_partition_create 78
	rtems_partition_ident 342
	rtems_partition_delete 46
	rtems_partition_get_buffer: available 40
	rtems_partition_get_buffer: not available 39
	rtems_partition_return_buffer 47

	Region Manager

	rtems_region_create 65
	rtems_region_ident 349
	rtems_region_delete 45
	rtems_region_get_segment: available 55
	rtems_region_get_segment: not available -- NO_WAIT 52
	rtems_region_get_segment: not available -- caller blocks 119
	rtems_region_return_segment: no waiting tasks 57
	rtems_region_return_segment: task readied -- returns to caller 106
	rtems_region_return_segment: task readied -- preempts caller 127

	Dual-Ported Memory Manager

	rtems_port_create 40
	rtems_port_ident 342
	rtems_port_delete 44
	rtems_port_internal_to_external 32
	rtems_port_external_to_internal 32

	IO Manager

	rtems_io_initialize 4
	rtems_io_open 1
	rtems_io_close 1
	rtems_io_read 1
	rtems_io_write 1
	rtems_io_control 1

	Rate Monotonic Manager

	rtems_rate_monotonic_create 39
	rtems_rate_monotonic_ident 343
	rtems_rate_monotonic_cancel 43
	rtems_rate_monotonic_delete: active 54
	rtems_rate_monotonic_delete: inactive 52
	rtems_rate_monotonic_period: obtain status 37
	rtems_rate_monotonic_period: initiate period -- returns to caller 58
	rtems_rate_monotonic_period: conclude periods -- caller blocks 75

Porting
-------
This board support package is written for a 68360 system similar to that
described in chapter 9 of the Motorola MC68360 Quad Integrated Communication
Processor Users' Manual.  The salient features of this hardware are:

	25 MHz external clock
	DRAM address multiplexing provided by 68360
	8-bit 180nsec PROM to CS0*
	4 MBytes of 60 nsec parity DRAM (1Mx36) to RAS1*/CAS1*
	Console serial port on SMC1
	Ethernet interface on SCC1

The board support package has been tested with:
	A home-built 68360 board
	An ACE360A and an HSB board produced by:
		Atlas Computer Equipment
		703 Colina Lane
		Santa Barbara, CA 93103
	A 68040/68360 board (SBC360) produced by:
		Arnewsh Inc.
		P.O. Box 270352
		Fort Collins, CO 80527-0352