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.