Patch from Jay Monkman <jmonkman@frasca.com> to address minor issues

in the eth_comm BSP documentation.
This commit is contained in:
Joel Sherrill
1999-03-02 15:32:30 +00:00
parent 9d813800b3
commit faf7f46c96
5 changed files with 360 additions and 177 deletions

View File

@@ -136,8 +136,9 @@ The following persons/organizations have made contributions:
Puchheim,Germany submitted some improvements to the PPC403
support and added the helas403 BSP.
+ Jay Monkman (jmonkman@frasca.com) of Frasca submitted the
eth_comm BSP and support for the MPC860 PowerPC CPU model.
+ Jay Monkman (jmonkman@frasca.com) of Frasca International, Inc
submitted the support for the Motorola MPC860 CPU including the
'eth_comm' BSP
+ Charles Gauthier <Charles.Gauthier@iit.nrc.ca> of the Institute for
Information Technology for the National Research Council of Canada

View File

@@ -27,10 +27,10 @@ NETWORKING: Ethernet (10 Mbps) on SCC1 (MPC860)
DRIVER INFORMATION
==================
CLOCK DRIVER:
IOSUPP DRIVER:
CLOCK DRIVER: Periodic Interval Timer
IOSUPP DRIVER: SCC1, SCC2, SCC3, SCC4, SMC1, SMC2
SHMSUPP: none
TIMER DRIVER:
TIMER DRIVER: Timebase register (lower 32 bits only)
STDIO
=====
@@ -62,7 +62,7 @@ On-chip resources:
BRG4 console
RTC
PIT clock
TB
TB timer
DEC
SWT
*CS0 FLASH
@@ -75,17 +75,17 @@ On-chip resources:
*CS7 DRAM bank 0
UPMA
UPMB
IRQ0
IRQ1
IRQ0 Voltage supervisor
IRQ1 ARINC-429
IRQ2 CAN2
IRQ3 CAN0
IRQ4 CAN1
IRQ5
IRQ6
IRQ5
IRQ6 Multibus I
IRQ7
IRQ_LVL0 clock - PIT
IRQ_LVL1
IRQ_LVL2
IRQ_LVL1 CPM
IRQ_LVL2 FEC
IRQ_LVL3
IRQ_LVL4
IRQ_LVL5
@@ -98,3 +98,192 @@ Bus width: 16 bit Flash, 32 bit DRAM
FLASH: 128K - 1024K, 120ns
RAM: 2 - 32M DRAM SIMM, autodetects size and speed
Verification
-------------------------------
Single processor tests: Passed
Multi-processort tests: not applicable
Timing tests:
Context Switch
context switch: self 9
context switch: to another task 10
context switch: no floating point contexts 23
fp context switch: restore 1st FP task 24
fp context switch: save initialized, restore initialized 11
fp context switch: save idle, restore initialized 11
fp context switch: save idle, restore idle 23
Task Manager
rtems_task_create 83
rtems_task_ident 84
rtems_task_start 30
rtems_task_restart: calling task 48
rtems_task_restart: suspended task -- returns to caller 36
rtems_task_restart: blocked task -- returns to caller 47
rtems_task_restart: ready task -- returns to caller 35
rtems_task_restart: suspended task -- preempts caller 56
rtems_task_restart: blocked task -- preempts caller 116
rtems_task_restart: ready task -- preempts caller 93
rtems_task_delete: calling task 102
rtems_task_delete: suspended task 74
rtems_task_delete: blocked task 76
rtems_task_delete: ready task 80
rtems_task_suspend: calling task 37
rtems_task_suspend: returns to caller 14
rtems_task_resume: task readied -- returns to caller 16
rtems_task_resume: task readied -- preempts caller 30
rtems_task_set_priority: obtain current priority 12
rtems_task_set_priority: returns to caller 23
rtems_task_set_priority: preempts caller 52
rtems_task_mode: obtain current mode 5
rtems_task_mode: no reschedule 6
rtems_task_mode: reschedule -- returns to caller 15
rtems_task_mode: reschedule -- preempts caller 43
rtems_task_get_note 13
rtems_task_set_note 12
rtems_task_wake_after: yield -- returns to caller 8
rtems_task_wake_after: yields -- preempts caller 30
rtems_task_wake_when: 49
Interrupt Manager
interrupt entry overhead: returns to nested interrupt 7
interrupt entry overhead: returns to interrupted task 31
interrupt entry overhead: returns to preempting task 14
interrupt exit overhead: returns to nested interrupt 10
interrupt exit overhead: returns to interrupted task 8
interrupt exit overhead: returns to preempting task 45
Clock Manager
rtems_clock_set 28
rtems_clock_get 0
rtems_clock_tick 36
Timer Manager
rtems_timer_create 11
rtems_timer_ident 82
rtems_timer_delete: inactive 14
rtems_timer_delete: active 16
rtems_timer_fire_after: inactive 20
rtems_timer_fire_after: active 22
rtems_timer_fire_when: inactive 24
rtems_timer_fire_when: active 24
rtems_timer_reset: inactive 18
rtems_timer_reset: active 21
rtems_timer_cancel: inactive 11
rtems_timer_cancel: active 12
Semaphore Manager
rtems_semaphore_create 56
rtems_semaphore_ident 94
rtems_semaphore_delete 34
rtems_semaphore_obtain: available 13
rtems_semaphore_obtain: not available -- NO_WAIT 13
rtems_semaphore_obtain: not available -- caller blocks 48
rtems_semaphore_release: no waiting tasks 16
rtems_semaphore_release: task readied -- returns to caller 36
rtems_semaphore_release: task readied -- preempts caller 36
Message Queue Manager
rtems_message_queue_create 110
rtems_message_queue_ident 82
rtems_message_queue_delete 43
rtems_message_queue_send: no waiting tasks 28
rtems_message_queue_send: task readied -- returns to caller 31
rtems_message_queue_send: task readied -- preempts caller 46
rtems_message_queue_urgent: no waiting tasks 28
rtems_message_queue_urgent: task readied -- returns to caller 31
rtems_message_queue_urgent: task readied -- preempts caller 46
rtems_message_queue_broadcast: no waiting tasks 22
rtems_message_queue_broadcast: task readied -- returns to caller 81
rtems_message_queue_broadcast: task readied -- preempts caller 75
rtems_message_queue_receive: available 26
rtems_message_queue_receive: not available -- NO_WAIT 15
rtems_message_queue_receive: not available -- caller blocks 48
rtems_message_queue_flush: no messages flushed 14
rtems_message_queue_flush: messages flushed 14
Event Manager
rtems_event_send: no task readied 12
rtems_event_send: task readied -- returns to caller 38
rtems_event_send: task readied -- preempts caller 21
rtems_event_receive: obtain current events 1
rtems_event_receive: available 19
rtems_event_receive: not available -- NO_WAIT 11
rtems_event_receive: not available -- caller blocks 36
Signal Manager
rtems_signal_catch: 31
rtems_signal_send: returns to caller 21
rtems_signal_send: signal to self 39
exit ASR overhead: returns to calling task 30
exit ASR overhead: returns to preempting task 33
Partition Manager
rtems_partition_create 59
rtems_partition_ident 82
rtems_partition_delete 20
rtems_partition_get_buffer: available 19
rtems_partition_get_buffer: not available 13
rtems_partition_return_buffer 20
Region Manager
rtems_region_create 37
rtems_region_ident 84
rtems_region_delete 20
rtems_region_get_segment: available 19
rtems_region_get_segment: not available -- NO_WAIT 23
rtems_region_get_segment: not available -- caller blocks 75
rtems_region_return_segment: no waiting tasks 21
rtems_region_return_segment: task readied -- returns to caller 55
rtems_region_return_segment: task readied -- preempts caller 82
Dual-Ported Memory Manager
rtems_port_create 23
rtems_port_ident 82
rtems_port_delete 21
rtems_port_internal_to_external 10
rtems_port_external_to_internal 11
IO Manager
rtems_io_initialize 1
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 43
rtems_rate_monotonic_ident 82
rtems_rate_monotonic_cancel 23
rtems_rate_monotonic_delete: active 28
rtems_rate_monotonic_delete: inactive 25
rtems_rate_monotonic_period: obtain status 17
rtems_rate_monotonic_period: initiate period -- returns to caller 32
rtems_rate_monotonic_period: conclude periods -- caller blocks 30
Network tests:
TCP throughput (as measured by ttcp):
Receive: 1324 kbytes/sec
Transmit: 1037 kbytes/sec

