Back to home page

LXR

 
 

    


Warning, /bsps/powerpc/ss555/README.md is written in an unsupported language. File is not indexed.

0001 Intec SS555
0002 ===========
0003 The SS555 port was sponsored by Defence Research and Development 
0004 Canada - Suffield, and is Copyright (C) 2004, Real-Time Systems Inc.
0005 
0006 Please send any comments, improvements, or bug reports to:
0007 
0008 David Querbach
0009 querbach@realtime.bc.ca
0010 
0011 
0012 Summary
0013 -------
0014 ```
0015 BSP NAME:           ss555
0016 BOARD:              Intec Automation Inc. SS555
0017 BUS:                None 
0018 CPU FAMILY:         PowerPC
0019 CPU:                PowerPC MPC555
0020 COPROCESSORS:       Built-in Motorola TPU
0021 MODE:               32 bit mode
0022 
0023 DEBUG MONITOR:      None
0024 ```
0025 
0026 PERIPHERALS
0027 -----------
0028 ```
0029 TIMERS:             PIT / Timebase
0030   RESOLUTION:       1 microsecond (4 MHz crystal / 4)
0031 SERIAL PORTS:       2 SCI
0032 REAL-TIME CLOCK:    On-chip.
0033 DMA:                None.
0034 VIDEO:              None.
0035 SCSI:               None.
0036 NETWORKING:         None.
0037 ```
0038 
0039 DRIVER INFORMATION
0040 ------------------
0041 ```
0042 CLOCK DRIVER:       yes
0043 CONSOLE DRIVER:     yes
0044 SHMSUPP:            N/A
0045 TIMER DRIVER:       yes
0046 NETWORK DRIVER:     no
0047 ```
0048 
0049 NOTES
0050 -----
0051 ```
0052 On-chip resources:
0053         SCI1            serial port
0054         SCI2            serial port (console)
0055         PIT             clock
0056         TB              timing test support
0057         DEC
0058         SWT             watchdog timer -- enable in startup/iss555.c
0059         *CS0            external 512k 2-1-1-1 Burst SRAM
0060         *CS1
0061         *CS2
0062         *CS3            CPLD
0063         IRQ0
0064         IRQ1
0065         IRQ2            
0066         IRQ3            
0067         IRQ4            
0068         IRQ5    
0069         IRQ6
0070         IRQ7
0071         IRQ_LVL0        
0072         IRQ_LVL1
0073         IRQ_LVL2
0074         IRQ_LVL3
0075         IRQ_LVL4
0076         IRQ_LVL5        SCI
0077         IRQ_LVL6        PIT
0078         IRQ_LVL7
0079 ```
0080 
0081 Board description
0082 -----------------
0083 ``` 
0084 Clock rate:     40 MHz development/embeddable board
0085 Bus width:      32-bit on-board RAM, 16-bit off-board I/O
0086 FLASH:          512k on-chip
0087 RAM:            512k 2-1-1-1 burst SRAM
0088 ```
0089 
0090 
0091 Installation
0092 ------------
0093 The ss555 port uses the Intec SS555's external RAM in two different ways,
0094 depending on whether or not it is built for debugging by giving the
0095 VARIANT=DEBUG switch to make:
0096 
0097 ```shell
0098         make VARIANT=DEBUG all
0099 ```
0100 
0101 1.  In the debugging case, the linker script concanttenates the .text,
0102 .data, and .bss sections starting at location zero, so they all can be
0103 loaded into the external RAM for debugging.  We assume that the debugger
0104 disables the internal Flash ROM and enables the external RAM before loading
0105 the code into the external RAM.
0106 
0107 2.  In the normal (non-debugging) case, the linker script still places the
0108 .text section near zero, but places the start of the .data and .bss sections
0109 at the start location of the MPC555's internal RAM.  The system startup code
0110 then configures the external RAM just after the internal RAM in memory,
0111 forming one large block from the two RAM devices.
0112 
0113 
0114 Console driver
0115 --------------
0116 This BSP includes an termios-capable asynchronous serial line driver that
0117 supports SCI1 and SCI2. The RTEMS console is selected at configuration time
0118 with the CONSOLE_MINOR variable (see .../ss555/configure.ac).  We default to
0119 SCI2 for the console, since SCI1 has some extra features which may be
0120 desired for application use.
0121 
0122 The BSP console supports three different modes of operation:
0123 
0124   1. polled I/O done with termios support,
0125   2. polled I/O done without termios support,
0126   3. interrupt-driven I/O with termios support.
0127      
0128 The mode of operation of the serial driver is determined at configure time in
0129 part by the value of the UARTS_IO_MODE variable (see .../ss555/configure.ac).
0130 
0131   0 - polled I/O.
0132   1 - interrupt-driven I/O.
0133   
0134 Also, set the value of UARTS_USE_TERMIOS to select whether termios should be
0135 used to perform buffering and input/output processing. Without termios
0136 support, input processing is limited to the substitution of LF for a
0137 received CR, and output processing is limited to the transmission of a CR
0138 following the transmission of a LF. The choices for UARTS_USE_TERMIOS are:
0139 
0140   0 - do not use termios
0141   1 - use termios
0142 
0143 In most real-time applications, the driver should be configured to use
0144 termios and interrupt-driven I/O. Special requirements may dictate otherwise.
0145 
0146 Polled I/O must be used when running the timing tests. It must also be used
0147 to run some other tests and some samples, such as the cdtest. Some tests
0148 change the interrupt mask and will hang interrupt-driven I/O indefinitely.
0149 Others, such as cdtest, perform console output from the static constructors
0150 before the console is opened, causing the test to hang. Still other tests
0151 produce output that is supposed to be in some specific order. For these
0152 tests, termios should not be used, as termios buffers output and the
0153 transmission of the buffers occur at somewhat unpredictable times.
0154 
0155 The real solution is to fix the tests so that they work with interrupt-driven
0156 I/O and termios.
0157 
0158 
0159 printk() and debug output
0160 -------------------------
0161 The implementation of printk() in RTEMS is mostly independent of most system
0162 services. The printk() function can therefore be used to print messages to a
0163 debug console, particularly when debugging startup code or device drivers,
0164 i.e. code that runs before the console driver is opened or that runs with
0165 interrupts disabled.
0166 
0167 Support is provided to send printk output to either port. Specify the
0168 desired port at configure time by setting the value of PRINTK_MINOR to one
0169 of SCI1_MINOR or SCI2_MINOR.
0170 
0171 printk() always uses polled I/O, and never uses termios.
0172 
0173 If the printk() port is opened by RTEMS, then UARTS_IO_MODE must be set for
0174 polled I/O, otherwise the I/O functions will be in conflict.  Using printk()
0175 before the port is initialized is, of course, not possible.  This
0176 initialization occurs in console_initialize(), which is called by
0177 rtems_initialize_executive_early().
0178 
0179 
0180 Watchdog Timer
0181 --------------
0182 The MPC555 watchdog timer can be enabled at configuration time by defining
0183 the WATCHDOG_TIMEOUT variable.  This variable sets the watchdog timeout
0184 period in steps of
0185 
0186           2048          2048
0187         ---------  =  ---------  =  51.2 usec
0188          Fsystem       40 MHz
0189 
0190 or about 1/20 msec.  When WATCHDOG_TIMEOUT is left undefined, the watchdog
0191 timer is disabled.
0192 
0193 
0194 Miscellaneous
0195 -------------
0196 Most code came from the mbx8xx port, except for the floating-point handling
0197 which came from the mpc8260ads.
0198 
0199 
0200 Host System
0201 -----------
0202 The port was developed on an x86 box running Debian 3.0.  The toolchain was
0203 built from the sources at rtems.org, except for the autotools which came
0204 from the Debian distribution.
0205 
0206 
0207 Test Configuration
0208 ------------------
0209 ```
0210 Board:                Intec SS555 v1.1
0211 CPU:                  Motorola MPC555LFMZP40, mask 1K83H
0212 Clock Speed:          Crystal 4.0 MHz, CPU 40.0 MHz
0213 RAM:                  512K bytes of 2-1-1-1 Burst SRAM
0214 Times Reported in:    Microseconds
0215 Timer Source:         Timebase clock
0216 GCC Flags:            -O4 -fno-keep-inline-functions -mcpu=(821/860) 
0217 Console:              Operates in polled mode on SMC2. No I/O through EPPC-Bug.    
0218 ```
0219 
0220 Test Results
0221 ------------
0222 Single processor tests:  
0223   All tests passed, except that:
0224     - sp09 aborts due to memory shortage
0225     - sp20 needs to be run with output buffering enabled (see
0226       buffer_test_io.h)
0227 
0228 Multi-processor tests:  
0229   Not applicable.
0230 
0231 Library tests:
0232   All tests passed.  Note that the termios test only works if the system is
0233   rebuilt with termios enabled.                         
0234 
0235 Posix tests:
0236   All tests passed, except that:
0237     - the message queue test failed with "errno (91 - File or path name too
0238       long)"
0239 
0240 Timing tests:
0241   Due to memory limitations, many of the tests will not run unless you set
0242   OPERATION_COUNT=20 at configuration time.
0243 
0244   To run tm27 (the interrupt latency timer test), short CN5-48 to CN5-50 on
0245   the SS555 board.
0246 
0247   All tests run cleanly, except for tm26, which gives a "PANIC 12" after it
0248   exits.  This doesn't seem to cause a problem otherwise.
0249 
0250   See the times file for the results of the timing tests.
0251 
0252 Network tests:  
0253   Not applicable.
0254 
0255 Sample programs:
0256   These run correctly, except that:
0257     - The "minimum" sample is not designed to run properly on any system.
0258     - The loopback, fileio, unilimited, and pppd tests fail due to memory
0259       limitations.
0260     - The paranoia program dies on a floating-point assist exception.
0261 
0262 Various non-BSP-dependent support routines.
0263 
0264 timer -         Support for the RTEMS timer tick, using the Programmable
0265                 Interval Timer (PIT).
0266 
0267 console-generic - Console support via the on-chip dual SCI port in the QSMCM
0268                 module.
0269 
0270 exception -     Installation and deinstallation of exception handlers, by
0271                 manipulation of exception vector table.
0272 
0273 irq -           Exception handler for all external and decrementer interrupts. 
0274                 Generalized interrupt handler which calls specific handlers
0275                 via entries in the interrupt connection table.  Interrupt
0276                 connection table maintenance routines.  USIU and UIMB
0277                 interrupt masking and level control.
0278 
0279 timer -         Support for RTEMS timer tests, using the PowerPC timebase
0280                 (TB) registers.
0281 
0282 vectors -       Compressed MPC5XX exception vector table, exception handler
0283                 prologues, default exception handler.  Code to initialize
0284                 table with default handlers.