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 Puchheim,Germany submitted some improvements to the PPC403
support and added the helas403 BSP. support and added the helas403 BSP.
+ Jay Monkman (jmonkman@frasca.com) of Frasca submitted the + Jay Monkman (jmonkman@frasca.com) of Frasca International, Inc
eth_comm BSP and support for the MPC860 PowerPC CPU model. submitted the support for the Motorola MPC860 CPU including the
'eth_comm' BSP
+ Charles Gauthier <Charles.Gauthier@iit.nrc.ca> of the Institute for + Charles Gauthier <Charles.Gauthier@iit.nrc.ca> of the Institute for
Information Technology for the National Research Council of Canada Information Technology for the National Research Council of Canada

View File

@@ -27,10 +27,10 @@ NETWORKING: Ethernet (10 Mbps) on SCC1 (MPC860)
DRIVER INFORMATION DRIVER INFORMATION
================== ==================
CLOCK DRIVER: CLOCK DRIVER: Periodic Interval Timer
IOSUPP DRIVER: IOSUPP DRIVER: SCC1, SCC2, SCC3, SCC4, SMC1, SMC2
SHMSUPP: none SHMSUPP: none
TIMER DRIVER: TIMER DRIVER: Timebase register (lower 32 bits only)
STDIO STDIO
===== =====
@@ -62,7 +62,7 @@ On-chip resources:
BRG4 console BRG4 console
RTC RTC
PIT clock PIT clock
TB TB timer
DEC DEC
SWT SWT
*CS0 FLASH *CS0 FLASH
@@ -75,17 +75,17 @@ On-chip resources:
*CS7 DRAM bank 0 *CS7 DRAM bank 0
UPMA UPMA
UPMB UPMB
IRQ0 IRQ0 Voltage supervisor
IRQ1 IRQ1 ARINC-429
IRQ2 CAN2 IRQ2 CAN2
IRQ3 CAN0 IRQ3 CAN0
IRQ4 CAN1 IRQ4 CAN1
IRQ5 IRQ5
IRQ6 IRQ6 Multibus I
IRQ7 IRQ7
IRQ_LVL0 clock - PIT IRQ_LVL0 clock - PIT
IRQ_LVL1 IRQ_LVL1 CPM
IRQ_LVL2 IRQ_LVL2 FEC
IRQ_LVL3 IRQ_LVL3
IRQ_LVL4 IRQ_LVL4
IRQ_LVL5 IRQ_LVL5
@@ -98,3 +98,192 @@ Bus width: 16 bit Flash, 32 bit DRAM
FLASH: 128K - 1024K, 120ns FLASH: 128K - 1024K, 120ns
RAM: 2 - 32M DRAM SIMM, autodetects size and speed 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$ # $Id$
# #
Board: Board: eth_comm
CPU: include coprocessor if applicable CPU: Motorola MPC860T
Clock Speed: Clock Speed: 40 Mhz
Memory Configuration: SRAM, DRAM, cache, etc Memory Configuration: DRAM, 60ns
Wait States: Wait States:
Times Reported in: cycles, microseconds, etc Times Reported in: cycles, microseconds, etc
Timer Source: Count Down Timer, on-CPU cycle counter, etc Timer Source: Time Base register
Column X: Column X:
Column Y: Column Y:
# DESCRIPTION A B # DESCRIPTION A B
== ================================================================= ==== ==== == ================================================================= ==== ====
1 rtems_semaphore_create 20 1 rtems_semaphore_create 56
rtems_semaphore_delete 21 rtems_semaphore_delete 35
rtems_semaphore_obtain: available 15 rtems_semaphore_obtain: available 13
rtems_semaphore_obtain: not available -- NO_WAIT 15 rtems_semaphore_obtain: not available -- NO_WAIT 13
rtems_semaphore_release: no waiting tasks 16 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 4 rtems_task_restart: blocked task -- preempts caller 117
rtems_task_restart: ready task -- preempts caller 70 rtems_task_restart: ready task -- preempts caller 94
rtems_semaphore_release: task readied -- returns to caller 25 rtems_semaphore_release: task readied -- returns to caller 22
rtems_task_create 57 rtems_task_create 83
rtems_task_start 31 rtems_task_start 30
rtems_task_restart: suspended task -- returns to caller 36 rtems_task_restart: suspended task -- returns to caller 36
rtems_task_delete: suspended task 47 rtems_task_delete: suspended task 74
rtems_task_restart: ready task -- returns to caller 37 rtems_task_restart: ready task -- returns to caller 35
rtems_task_restart: blocked task -- returns to caller 46 rtems_task_restart: blocked task -- returns to caller 47
rtems_task_delete: blocked task 50 rtems_task_delete: blocked task 76
5 rtems_task_suspend: calling task 51 5 rtems_task_suspend: calling task 37
rtems_task_resume: task readied -- preempts caller 49 rtems_task_resume: task readied -- preempts caller 31
6 rtems_task_restart: calling task 59 6 rtems_task_restart: calling task 48
rtems_task_suspend: returns to caller 18 rtems_task_suspend: returns to caller 14
rtems_task_resume: task readied -- returns to caller 19 rtems_task_resume: task readied -- returns to caller 16
rtems_task_delete: ready task 50 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 8 rtems_task_set_priority: obtain current priority 12
rtems_task_set_priority: returns to caller 27 rtems_task_set_priority: returns to caller 23
rtems_task_mode: obtain current mode 5 rtems_task_mode: obtain current mode 5
rtems_task_mode: no reschedule 5 rtems_task_mode: no reschedule 7
rtems_task_mode: reschedule -- returns to caller 8 rtems_task_mode: reschedule -- returns to caller 14
rtems_task_mode: reschedule -- preempts caller 39 rtems_task_mode: reschedule -- preempts caller 43
rtems_task_set_note 13 rtems_task_set_note 13
rtems_task_get_note 13 rtems_task_get_note 12
rtems_clock_set 33 rtems_clock_set 28
rtems_clock_get 3 rtems_clock_get 0
9 rtems_message_queue_create 110 9 rtems_message_queue_create 110
rtems_message_queue_send: no waiting tasks 37 rtems_message_queue_send: no waiting tasks 28
rtems_message_queue_urgent: no waiting tasks 37 rtems_message_queue_urgent: no waiting tasks 28
rtems_message_queue_receive: available 31 rtems_message_queue_receive: available 26
rtems_message_queue_flush: no messages flushed 12 rtems_message_queue_flush: no messages flushed 13
rtems_message_queue_flush: messages flushed 16 rtems_message_queue_flush: messages flushed 14
rtems_message_queue_delete 26 rtems_message_queue_delete 45
10 rtems_message_queue_receive: not available -- NO_WAIT 15 10 rtems_message_queue_receive: not available -- NO_WAIT 15
rtems_message_queue_receive: not available -- caller blocks 62 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 15 rtems_event_receive: obtain current events 1
rtems_event_receive: not available -- NO_WAIT 12 rtems_event_receive: not available -- NO_WAIT 11
rtems_event_receive: not available -- caller blocks 56 rtems_event_receive: not available -- caller blocks 36
rtems_event_send: no task readied 12 rtems_event_send: no task readied 12
rtems_event_receive: available 12 rtems_event_receive: available 19
rtems_event_send: task readied -- returns to caller 24 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 19 rtems_signal_catch 31
rtems_signal_send: returns to caller 15 rtems_signal_send: returns to caller 21
rtems_signal_send: signal to self 18 rtems_signal_send: signal to self 39
exit ASR overhead: returns to calling task 22 exit ASR overhead: returns to calling task 30
exit ASR overhead: returns to preempting task 49 exit ASR overhead: returns to preempting task 33
20 rtems_partition_create 35 20 rtems_partition_create 59
rtems_region_create 23 rtems_region_create 37
rtems_partition_get_buffer: available 15 rtems_partition_get_buffer: available 19
rtems_partition_get_buffer: not available 13 rtems_partition_get_buffer: not available 12
rtems_partition_return_buffer 18 rtems_partition_return_buffer 21
rtems_partition_delete 16 rtems_partition_delete 20
rtems_region_get_segment: available 22 rtems_region_get_segment: available 20
rtems_region_get_segment: not available -- NO_WAIT 21 rtems_region_get_segment: not available -- NO_WAIT 24
rtems_region_return_segment: no waiting tasks 19 rtems_region_return_segment: no waiting tasks 21
rtems_region_get_segment: not available -- caller blocks 64 rtems_region_get_segment: not available -- caller blocks 76
rtems_region_return_segment: task readied -- preempts caller 74 rtems_region_return_segment: task readied -- preempts caller 82
rtems_region_return_segment: task readied -- returns to caller 44 rtems_region_return_segment: task readied -- returns to caller 55
rtems_region_delete 16 rtems_region_delete 20
rtems_io_initialize 2 rtems_io_initialize 1
rtems_io_open 1 rtems_io_open 1
rtems_io_close 1 rtems_io_close 1
rtems_io_read 1 rtems_io_read 1
rtems_io_write 1 rtems_io_write 1
rtems_io_control 1 rtems_io_control 1
21 rtems_task_ident 149 21 rtems_task_ident 84
rtems_message_queue_ident 145 rtems_message_queue_ident 82
rtems_semaphore_ident 156 rtems_semaphore_ident 94
rtems_partition_ident 145 rtems_partition_ident 82
rtems_region_ident 148 rtems_region_ident 84
rtems_port_ident 145 rtems_port_ident 82
rtems_timer_ident 145 rtems_timer_ident 82
rtems_rate_monotonic_ident 145 rtems_rate_monotonic_ident 82
22 rtems_message_queue_broadcast: task readied -- returns to caller 42 22 rtems_message_queue_broadcast: task readied -- returns to caller 81
rtems_message_queue_broadcast: no waiting tasks 17 rtems_message_queue_broadcast: no waiting tasks 22
rtems_message_queue_broadcast: task readied -- preempts caller 78 rtems_message_queue_broadcast: task readied -- preempts caller 76
23 rtems_timer_create 14 23 rtems_timer_create 11
rtems_timer_fire_after: inactive 22 rtems_timer_fire_after: inactive 20
rtems_timer_fire_after: active 24 rtems_timer_fire_after: active 22
rtems_timer_cancel: active 15 rtems_timer_cancel: active 12
rtems_timer_cancel: inactive 13 rtems_timer_cancel: inactive 11
rtems_timer_reset: inactive 21 rtems_timer_reset: inactive 18
rtems_timer_reset: active 23 rtems_timer_reset: active 21
rtems_timer_fire_when: inactive 34 rtems_timer_fire_when: inactive 24
rtems_timer_fire_when: active 34 rtems_timer_fire_when: active 24
rtems_timer_delete: active 19 rtems_timer_delete: active 16
rtems_timer_delete: inactive 17 rtems_timer_delete: inactive 14
rtems_task_wake_when 69 rtems_task_wake_when 49
24 rtems_task_wake_after: yield -- returns to caller 9 24 rtems_task_wake_after: yield -- returns to caller 8
rtems_task_wake_after: yields -- preempts caller 45 rtems_task_wake_after: yields -- preempts caller 30
25 rtems_clock_tick 4 25 rtems_clock_tick 35
26 _ISR_Disable 0 26 _ISR_Disable 24
_ISR_Flash 1 _ISR_Flash 0
_ISR_Enable 1 _ISR_Enable 1
_Thread_Disable_dispatch 0 _Thread_Disable_dispatch 1
_Thread_Enable_dispatch 7 _Thread_Enable_dispatch 7
_Thread_Set_state 11 _Thread_Set_state 7
_Thread_Disptach (NO FP) 31 _Thread_Disptach (NO FP) 31
context switch: no floating point contexts 21 context switch: no floating point contexts 22
context switch: self 10 context switch: self 9
context switch: to another task 10 context switch: to another task 10
context switch: restore 1st FP task 25 fp context switch: restore 1st FP task 24
fp context switch: save idle, restore idle 31 fp context switch: save idle, restore initialized 10
fp context switch: save idle, restore initialized 19 fp context switch: save idle, restore idle 23
fp context switch: save initialized, restore initialized 20 fp context switch: save initialized, restore initialized 10
_Thread_Resume 7 _Thread_Resume 11
_Thread_Unblock 7 _Thread_Unblock 6
_Thread_Ready 9 _Thread_Ready 10
_Thread_Get 4 _Thread_Get 3
_Semaphore_Get 2 _Semaphore_Get 2
_Thread_Get: invalid id 0 _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 27 interrupt entry overhead: returns to interrupted task 14
rtems_port_external_to_internal 11 interrupt exit overhead: returns to interrupted task 26
rtems_port_internal_to_external 11 interrupt entry overhead: returns to nested interrupt 7
rtems_port_delete 16 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 28 rtems_port_create 23
rtems_rate_monotonic_period: initiate period -- returns to caller 21 rtems_port_external_to_internal 10
rtems_rate_monotonic_period: obtain status 13 rtems_port_internal_to_external 10
rtems_rate_monotonic_cancel 16 rtems_port_delete 21
rtems_rate_monotonic_delete: inactive 18
rtems_rate_monotonic_delete: active 20 29 rtems_rate_monotonic_create 43
rtems_rate_monotonic_period: conclude periods -- caller blocks 53 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. 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. generate RTEMS clock ticks.
console - Uses the 403 Internal serial port to do RTEMS console_generic - Uses the MPC860 SCCs and SMCs to to serial I/O
console I/O. Not ALL members of the 403 family
have this.
include - Currently empty include - console.h: function declarations for console related functions
timer - Uses the 403 timebase register for timing timer - Uses the MPC860 timebase register for timing
tests. Other PowerPCs have slightly different tests. It only uses the lower 32 bits
timebase register definitions.
vectors - PowerPC 403 specific vector entry points. vectors - MPC860 specific vector entry points.
Includes CPU dependant, application independant Includes CPU dependant, application independant
handlers: alignment. 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. The first vector MUST be at address 0x????0100.
How this is achieved is dependant on the tool chain. 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 The variable 'PPC_VECTOR_FILE_BASE' must be defined to be the
offset from 0x????0000 to the first location in the file. This 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