View File

@@ -7,188 +7,189 @@
# $Id$
#
Board:
CPU: include coprocessor if applicable
Clock Speed:
Memory Configuration: SRAM, DRAM, cache, etc
Board: eth_comm
CPU: Motorola MPC860T
Clock Speed: 40 Mhz
Memory Configuration: DRAM, 60ns
Wait States:
Times Reported in: cycles, microseconds, etc
Timer Source: Count Down Timer, on-CPU cycle counter, etc
Timer Source: Time Base register
Column X:
Column Y:
# DESCRIPTION A B
== ================================================================= ==== ====
1 rtems_semaphore_create 20
rtems_semaphore_delete 21
rtems_semaphore_obtain: available 15
rtems_semaphore_obtain: not available -- NO_WAIT 15
1 rtems_semaphore_create 56
rtems_semaphore_delete 35
rtems_semaphore_obtain: available 13
rtems_semaphore_obtain: not available -- NO_WAIT 13
rtems_semaphore_release: no waiting tasks 16
2 rtems_semaphore_obtain: not available -- caller blocks 62
2 rtems_semaphore_obtain: not available -- caller blocks 48
3 rtems_semaphore_release: task readied -- preempts caller 55
3 rtems_semaphore_release: task readied -- preempts caller 36
4 rtems_task_restart: blocked task -- preempts caller 77
rtems_task_restart: ready task -- preempts caller 70
rtems_semaphore_release: task readied -- returns to caller 25
rtems_task_create 57
rtems_task_start 31
rtems_task_restart: suspended task -- returns to caller 36
rtems_task_delete: suspended task 47
rtems_task_restart: ready task -- returns to caller 37
rtems_task_restart: blocked task -- returns to caller 46
rtems_task_delete: blocked task 50
4 rtems_task_restart: blocked task -- preempts caller 117
rtems_task_restart: ready task -- preempts caller 94
rtems_semaphore_release: task readied -- returns to caller 22
rtems_task_create 83
rtems_task_start 30
rtems_task_restart: suspended task -- returns to caller 36
rtems_task_delete: suspended task 74
rtems_task_restart: ready task -- returns to caller 35
rtems_task_restart: blocked task -- returns to caller 47
rtems_task_delete: blocked task 76
5 rtems_task_suspend: calling task 51
rtems_task_resume: task readied -- preempts caller 49
5 rtems_task_suspend: calling task 37
rtems_task_resume: task readied -- preempts caller 31
6 rtems_task_restart: calling task 59
rtems_task_suspend: returns to caller 18
rtems_task_resume: task readied -- returns to caller 19
rtems_task_delete: ready task 50
6 rtems_task_restart: calling task 48
rtems_task_suspend: returns to caller 14
rtems_task_resume: task readied -- returns to caller 16
rtems_task_delete: ready task 80
7 rtems_task_restart: suspended task -- preempts caller 70
7 rtems_task_restart: suspended task -- preempts caller 56
8 rtems_task_set_priority: obtain current priority 12
rtems_task_set_priority: returns to caller 27
rtems_task_mode: obtain current mode 5
rtems_task_mode: no reschedule 5
rtems_task_mode: reschedule -- returns to caller 8
rtems_task_mode: reschedule -- preempts caller 39
rtems_task_set_note 13
rtems_task_get_note 13
rtems_clock_set 33
rtems_clock_get 3
8 rtems_task_set_priority: obtain current priority 12
rtems_task_set_priority: returns to caller 23
rtems_task_mode: obtain current mode 5
rtems_task_mode: no reschedule 7
rtems_task_mode: reschedule -- returns to caller 14
rtems_task_mode: reschedule -- preempts caller 43
rtems_task_set_note 13
rtems_task_get_note 12
rtems_clock_set 28
rtems_clock_get 0
9 rtems_message_queue_create 110
rtems_message_queue_send: no waiting tasks 37
rtems_message_queue_urgent: no waiting tasks 37
rtems_message_queue_receive: available 31
rtems_message_queue_flush: no messages flushed 12
rtems_message_queue_flush: messages flushed 16
rtems_message_queue_delete 26
9 rtems_message_queue_create 110
rtems_message_queue_send: no waiting tasks 28
rtems_message_queue_urgent: no waiting tasks 28
rtems_message_queue_receive: available 26
rtems_message_queue_flush: no messages flushed 13
rtems_message_queue_flush: messages flushed 14
rtems_message_queue_delete 45
10 rtems_message_queue_receive: not available -- NO_WAIT 15
rtems_message_queue_receive: not available -- caller blocks 62
10 rtems_message_queue_receive: not available -- NO_WAIT 15
rtems_message_queue_receive: not available -- caller blocks 48
11 rtems_message_queue_send: task readied -- preempts caller 72
11 rtems_message_queue_send: task readied -- preempts caller 46
12 rtems_message_queue_send: task readied -- returns to caller 39
12 rtems_message_queue_send: task readied -- returns to caller 31
13 rtems_message_queue_urgent: task readied -- preempts caller 72
13 rtems_message_queue_urgent: task readied -- preempts caller 46
14 rtems_message_queue_urgent: task readied -- returns to caller 39
14 rtems_message_queue_urgent: task readied -- returns to caller 31
15 rtems_event_receive: obtain current events 1
rtems_event_receive: not available -- NO_WAIT 12
rtems_event_receive: not available -- caller blocks 56
rtems_event_send: no task readied 12
rtems_event_receive: available 12
rtems_event_send: task readied -- returns to caller 24
15 rtems_event_receive: obtain current events 1
rtems_event_receive: not available -- NO_WAIT 11
rtems_event_receive: not available -- caller blocks 36
rtems_event_send: no task readied 12
rtems_event_receive: available 19
rtems_event_send: task readied -- returns to caller 21
16 rtems_event_send: task readied -- preempts caller 55
16 rtems_event_send: task readied -- preempts caller 38
17 rtems_task_set_priority: preempts caller 62
17 rtems_task_set_priority: preempts caller 51
18 rtems_task_delete: calling task 83
18 rtems_task_delete: calling task 102
19 rtems_signal_catch 9
rtems_signal_send: returns to caller 15
rtems_signal_send: signal to self 18
exit ASR overhead: returns to calling task 22
exit ASR overhead: returns to preempting task 49
19 rtems_signal_catch 31
rtems_signal_send: returns to caller 21
rtems_signal_send: signal to self 39
exit ASR overhead: returns to calling task 30
exit ASR overhead: returns to preempting task 33
20 rtems_partition_create 35
rtems_region_create 23
rtems_partition_get_buffer: available 15
rtems_partition_get_buffer: not available 13
rtems_partition_return_buffer 18
rtems_partition_delete 16
rtems_region_get_segment: available 22
rtems_region_get_segment: not available -- NO_WAIT 21
rtems_region_return_segment: no waiting tasks 19
rtems_region_get_segment: not available -- caller blocks 64
rtems_region_return_segment: task readied -- preempts caller 74
rtems_region_return_segment: task readied -- returns to caller 44
rtems_region_delete 16
rtems_io_initialize 2
rtems_io_open 1
rtems_io_close 1
rtems_io_read 1
rtems_io_write 1
rtems_io_control 1
20 rtems_partition_create 59
rtems_region_create 37
rtems_partition_get_buffer: available 19
rtems_partition_get_buffer: not available 12
rtems_partition_return_buffer 21
rtems_partition_delete 20
rtems_region_get_segment: available 20
rtems_region_get_segment: not available -- NO_WAIT 24
rtems_region_return_segment: no waiting tasks 21
rtems_region_get_segment: not available -- caller blocks 76
rtems_region_return_segment: task readied -- preempts caller 82
rtems_region_return_segment: task readied -- returns to caller 55
rtems_region_delete 20
rtems_io_initialize 1
rtems_io_open 1
rtems_io_close 1
rtems_io_read 1
rtems_io_write 1
rtems_io_control 1
21 rtems_task_ident 149
rtems_message_queue_ident 145
rtems_semaphore_ident 156
rtems_partition_ident 145
rtems_region_ident 148
rtems_port_ident 145
rtems_timer_ident 145
rtems_rate_monotonic_ident 145
21 rtems_task_ident 84
rtems_message_queue_ident 82
rtems_semaphore_ident 94
rtems_partition_ident 82
rtems_region_ident 84
rtems_port_ident 82
rtems_timer_ident 82
rtems_rate_monotonic_ident 82
22 rtems_message_queue_broadcast: task readied -- returns to caller 42
rtems_message_queue_broadcast: no waiting tasks 17
rtems_message_queue_broadcast: task readied -- preempts caller 78
22 rtems_message_queue_broadcast: task readied -- returns to caller 81
rtems_message_queue_broadcast: no waiting tasks 22
rtems_message_queue_broadcast: task readied -- preempts caller 76
23 rtems_timer_create 14
rtems_timer_fire_after: inactive 22
rtems_timer_fire_after: active 24
rtems_timer_cancel: active 15
rtems_timer_cancel: inactive 13
rtems_timer_reset: inactive 21
rtems_timer_reset: active 23
rtems_timer_fire_when: inactive 34
rtems_timer_fire_when: active 34
rtems_timer_delete: active 19
rtems_timer_delete: inactive 17
rtems_task_wake_when 69
23 rtems_timer_create 11
rtems_timer_fire_after: inactive 20
rtems_timer_fire_after: active 22
rtems_timer_cancel: active 12
rtems_timer_cancel: inactive 11
rtems_timer_reset: inactive 18
rtems_timer_reset: active 21
rtems_timer_fire_when: inactive 24
rtems_timer_fire_when: active 24
rtems_timer_delete: active 16
rtems_timer_delete: inactive 14
rtems_task_wake_when 49
24 rtems_task_wake_after: yield -- returns to caller 9
rtems_task_wake_after: yields -- preempts caller 45
24 rtems_task_wake_after: yield -- returns to caller 8
rtems_task_wake_after: yields -- preempts caller 30
25 rtems_clock_tick 4
25 rtems_clock_tick 35
26 _ISR_Disable 0
_ISR_Flash 1
_ISR_Enable 1
_Thread_Disable_dispatch 0
_Thread_Enable_dispatch 7
_Thread_Set_state 11
_Thread_Disptach (NO FP) 31
context switch: no floating point contexts 21
context switch: self 10
context switch: to another task 10
context switch: restore 1st FP task 25
fp context switch: save idle, restore idle 31
fp context switch: save idle, restore initialized 19
fp context switch: save initialized, restore initialized 20
_Thread_Resume 7
_Thread_Unblock 7
_Thread_Ready 9
_Thread_Get 4
_Semaphore_Get 2
_Thread_Get: invalid id 0
26 _ISR_Disable 24
_ISR_Flash 0
_ISR_Enable 1
_Thread_Disable_dispatch 1
_Thread_Enable_dispatch 7
_Thread_Set_state 7
_Thread_Disptach (NO FP) 31
context switch: no floating point contexts 22
context switch: self 9
context switch: to another task 10
fp context switch: restore 1st FP task 24
fp context switch: save idle, restore initialized 10
fp context switch: save idle, restore idle 23
fp context switch: save initialized, restore initialized 10
_Thread_Resume 11
_Thread_Unblock 6
_Thread_Ready 10
_Thread_Get 3
_Semaphore_Get 2
_Thread_Get: invalid id 0
27 interrupt entry overhead: returns to interrupted task 6
interrupt exit overhead: returns to interrupted task 6
interrupt entry overhead: returns to nested interrupt 6
interrupt exit overhead: returns to nested interrupt 5
interrupt entry overhead: returns to preempting task 7
interrupt exit overhead: returns to preempting task 36
28 rtems_port_create 16
rtems_port_external_to_internal 11
rtems_port_internal_to_external 11
rtems_port_delete 16
27 interrupt entry overhead: returns to interrupted task 14
interrupt exit overhead: returns to interrupted task 26
interrupt entry overhead: returns to nested interrupt 7
interrupt exit overhead: returns to nested interrupt 10
interrupt entry overhead: returns to preempting task 14
interrupt exit overhead: returns to preempting task 45
29 rtems_rate_monotonic_create 15
rtems_rate_monotonic_period: initiate period -- returns to caller 21
rtems_rate_monotonic_period: obtain status 13
rtems_rate_monotonic_cancel 16
rtems_rate_monotonic_delete: inactive 18
rtems_rate_monotonic_delete: active 20
rtems_rate_monotonic_period: conclude periods -- caller blocks 53
28 rtems_port_create 23
rtems_port_external_to_internal 10
rtems_port_internal_to_external 10
rtems_port_delete 21
29 rtems_rate_monotonic_create 43
rtems_rate_monotonic_period: initiate period -- returns to caller 32
rtems_rate_monotonic_period: obtain status 17
rtems_rate_monotonic_cancel 22
rtems_rate_monotonic_delete: inactive 25
rtems_rate_monotonic_delete: active 28
rtems_rate_monotonic_period: conclude periods -- caller blocks 30

