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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [lib/] [libbsp/] [m68k/] [gen68360/] [README] - Rev 773

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

#
#  $Id: README,v 1.2 2001-09-27 12:00:07 chris Exp $
#

#
# This package requires a version of GCC that supports the `-mcpu32' option.
#

#
# 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.  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.
#       - 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.
#
# Decisions to be made a link-edit time are:
#     - The size of the memory allocator heap.  The default value is
#       64 kbytes.  If the 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,
#       CFLAGS_LD += -Wl,--defsym -Wl,HeapSize=0x40000

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:            4 or 16 MBytes of 60 nsec parity DRAM (1Mx36) 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_get_note 28
        rtems_task_set_note 27
        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

Interrupt Notes
===============
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).


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

powered by: WebSVN 2.1.0

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