RTEMS 6.1-rc5
|
Arcturus Networks uC DIMM ColdFire 5282
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.
This BSP is based on the work of: D. Peter Siddons Till Straumann Brett Swimley Jay Monkman
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.
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.
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.
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.