# # This package requires a version of GCC that supports the `-mcpu32' option. # # # Please send any comments, improvements, or bug reports to: # W. Eric Norum # Deparment of Electrical Engineering # 53 Campus Driver # University of Saskatchewan # Saskatoon, Saskatchewan, CANADA # S7N 5A9 # eric.norum@usask.ca # # # This board support package works with several different versions of # MC68360 systems. See the conditional-compile tests in startup/init68360.c # for examples. # # 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. This version # can be used with the Arnewsh SBC360 card. # - If the preprocessor symbol M68360_ATLAS_HSB is defined, # the BSP is compiled for an Atlas HSB card. # - If the preprocessor symbol M68360_IMD_PGH is defined, # the BSP is compiled for an IMD PGH360 card. # - Otherwise, the BSP is compiled for a generic 68360 system # as described in Chapter 9 of the MC68360 User's Manual. This # version works with the Atlas ACE360 card. # 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 BOARD: IMD PGH Board (custom) 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/FLASH, 32-bit DRAM ROM: To 1 MByte, 180 nsec (3 wait states), chip select 0 RAM: 4 or 16 MBytes of 60 nsec parity DRAM (1Mx36) to RAS1*/CAS1* Board description (IMD PGH) --------------------------- clock rate: 25 MHz bus width: 8-bit PROM/FLASH, 32-bit DRAM ROM: 512KByte, 180 nsec (3 wait states), chip select 0 RAM: 16 MBytes of 60 nsec no-parity DRAM (1Mx32) to RAS1*/CAS1* Host System ----------- OPENSTEP 4.2 (Intel and Motorola), Solaris 2.5, Linux 2.0.29 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 38 fp context switch: restore 1st FP task 39 fp context switch: save initialized, restore initialized 14 fp context switch: save idle, restore initialized 15 fp context switch: save idle, restore idle 41 Task Manager rtems_task_create 202 rtems_task_ident 390 rtems_task_start 71 rtems_task_restart: calling task 99 rtems_task_restart: suspended task -- returns to caller 86 rtems_task_restart: blocked task -- returns to caller 116 rtems_task_restart: ready task -- returns to caller 88 rtems_task_restart: suspended task -- preempts caller 132 rtems_task_restart: blocked task -- preempts caller 153 rtems_task_restart: ready task -- preempts caller 149 rtems_task_delete: calling task 236 rtems_task_delete: suspended task 191 rtems_task_delete: blocked task 195 rtems_task_delete: ready task 198 rtems_task_suspend: calling task 78 rtems_task_suspend: returns to caller 36 rtems_task_resume: task readied -- returns to caller 39 rtems_task_resume: task readied -- preempts caller 67 rtems_task_set_priority: obtain current priority 26 rtems_task_set_priority: returns to caller 59 rtems_task_set_priority: preempts caller 110 rtems_task_mode: obtain current mode 13 rtems_task_mode: no reschedule 15 rtems_task_mode: reschedule -- returns to caller 20 rtems_task_mode: reschedule -- preempts caller 67 rtems_task_wake_after: yield -- returns to caller 16 rtems_task_wake_after: yields -- preempts caller 65 rtems_task_wake_when 116 Interrupt Manager interrupt entry overhead: returns to nested interrupt 10 interrupt entry overhead: returns to interrupted task 10 interrupt entry overhead: returns to preempting task 10 interrupt exit overhead: returns to nested interrupt 8 interrupt exit overhead: returns to interrupted task 10 interrupt exit overhead: returns to preempting task 59 Clock Manager rtems_clock_set 73 rtems_clock_get 1 rtems_clock_tick 16 Timer Manager rtems_timer_create 31 rtems_timer_ident 380 rtems_timer_delete: inactive 43 rtems_timer_delete: active 46 rtems_timer_fire_after: inactive 53 rtems_timer_fire_after: active 56 rtems_timer_fire_when: inactive 72 rtems_timer_fire_when: active 72 rtems_timer_reset: inactive 47 rtems_timer_reset: active 51 rtems_timer_cancel: inactive 25 rtems_timer_cancel: active 28 Semaphore Manager rtems_semaphore_create 59 rtems_semaphore_ident 438 rtems_semaphore_delete 57 rtems_semaphore_obtain: available 31 rtems_semaphore_obtain: not available -- NO_WAIT 31 rtems_semaphore_obtain: not available -- caller blocks 108 rtems_semaphore_release: no waiting tasks 40 rtems_semaphore_release: task readied -- returns to caller 56 rtems_semaphore_release: task readied -- preempts caller 83 Message Queue Manager rtems_message_queue_create 241 rtems_message_queue_ident 379 rtems_message_queue_delete 75 rtems_message_queue_send: no waiting tasks 72 rtems_message_queue_send: task readied -- returns to caller 72 rtems_message_queue_send: task readied -- preempts caller 99 rtems_message_queue_urgent: no waiting tasks 72 rtems_message_queue_urgent: task readied -- returns to caller 72 rtems_message_queue_urgent: task readied -- preempts caller 99 rtems_message_queue_broadcast: no waiting tasks 43 rtems_message_queue_broadcast: task readied -- returns to caller 82 rtems_message_queue_broadcast: task readied -- preempts caller 109 rtems_message_queue_receive: available 52 rtems_message_queue_receive: not available -- NO_WAIT 34 rtems_message_queue_receive: not available -- caller blocks 111 rtems_message_queue_flush: no messages flushed 25 rtems_message_queue_flush: messages flushed 34 Event Manager rtems_event_send: no task readied 22 rtems_event_send: task readied -- returns to caller 50 rtems_event_send: task readied -- preempts caller 80 rtems_event_receive: obtain current events -1 rtems_event_receive: available 26 rtems_event_receive: not available -- NO_WAIT 22 rtems_event_receive: not available -- caller blocks 89 Signal Manager rtems_signal_catch 16 rtems_signal_send: returns to caller 32 rtems_signal_send: signal to self 51 exit ASR overhead: returns to calling task 42 exit ASR overhead: returns to preempting task 58 Partition Manager rtems_partition_create 74 rtems_partition_ident 379 rtems_partition_delete 40 rtems_partition_get_buffer: available 29 rtems_partition_get_buffer: not available 27 rtems_partition_return_buffer 34 Region Manager rtems_region_create 63 rtems_region_ident 388 rtems_region_delete 40 rtems_region_get_segment: available 43 rtems_region_get_segment: not available -- NO_WAIT 40 rtems_region_get_segment: not available -- caller blocks 120 rtems_region_return_segment: no waiting tasks 48 rtems_region_return_segment: task readied -- returns to caller 98 rtems_region_return_segment: task readied -- preempts caller 125 Dual-Ported Memory Manager rtems_port_create 38 rtems_port_ident 380 rtems_port_delete 40 rtems_port_internal_to_external 22 rtems_port_external_to_internal 22 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 36 rtems_rate_monotonic_ident 380 rtems_rate_monotonic_cancel 34 rtems_rate_monotonic_delete: active 51 rtems_rate_monotonic_delete: inactive 47 rtems_rate_monotonic_period: obtain status 27 rtems_rate_monotonic_period: initiate period -- returns to caller 50 rtems_rate_monotonic_period: conclude periods -- caller blocks 72 Network tests: TCP throughput (as measured by ttcp): Receive: 1081 kbytes/sec Transmit: 953 kbytes/sec 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 A custom 68360 board (PGH360) produced by IMD