View File

@@ -4,19 +4,16 @@
Various non BSP dependant support routines.
clock - Uses the 403 PIT (Programmable interval timer) to
clock - Uses the MPC860 PITPIT (Programmable interval timer) to
generate RTEMS clock ticks.
console - Uses the 403 Internal serial port to do RTEMS
console I/O. Not ALL members of the 403 family
have this.
console_generic - Uses the MPC860 SCCs and SMCs to to serial I/O
include - Currently empty
include - console.h: function declarations for console related functions
timer - Uses the 403 timebase register for timing
tests. Other PowerPCs have slightly different
timebase register definitions.
timer - Uses the MPC860 timebase register for timing
tests. It only uses the lower 32 bits
vectors - PowerPC 403 specific vector entry points.
vectors - MPC860 specific vector entry points.
Includes CPU dependant, application independant
handlers: alignment.

View File

@@ -10,16 +10,11 @@ From the comments at the head of vectors.s:
The first vector MUST be at address 0x????0100.
How this is achieved is dependant on the tool chain.
However the basic mechanism for ELF assemblers is to create a
section called ".vectors", which will be loaded to an address
between 0x????0000 and 0x????0100 (inclusive) via a link script.
The basic mechanism for XCOFF assemblers is to place it in the
normal text section, and arrange for this file to be located
at an appropriate position on the linker command line.
...
The variable 'PPC_VECTOR_FILE_BASE' must be defined to be the
offset from 0x????0000 to the first location in the file. This
will usually be 0x0000 or 0x0100.
will be either 0x0000 or 0xfff0.
The eth_comm BSP defines PPC_VECTOR_FILE_BASE to be 0x00000000
Andrew Bray 18/8/1995