summaryrefslogtreecommitdiffstats
path: root/bsps/m68k/uC5282
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-25 15:06:08 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-04-26 07:17:57 +0200
commiteb36d1198cdf9dc1e2f776ef6e1e38755f6d13c5 (patch)
tree14177ad7a58c06a3c537d1e55dae7bc369a1a4b9 /bsps/m68k/uC5282
parentbsps: Remove unmaintained times files (diff)
downloadrtems-eb36d1198cdf9dc1e2f776ef6e1e38755f6d13c5.tar.bz2
bsps: Move documentation, etc. files to bsps
This patch is a part of the BSP source reorganization. Update #3285.
Diffstat (limited to 'bsps/m68k/uC5282')
-rw-r--r--bsps/m68k/uC5282/README236
-rw-r--r--bsps/m68k/uC5282/TIMES305
2 files changed, 541 insertions, 0 deletions
diff --git a/bsps/m68k/uC5282/README b/bsps/m68k/uC5282/README
new file mode 100644
index 0000000000..e237c695bc
--- /dev/null
+++ b/bsps/m68k/uC5282/README
@@ -0,0 +1,236 @@
+Description: Arcturus Networks uC DIMM ColdFire 5282
+============
+ CPU: MCF5282, 64MHz
+ RAM: 16M
+SRAM: 64k (BSP places FEC buffer descriptors here)
+ 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
+ Till Straumann
+ Brett Swimley
+ Jay Monkman
+
+TODO:
+=====
+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.....
+
+I/O pin restrictions make simultaneous operation of I2C, CAN and UART2
+impossible. The BSP configures UART2 to use the CAN pins and leaves
+the I2C pins available for use.
+
+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
+
+DEBUG MONITOR: Arcturus bootloader
+
+PERIPHERALS
+===========
+TIMERS: Four PIT (RTEMS clock is PIT3), Four Timers
+ RESOLUTION: 1 microsecond
+SERIAL PORTS: Internal UART 0, 1 and 2
+REAL-TIME CLOCK: none
+DMA: none
+VIDEO: none
+SCSI: none
+NETWORKING: Internal 10/100Mbs FEC, 100 Mb/s, full/half-duplex
+
+DRIVER INFORMATION
+==================
+CLOCK DRIVER: PIT3
+IOSUPP DRIVER: none
+SHMSUPP: none
+TIMER DRIVER: TIMER3
+TTY DRIVER: UART0, 1 and 2
+
+STDIO
+=====
+PORT: UART0 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 maps is produced
+ followed by a prompt.
+
+2) (first time only)
+ Set the uC5282 board Internet configuration:
+ setenv IPADDR0 www.xxx.yyy.zzz (Your board's address)
+ setenv NETMASK ppp.qqq.rrr.sss (Your local network address mask)
+ setenv HOSTNAME somename (Your board's name)
+
+3) Type 'tftp<CR>'
+ This forces the network link to half-duplex. If your network link is
+ locked at full duplex you'll have to find another port!
+ The RTEMS network driver can be forced to 100 Mbs/full-duplex by setting
+ the bootstrap environment variable IPADDR0_100FULL to Y. The driver can
+ be forced to 10 Mbs/half-duplex by setting the bootstrap environment
+ variable IPADDR0_10HALF to Y.
+
+4) Run 'tftp' on your host machine:
+ tftp> binary
+ tftp> connect www.xxx.yyy.zzz (Your ucDIMM's address)
+ tftp> put someFile.exe (someFile.boot for the EPICS build system)
+
+5) When the file has downloaded press the <ESC> key to terminate
+ the uCDIMM tftp command.
+
+6) Type 'goram<CR>' to start the downloaded program, or type 'program<CR>'
+to burn the code onto the uCDIMM flash.
+
+Clock Speed Determination Algorithm
+===================================
+Till Straumann submitted a patch to provide more dynamic clock speed
+selection.
+
+Currently, the uC5282 BSP requires relinking the application with a
+special linker flag in order to make it work with 80MHz boards (breaking
+run-time compatibility with 64MHz variants).
+
+The change aims adds support for run-time guessing/setting of
+the system-clock frequency:
+
+1) If uCbootloader environment variable SYS_CLOCK_SPEED is set to a
+non-zero number then the BSP assumes this number to specify the clock
+frequency in Hz.
+
+2) If 1) yields no non-zero frequency then the linker-provided symbol
+_CPUClockSpeed is assumed to specify the clock frequency (in Hz). This
+is the traditional behavior but the default value of _CPUClockSpeed
+was changed from 64000000 to 0 (in order to let step 3) do it's work
+by default).
+
+3) If neither 1) nor 2) yield a non-zero frequency then assume a PLL
+reference frequency (in Hz) as defined by the linker-provided symbol
+'_PLLRefClockSpeed' (which defaults to 8000000) and compute the system
+clock frequency from the divisor/multiplier settings in the SYNCR
+register.
+
+We have both, 64MHz and 80MHz variants and both use a PLL reference of
+8MHz so that run-time heuristics + detection 3) work fine.
+
+EPICS Bootstrap Information
+===========================
+The EPICS startup code uses the following environment variables. If an
+optional environment variable is missing the value in parentheses will be used.
+All Internet addresses must be given in 'dotted-decimal' format.
+HWADDR0 - Ethernet hardware address.
+IPADDR0 - Internet address (192.168.0.2).
+NETMASK - Local network address mask (255.255.252.0).
+HOSTNAME - Internet host name (iocNobody).
+GATEWAY - Internet address of gateway machine (NULL).
+SERVER - Internet address of NFS server (192.168.0.1).
+NAMESERVER - Internet address of DNS server (SERVER).
+DOMAIN - DNS domain name (precompiled value from CONFIG_SITE).
+NTPSERVER - Internet address of NTP server (SERVER).
+BOOTFILE - Path to executable (epics/iocNobody/bin/RTEMS-uC5282/myApp.boot).
+CMDLINE - Path to startup script (epics/iocBoot/iocNobody/st.cmd).
+NFSMOUNT - NFS information: www.xxx.yyy.zzz:/remote/path /localpath
+ A : can also be used to separate the remote and local paths.
+ If NFSMOUNT is not set, SERVER will be used as the NFS server,
+ and the remote and local paths will be taken from the first
+ component of CMDLINE. If CMDLINE does not begin with a /
+ then '/tftpboot' is prepended to the remote path. This allows
+ a remote TFTP and NFS server to be handled transaparently.
+
+
+============================================================================
+
+ 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* (devLib 'VME' A24 space) | 30FF FFFF
+3100 0000 | CS2* (devLib 'VME' A32 and A16 space) x| 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
+ +--------------------------------------------------+
+
+x - Final 16-bit location of CS2* space is reserved for FPGA interrupt status.
+
+============================================================================
+
+ Interrupt map
+
+External interrupt lines (priority is fixed between 3 and 4):
+ IRQ7* - Ethernet Transceiver interrupts
+ IRQ1* - FPGA ('VME') interrupts.
++-----+-----------------------------------------------------------------------+
+| | PRIORITY |
++-----+--------+--------+--------+--------+--------+--------+--------+--------+
+|LEVEL| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
++-----+--------+--------+--------+--------+--------+--------+--------+--------+
+| 7 | | | | | | | | |
++-----+--------+--------+--------+--------+--------+--------+--------+--------+
+| 6 | | | | | | | | |
++-----+--------+--------+--------+--------+--------+--------+--------+--------+
+| 5 | | | | | | | | |
++-----+--------+--------+--------+--------+--------+--------+--------+--------+
+| 4 | FEC RX | FEC TX | | | | | | PIT |
++-----+--------+--------+--------+--------+--------+--------+--------+--------+
+| 3 | UART 0 | UART 1 | UART 2 | | | | | |
++-----+--------+--------+--------+--------+--------+--------+--------+--------+
+| 2 | | | | | | | | |
++-----+--------+--------+--------+--------+--------+--------+--------+--------+
+| 1 | | | | | | | | |
++-----+--------+--------+--------+--------+--------+--------+--------+--------+
+
+============================================================================
+
diff --git a/bsps/m68k/uC5282/TIMES b/bsps/m68k/uC5282/TIMES
new file mode 100644
index 0000000000..b2cdecd28a
--- /dev/null
+++ b/bsps/m68k/uC5282/TIMES
@@ -0,0 +1,305 @@
+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 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 ***