source: rtems/c/src/lib/libbsp/powerpc/ss555/README @ a800d09c

4.104.114.84.95
Last change on this file since a800d09c was a800d09c, checked in by Joel Sherrill <joel.sherrill@…>, on Apr 12, 2004 at 9:52:13 PM

2004-04-12 David Querbach <querbach@…>

  • .cvsignore, ChangeLog?, Makefile.am, README, bsp_specs, configure.ac, times, clock/p_clock.c, console/console.c, include/.cvsignore, include/bsp.h, include/coverhd.h, irq/irq.h, startup/bspstart.c, startup/iss555.c, startup/linkcmds, startup/start.S, wrapup/.cvsignore, wrapup/Makefile.am: New files.
  • Property mode set to 100644
File size: 7.8 KB
Line 
1#
2#  $Id$
3#
4
5This is a README file for the Intec SS555 of RTEMS 4.6.0
6
7The SS555 port was sponsored by Defence Research and Development
8Canada - Suffield, and is Copyright (C) 2004, Real-Time Systems Inc.
9
10Please send any comments, improvements, or bug reports to:
11
12David Querbach
13querbach@realtime.bc.ca
14
15
16Summary
17-------
18
19BSP NAME:           ss555
20BOARD:              Intec Automation Inc. SS555
21BUS:                None
22CPU FAMILY:         PowerPC
23CPU:                PowerPC MPC555
24COPROCESSORS:       Built-in Motorola TPU
25MODE:               32 bit mode
26
27DEBUG MONITOR:      None
28
29PERIPHERALS
30===========
31TIMERS:             PIT / Timebase
32  RESOLUTION:       1 microsecond (4 MHz crystal / 4)
33SERIAL PORTS:       2 SCI
34REAL-TIME CLOCK:    On-chip.
35DMA:                None.
36VIDEO:              None.
37SCSI:               None.
38NETWORKING:         None.
39                   
40
41DRIVER INFORMATION
42==================
43CLOCK DRIVER:       yes
44CONSOLE DRIVER:     yes
45SHMSUPP:            N/A
46TIMER DRIVER:       yes
47NETWORK DRIVER:     no
48
49NOTES
50=====
51On-chip resources:
52        SCI1            serial port
53        SCI2            serial port (console)
54        PIT             clock
55        TB              timing test support
56        DEC
57        SWT             watchdog timer -- enable in startup/iss555.c
58        *CS0            external 512k 2-1-1-1 Burst SRAM
59        *CS1
60        *CS2
61        *CS3            CPLD
62        IRQ0
63        IRQ1
64        IRQ2           
65        IRQ3           
66        IRQ4           
67        IRQ5   
68        IRQ6
69        IRQ7
70        IRQ_LVL0       
71        IRQ_LVL1
72        IRQ_LVL2
73        IRQ_LVL3
74        IRQ_LVL4
75        IRQ_LVL5        SCI
76        IRQ_LVL6        PIT
77        IRQ_LVL7
78       
79
80Board description
81-----------------
82Clock rate:     40 MHz development/embeddable board
83Bus width:      32-bit on-board RAM, 16-bit off-board I/O
84FLASH:          512k on-chip
85RAM:            512k 2-1-1-1 burst SRAM
86
87
88Installation
89------------
90
91The ss555 port uses the Intec SS555's external RAM in two different ways,
92depending on whether or not it is built for debugging by giving the
93VARIANT=DEBUG switch to make:
94
95        make VARIANT=DEBUG all
96
971.  In the debugging case, the linker script concanttenates the .text,
98.data, and .bss sections starting at location zero, so they all can be
99loaded into the external RAM for debugging.  We assume that the debugger
100disables the internal Flash ROM and enables the external RAM before loading
101the code into the external RAM.
102
1032.  In the normal (non-debugging) case, the linker script still places the
104.text section near zero, but places the start of the .data and .bss sections
105at the start location of the MPC555's internal RAM.  The system startup code
106then configures the external RAM just after the internal RAM in memory,
107forming one large block from the two RAM devices.
108
109
110Console driver
111---------------
112
113This BSP includes an termios-capable asynchronous serial line driver that
114supports SCI1 and SCI2. The RTEMS console is selected at configuration time
115with the CONSOLE_MINOR variable (see .../ss555/configure.ac).  We default to
116SCI2 for the console, since SCI1 has some extra features which may be
117desired for application use.
118
119The BSP console supports three different modes of operation:
120
121  1. polled I/O done with termios support,
122  2. polled I/O done without termios support,
123  3. interrupt-driven I/O with termios support.
124     
125The mode of operation of the serial driver is determined at configure time in
126part by the value of the UARTS_IO_MODE variable (see .../ss555/configure.ac).
127
128  0 - polled I/O.
129  1 - interrupt-driven I/O.
130 
131Also, set the value of UARTS_USE_TERMIOS to select whether termios should be
132used to perform buffering and input/output processing. Without termios
133support, input processing is limited to the substitution of LF for a
134received CR, and output processing is limited to the transmission of a CR
135following the transmission of a LF. The choices for UARTS_USE_TERMIOS are:
136
137  0 - do not use termios
138  1 - use termios
139
140In most real-time applications, the driver should be configured to use
141termios and interrupt-driven I/O. Special requirements may dictate otherwise.
142
143Polled I/O must be used when running the timing tests. It must also be used
144to run some other tests and some samples, such as the cdtest. Some tests
145change the interrupt mask and will hang interrupt-driven I/O indefinitely.
146Others, such as cdtest, perform console output from the static constructors
147before the console is opened, causing the test to hang. Still other tests
148produce output that is supposed to be in some specific order. For these
149tests, termios should not be used, as termios buffers output and the
150transmission of the buffers occur at somewhat unpredictable times.
151
152The real solution is to fix the tests so that they work with interrupt-driven
153I/O and termios.
154
155
156printk() and debug output
157-----------------------
158
159The implementation of printk() in RTEMS is mostly independent of most system
160services. The printk() function can therefore be used to print messages to a
161debug console, particularly when debugging startup code or device drivers,
162i.e. code that runs before the console driver is opened or that runs with
163interrupts disabled.
164
165Support is provided to send printk output to either port. Specify the
166desired port at configure time by setting the value of PRINTK_MINOR to one
167of SCI1_MINOR or SCI2_MINOR.
168
169printk() always uses polled I/O, and never uses termios.
170
171If the printk() port is opened by RTEMS, then UARTS_IO_MODE must be set for
172polled I/O, otherwise the I/O functions will be in conflict.  Using printk()
173before the port is initialized is, of course, not possible.  This
174initialization occurs in console_initialize(), which is called by
175rtems_initialize_executive_early().
176
177
178Watchdog Timer
179--------------
180
181The MPC555 watchdog timer can be enabled at configuration time by defining
182the WATCHDOG_TIMEOUT variable.  This variable sets the watchdog timeout
183period in steps of
184
185          2048          2048
186        ---------  =  ---------  =  51.2 usec
187         Fsystem       40 MHz
188
189or about 1/20 msec.  When WATCHDOG_TIMEOUT is left undefined, the watchdog
190timer is disabled.
191
192
193Miscellaneous
194-------------
195
196Most code came from the mbx8xx port, except for the floating-point handling
197which came from the mpc8260ads.
198
199
200Host System
201-----------
202
203The port was developed on an x86 box running Debian 3.0.  The toolchain was
204built from the sources at rtems.org, except for the autotools which came
205from the Debian distribution.
206
207
208Test Configuration
209------------------
210
211Board:                Intec SS555 v1.1
212CPU:                  Motorola MPC555LFMZP40, mask 1K83H
213Clock Speed:          Crystal 4.0 MHz, CPU 40.0 MHz
214RAM:                  512K bytes of 2-1-1-1 Burst SRAM
215Times Reported in:    Microseconds
216Timer Source:         Timebase clock
217GCC Flags:            -O4 -fno-keep-inline-functions -mcpu=(821/860)
218Console:              Operates in polled mode on SMC2. No I/O through EPPC-Bug.   
219
220
221Test Results
222------------
223
224Single processor tests: 
225  All tests passed, except that:
226    - sp09 aborts due to memory shortage
227    - sp20 needs to be run with output buffering enabled (see
228      buffer_test_io.h)
229
230Multi-processor tests: 
231  Not applicable.
232
233Library tests:
234  All tests passed.  Note that the termios test only works if the system is
235  rebuilt with termios enabled.                         
236
237Posix tests:
238  All tests passed, except that:
239    - the message queue test failed with "errno (91 - File or path name too
240      long)"
241
242Timing tests:
243  Due to memory limitations, many of the tests will not run unless you set
244  OPERATION_COUNT=20 at configuration time.
245
246  To run tm27 (the interrupt latency timer test), short CN5-48 to CN5-50 on
247  the SS555 board.
248
249  All tests run cleanly, except for tm26, which gives a "PANIC 12" after it
250  exits.  This doesn't seem to cause a problem otherwise.
251
252  See the times file for the results of the timing tests.
253
254Network tests: 
255  Not applicable.
256
257Sample programs:
258  These run correctly, except that:
259    - The "minimum" sample is not designed to run properly on any system.
260    - The loopback, fileio, unilimited, and pppd tests fail due to memory
261      limitations.
262    - The paranoia program dies on a floating-point assist exception.
Note: See TracBrowser for help on using the repository browser.