summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/m68k/uC5282/README
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/m68k/uC5282/README')
-rw-r--r--c/src/lib/libbsp/m68k/uC5282/README461
1 files changed, 461 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/m68k/uC5282/README b/c/src/lib/libbsp/m68k/uC5282/README
new file mode 100644
index 0000000000..94bd8b5005
--- /dev/null
+++ b/c/src/lib/libbsp/m68k/uC5282/README
@@ -0,0 +1,461 @@
+#
+# $Id$
+#
+
+Description: Arcturus Networks uC DIMM ColdFire 5282
+============
+CPU: MCF5282 @64MHz
+RAM: 16M
+ROM: 4M
+
+This is a credit-card sized board in a DIMM format. It is part of a family which
+includes Dragonball and Coldfire CPUs, with a standardized DIMM-based bus.
+
+ACKNOWLEDGEMENTS:
+=================
+This BSP is based on the work of:
+ D. Peter Siddons
+ Brett Swimley
+ Jay Monkman
+
+TODO:
+=====
+Make a clean exit routine to return to Arcturus monitor
+
+Make a real kprintf which doesn't rely on interrupts being operational
+
+The bsp relies on the Arcturus monitor to set up DRAM and all chip selects.
+This seems OK to me, but others may find it lame.....
+
+
+BSP NAME: uC5282
+BOARD: Arcturus Netrworks uCdimm 5282
+BUS: Arcturus DIMM bus, A24/D16, plus peripherals.
+CPU FAMILY: ColdFire 5282
+CPU: MCF5282
+COPROCESSORS: N/A
+MODE: 16 bit mode
+
+DEBUG MONITOR: Arcturus bootloader
+
+PERIPHERALS
+===========
+TIMERS: Four PIT (RTEMS clock is PIT3), Four Timers
+ RESOLUTION: 1 microsecond
+SERIAL PORTS: Internal UART 1, 2 and 3
+REAL-TIME CLOCK: none
+DMA: none
+VIDEO: none
+SCSI: none
+NETWORKING: Internal 10/100MHz FEC
+
+DRIVER INFORMATION
+==================
+CLOCK DRIVER: PIT3
+IOSUPP DRIVER: none
+SHMSUPP: none
+TIMER DRIVER: TIMER3
+TTY DRIVER: UART1, 2 and 3
+
+STDIO
+=====
+PORT: UART1 Terminal
+ELECTRICAL: RS-232
+BAUD: 9600
+BITS PER CHARACTER: 8
+PARITY: None
+STOP BITS: 1
+
+Downloading the image to the board.
+===================================
+
+The bootable image is generated by the make-exe target in the bsp makefile. It
+generates a simple stripped binary file which is downloaded over the ethernet
+port into RAM then executed or programmed into flash memory.
+
+1) Power up the uC5282 board. A dump of some memory map is produced
+ followed by a prompt.
+
+2) type 'tftp<CR>'
+
+3) Run 'tftp' on your host machine:
+ tftp> binary
+ tftp> connect www.xxx.yyy.zzz (You're ucDIMM's address)
+ tftp> put someFile.exe
+
+4) When the file has downloaded press the <ESC> key to terminate
+ the uCDIMM tftp command.
+
+5) Type 'goram<CR>' to start the downloaded program, or type 'program<CR>'
+to burn the code onto the uCDIMM flash.
+
+============================================================================
+
+ Memory map as set up by dBUG bootstrap and BSP initialization
+
+ +--------------------------------------------------+
+0000 0000 | 16 MByte SDRAM | 00FF FFFF
+0100 0000 | --------------------------------------------- |
+ | Address space for future SDRAM expansion |
+ . .
+ . .
+ . .
+ | | 0FFF FFFF
+ +--------------------------------------------------+
+1000 0000 | External 4 MByte flash memory |
+ . .
+ . .
+ . .
+ | | 1FFF FFFF
+ +--------------------------------------------------+
+2000 0000 | 64 kByte on-chip SRAM (RAMBAR) |
+ . .
+ . .
+ . .
+ | | 2FFF FFFF
+ +--------------------------------------------------+
+3000 0000 | CS1* space (First 'VME' A24/D16 space) | 30FF FFFF
+3100 0000 | CS2* space (Second 'VME' A24/D16 space) | 31FF FFFF
+ . .
+ . .
+ . .
+ | | 3FFF FFFF
+ +--------------------------------------------------+
+4000 0000 | Internal peripheral system (IPSBAR) |
+ . .
+4400 0000 | Backdoor access to on-chip flash |
+ . .
+ . .
+ . .
+ | | 4FFF FFFF
+ +--------------------------------------------------+
+ . .
+ . .
+ . .
+ +--------------------------------------------------+
+f000 0000 | 512 kByte on-chip flash (FLASHBAR) |
+ . .
+ . .
+ . .
+ | | fFFF FFFF
+ +--------------------------------------------------+
+
+
+TIMING TESTS 2005-01-28
+========================
+
+*** TIME TEST 1 ***
+rtems_semaphore_create 19
+rtems_semaphore_delete 21
+rtems_semaphore_obtain: available 4
+rtems_semaphore_obtain: not available -- NO_WAIT 5
+rtems_semaphore_release: no waiting tasks 12
+*** END OF TEST 1 ***
+
+*** TIME TEST 2 ***
+rtems_semaphore_obtain: not available -- caller blocks 34
+*** END OF TEST 2 ***
+
+*** TIME TEST 3 ***
+rtems_semaphore_release: task readied -- preempts caller 27
+*** END OF TEST 3 ***
+
+*** TIME TEST 4 ***
+rtems_task_restart: blocked task -- preempts caller 54
+rtems_task_restart: ready task -- preempts caller 52
+rtems_semaphore_release: task readied -- returns to caller 18
+rtems_task_create 87
+rtems_task_start 24
+rtems_task_restart: suspended task -- returns to caller 27
+rtems_task_delete: suspended task 66
+rtems_task_restart: ready task -- returns to caller 28
+rtems_task_restart: blocked task -- returns to caller 38
+rtems_task_delete: blocked task 69
+*** END OF TEST 4 ***
+
+*** TIME TEST 5 ***
+rtems_task_suspend: calling task 23
+rtems_task_resume: task readied -- preempts caller 22
+*** END OF TEST 5 ***
+
+*** TIME TEST 6 ***
+rtems_task_restart: calling task 30
+rtems_task_suspend: returns to caller 9
+rtems_task_resume: task readied -- returns to caller 12
+rtems_task_delete: ready task 69
+*** END OF TEST 6 ***
+
+*** TIME TEST 7 ***
+rtems_task_restart: suspended task -- preempts caller 44
+*** END OF TEST 7 ***
+
+*** TIME TEST 8 ***
+rtems_task_set_priority: obtain current priority 6
+rtems_task_set_priority: returns to caller 17
+rtems_task_mode: obtain current mode 3
+rtems_task_mode: no reschedule 3
+rtems_task_mode: reschedule -- returns to caller 8
+rtems_task_mode: reschedule -- preempts caller 22
+rtems_task_set_note 6
+rtems_task_get_note 6
+rtems_clock_set 22
+rtems_clock_get 1
+*** END OF TEST 8 ***
+
+*** TIME TEST 9 ***
+rtems_message_queue_create 55
+rtems_message_queue_send: no waiting tasks 20
+rtems_message_queue_urgent: no waiting tasks 21
+rtems_message_queue_receive: available 20
+rtems_message_queue_flush: no messages flushed 8
+rtems_message_queue_flush: messages flushed 12
+rtems_message_queue_delete 29
+*** END OF TEST 9 ***
+
+*** TIME TEST 10 ***
+rtems_message_queue_receive: not available -- NO_WAIT 10
+rtems_message_queue_receive: not available -- caller blocks 38
+*** END OF TEST 10 ***
+
+*** TIME TEST 11 ***
+rtems_message_queue_send: task readied -- preempts caller 37
+*** END OF TEST 11 ***
+
+*** TIME TEST 12 ***
+rtems_message_queue_send: task readied -- returns to caller 23
+*** END OF TEST 12 ***
+
+*** TIME TEST 13 ***
+rtems_message_queue_urgent: task readied -- preempts caller 35
+*** END OF TEST 13 ***
+
+*** TIME TEST 14 ***
+rtems_message_queue_urgent: task readied -- returns to caller 24
+*** END OF TEST 14 ***
+
+*** TIME TEST 15 ***
+rtems_event_receive: obtain current events 0
+rtems_event_receive: not available -- NO_WAIT 5
+rtems_event_receive: not available -- caller blocks 28
+rtems_event_send: no task readied 5
+rtems_event_receive: available 9
+rtems_event_send: task readied -- returns to caller 16
+*** END OF TEST 15 ***
+
+*** TIME TEST 16 ***
+rtems_event_send: task readied -- preempts caller 27
+*** END OF TEST 16 ***
+
+*** TIME TEST 17 ***
+rtems_task_set_priority: preempts caller 39
+*** END OF TEST 17 ***
+
+*** TIME TEST 18 ***
+rtems_task_delete: calling task 83
+*** END OF TEST 18 ***
+
+*** TIME TEST 19 ***
+rtems_signal_catch 5
+rtems_signal_send: returns to caller 12
+rtems_signal_send: signal to self 20
+exit ASR overhead: returns to calling task 15
+exit ASR overhead: returns to preempting task 18
+*** END OF TEST 19 ***
+
+*** TIME TEST 20 ***
+rtems_partition_create 20
+rtems_region_create 40
+rtems_partition_get_buffer: available 11
+rtems_partition_get_buffer: not available 7
+rtems_partition_return_buffer 12
+rtems_partition_delete 11
+rtems_region_get_segment: available 28
+rtems_region_get_segment: not available -- NO_WAIT 29
+rtems_region_return_segment: no waiting tasks 29
+rtems_region_get_segment: not available -- caller blocks 55
+rtems_region_return_segment: task readied -- preempts caller 72
+rtems_region_return_segment: task readied -- returns to caller 58
+rtems_region_delete 25
+rtems_io_initialize 1
+rtems_io_open 1
+rtems_io_close 1
+rtems_io_read 1
+rtems_io_write 1
+rtems_io_control 1
+*** END OF TEST 20 ***
+
+*** TIME TEST 21 ***
+rtems_task_ident 60
+rtems_message_queue_ident 60
+rtems_semaphore_ident 69
+rtems_partition_ident 59
+rtems_region_ident 60
+rtems_port_ident 59
+rtems_timer_ident 61
+rtems_rate_monotonic_ident 60
+*** END OF TEST 21 ***
+
+*** TIME TEST 22 ***
+rtems_message_queue_broadcast: task readied -- returns to caller 32
+rtems_message_queue_broadcast: no waiting tasks 14
+rtems_message_queue_broadcast: task readied -- preempts caller 39
+*** END OF TEST 22 ***
+
+*** TIME TEST 23 ***
+rtems_timer_create 8
+rtems_timer_fire_after: inactive 12
+rtems_timer_fire_after: active 12
+rtems_timer_cancel: active 9
+rtems_timer_cancel: inactive 8
+rtems_timer_reset: inactive 14
+rtems_timer_reset: active 15
+rtems_timer_fire_when: inactive 21
+rtems_timer_fire_when: active 21
+rtems_timer_delete: active 12
+rtems_timer_delete: inactive 11
+rtems_task_wake_when 35
+*** END OF TEST 23 ***
+
+*** TIME TEST 24 ***
+rtems_task_wake_after: yield -- returns to caller 3
+rtems_task_wake_after: yields -- preempts caller 18
+*** END OF TEST 24 ***
+
+*** TIME TEST 25 ***
+rtems_clock_tick 7
+*** END OF TEST 25 ***
+
+*** TIME TEST 26 ***
+_ISR_Disable 1
+_ISR_Flash 0
+_ISR_Enable 0
+_Thread_Disable_dispatch 1
+_Thread_Enable_dispatch 3
+_Thread_Set_state 7
+_Thread_Disptach (NO FP) 16
+context switch: no floating point contexts 12
+context switch: self 2
+context switch: to another task 1
+fp context switch: restore 1st FP task 14
+fp context switch: save idle, restore initialized 3
+fp context switch: save idle, restore idle 13
+fp context switch: save initialized, restore initialized 2
+_Thread_Resume 7
+_Thread_Unblock 6
+_Thread_Ready 5
+_Thread_Get 1
+_Semaphore_Get 1
+_Thread_Get: invalid id 0
+*** END OF TEST 26 ***
+
+*** TIME TEST 27 ***
+interrupt entry overhead: returns to interrupted task 3
+interrupt exit overhead: returns to interrupted task 3
+interrupt entry overhead: returns to nested interrupt 2
+interrupt exit overhead: returns to nested interrupt 2
+interrupt entry overhead: returns to preempting task 4
+interrupt exit overhead: returns to preempting task 20
+*** END OF TEST 27 ***
+
+*** TIME TEST 28 ***
+rtems_port_create 12
+rtems_port_external_to_internal 5
+rtems_port_internal_to_external 6
+rtems_port_delete 12
+*** END OF TEST 28 ***
+
+*** TIME TEST 29 ***
+rtems_rate_monotonic_create 13
+rtems_rate_monotonic_period: initiate period -- returns to caller 20
+rtems_rate_monotonic_period: obtain status 10
+rtems_rate_monotonic_cancel 13
+rtems_rate_monotonic_delete: inactive 17
+rtems_rate_monotonic_delete: active 16
+rtems_rate_monotonic_period: conclude periods -- caller blocks 24
+*** END OF TEST 29 ***
+
+*** TIME CHECKER ***
+Units may not be in microseconds for this test!!!
+0 100000
+Total time = 0
+Average time = 0
+NULL timer stopped at 0
+LOOP (1000) timer stopped at 188
+LOOP (10000) timer stopped at 1875
+LOOP (50000) timer stopped at 9375
+LOOP (100000) timer stopped at 18750
+*** END OF TIME CHECKER ***
+
+*** TIME TEST OVERHEAD ***
+rtems_initialize_executive 0
+rtems_shutdown_executive 0
+rtems_task_create 0
+rtems_task_ident 0
+rtems_task_start 0
+rtems_task_restart 0
+rtems_task_delete 0
+rtems_task_suspend 0
+rtems_task_resume 0
+rtems_task_set_priority 0
+rtems_task_mode 0
+rtems_task_get_note 0
+rtems_task_set_note 0
+rtems_task_wake_when 1
+rtems_task_wake_after 0
+rtems_interrupt_catch 0
+rtems_clock_get 1
+rtems_clock_set 1
+rtems_clock_tick 0
+rtems_timer_create 0
+rtems_timer_delete 0
+rtems_timer_ident 0
+rtems_timer_fire_after 1
+rtems_timer_fire_when 1
+rtems_timer_reset 0
+rtems_timer_cancel 0
+rtems_semaphore_create 0
+rtems_semaphore_delete 0
+rtems_semaphore_ident 0
+rtems_semaphore_obtain 0
+rtems_semaphore_release 0
+rtems_message_queue_create 0
+rtems_message_queue_ident 0
+rtems_message_queue_delete 0
+rtems_message_queue_send 0
+rtems_message_queue_urgent 0
+rtems_message_queue_broadcast 0
+rtems_message_queue_receive 0
+rtems_message_queue_flush 0
+rtems_event_send 0
+rtems_event_receive 0
+rtems_signal_catch 0
+rtems_signal_send 0
+rtems_partition_create 0
+rtems_partition_ident 0
+rtems_partition_delete 0
+rtems_partition_get_buffer 0
+rtems_partition_return_buffer 0
+rtems_region_create 0
+rtems_region_ident 0
+rtems_region_delete 0
+rtems_region_get_segment 0
+rtems_region_return_segment 0
+rtems_port_create 0
+rtems_port_ident 0
+rtems_port_delete 0
+rtems_port_external_to_internal 0
+rtems_port_internal_to_external 0
+rtems_io_initialize 0
+rtems_io_open 0
+rtems_io_close 0
+rtems_io_read 0
+rtems_io_write 0
+rtems_io_control 0
+rtems_fatal_error_occurred 0
+rtems_rate_monotonic_create 0
+rtems_rate_monotonic_ident 0
+rtems_rate_monotonic_delete 0
+rtems_rate_monotonic_cancel 0
+rtems_rate_monotonic_period 0
+rtems_multiprocessing_announce 0
+*** END OF TIME OVERHEAD ***