summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/mbx8xx/README
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/powerpc/mbx8xx/README')
-rw-r--r--c/src/lib/libbsp/powerpc/mbx8xx/README521
1 files changed, 0 insertions, 521 deletions
diff --git a/c/src/lib/libbsp/powerpc/mbx8xx/README b/c/src/lib/libbsp/powerpc/mbx8xx/README
deleted file mode 100644
index 3d10f6709d..0000000000
--- a/c/src/lib/libbsp/powerpc/mbx8xx/README
+++ /dev/null
@@ -1,521 +0,0 @@
-This is a README file for the MBX860/MBX821 port of RTEMS 4.5.0
-
-Please send any comments, improvements, or bug reports to:
-
-Charles-Antoine Gauthier
-charles.gauthier@nrc.ca
-
-or
-
-Darlene Stewart
-Darlene.Stewart@nrc.ca
-
-Software Engineering Group
-Institute for Information Technology
-National Research Council of Canada
-Ottawa, ON, K1A 0R6
-Canada
-
-
-Disclaimer
-----------
-
-The National Research Council of Canada is distributing this RTEMS
-board support package for the Motorola MBX860 and MBX821 as free
-software; you can redistribute it and/or modify it under terms of
-the GNU General Public License as published by the Free Software
-Foundation; either version 2, or (at your option) any later version.
-This software is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details. You should have received a
-copy of the GNU General Public License along with RTEMS; see file
-COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
-Cambridge, MA 02139, USA.
-
-Under no circumstances will the National Research Council of Canada
-nor Her Majesty the Queen in right of Canada assume any liablility
-for the use this software, nor any responsibility for its quality or
-its support.
-
-
-Summary
--------
-
-BSP NAME: mbx8xx
-BOARD: Motorola MBX860 and MBX821 Embedded Controllers
-BUS: No backplane. On-board ISA, PCI, PC/104 and PCMCIA.
-CPU FAMILY: PowerPC
-CPU: PowerPC MPC860 or MPC821
-COPROCESSORS: Built-in Motorola QUICC
-MODE: 32 bit mode
-
-DEBUG MONITOR: EPPC-Bug
-
-PERIPHERALS
-===========
-TIMERS: PIT / Timebase
- RESOLUTION: 1 microsecond / frequency = clock-speed / 16
-SERIAL PORTS: 2 or 4 SCCs (SCC1 is hardwired for Ethernet)
- 2 SMC
- 1 SIO
-REAL-TIME CLOCK: Many. Look at documentation.
-DMA: Each SCC and SMC.
-VIDEO: None on-board. MPC821 has a built-in LCD panel driver.
-SCSI: None on-board.
-NETWORKING: Ethernet (10 Mbps) on SCC1
-
-
-DRIVER INFORMATION
-==================
-CLOCK DRIVER: yes
-CONSOLE DRIVER: yes
-SHMSUPP: N/A
-TIMER DRIVER: yes
-NETWORK DRIVER: yes
-
-NOTES
-=====
-On-chip resources:
- SCC1 network or console
- SCC2 serial port
- SMC1 gdb debug console/application console
- SMC2 application console
- CLK1 network
- CLK2 network
- CLK3
- CLK4
- CLK5
- CLK6
- CLK7
- CLK8
- BRG1 console
- BRG2 console
- BRG3 console
- BRG4 console
- RTC
- PIT clock
- TB
- DEC
- SWT
- *CS0 FLASH
- *CS1 DRAM bank (onboard)
- *CS2 DRAM bank 0 (1st half of DIMM)
- *CS3 DRAM bank 1 (2nd half of DIMM)
- *CS4 Battery-Backed SRAM
- *CS5 QSPAN PCI
- *CS6 QSPAN
- *CS7 Boot ROM
- UPMA
- UPMB
- IRQ0
- IRQ1
- IRQ2
- IRQ3
- IRQ4
- IRQ5
- IRQ6
- IRQ7
- IRQ_LVL0
- IRQ_LVL1
- IRQ_LVL2
- IRQ_LVL3
- IRQ_LVL4
- IRQ_LVL5
- IRQ_LVL6
- IRQ_LVL7
-
-
-Board description
------------------
-Clock rate: 50MHz Entry level boards, 40 MHz others.
-Bus width: 8/32 bit Flash, 32 bit DRAM
-FLASH: 2-4MB, 120ns
-RAM: 4-16MB EDO, 60ns DRAM DIMM
-
-
-Installation
-------------
-
-All MBX821/MBX860 ports share the same source code base. The MPC821 does
-not have SCC3 and SCC4. Instead, it has an LCD panel driver. Otherwise,
-the MBX821 and MBX860 boards are essentially identical. Entry level boards
-do not have all connectors and peripheral devices present. This has no
-impact on the source code base; it merely means that some functionality
-is not available on these entry level boards. For the most part, the port
-uses the standard build process for powerpc targets. However, you must
-specify the EXACT model of MBX board that you are building for as the
-argument to the RTEMS_BSP make variable. If you do not, the build process
-will build for a MBX860-002. Look at rtems/make/custom/mbx8xx.cfg for the
-specific list of boards supported and their corresponding names. An
-example build command is:
-
- make RTEMS_BSP=mbx821_001 VARIANT=DEBUG
-
-This will build the debug version of all RTEMS libraries, samples and tests
-(if the latter are enabled).
-
-The Software Engineering Group of the Institute for Information Technology
-only owns an MBX821-001 and MBX86-002. The only provided config files are
-mbx821_001.cfg and mbx860_002.cfg. A SPECIFIC CONFIG FILE IS REQUIRED. Use
-one of the provided files as a template to create a specific config file for
-another model.
-
-We rely on EPPC-BUG to download to the targets. We use the "PLH" command.
-We enabled a TFTP deamon on our development host.
-
-
-Port Description
-Console driver
----------------
-
-This BSP includes an termios-capable asynchronous serial line driver that
-supports SMC1, SMC2, SCC2, and SCC3 and SCC4 if present. The RTEMS console is
-selected in rtems/make/custom/mbx8xx.cfg with the CONSOLE_MINOR variable, or
-in NVRAM if that option is enabled in the rtems/make/custom/mbx8xx.cfg file.
-We normally run with the RTEMS application console on SMC2. SMC1 is used by
-the debugger.
-
-Support is provided for five different modes of operation:
-
- 1. polled I/O done by EPPC-Bug with termios support,
- 2. polled I/O done by EPPC-Bug without termios support,
- 3. polled I/O done by the supplied device driver with termios support,
- 4. polled I/O done by the supplied device driver without termios support,
- 5. interrupt-driven I/O done by the supplied device driver with termios
- support.
-
-If NVRAM_CONFIGURE is set to 1 in rtems/make/custom/mbx8xx.cfg, the mode of
-operation of the driver is determined at boot time from the values stored
-in the user area in NVRAM. See the Configuration Parameters section below for
-instructions on setting up NVRAM. Otherwise, the mode of operation of the
-serial driver is determined at build time in part by the value of the
-UARTS_IO_MODE constant in rtems/make/custom/mbx8xx.cfg. Edit the file to select
-the type of I/O desired before building RTEMS. The choices are:
-
- 0 - polled I/O done by the supplied device driver,
- 1 - interrupt-driven I/O done by the supplied device driver,
- 2 - polled I/O done by EPPC-Bug.
-
-Also, if NVRAM_CONFIGURE is not set to 1 in rtems/make/custom/mbx8xx.cfg, set
-the value of UARTS_USE_TERMIOS to select whether termios should be used to
-perform buffering and input/output processing. Without termios support, input
-processing is limited to the substitution of LF for a received CR, and output
-processing is limited to the transmission of a CR following the transmission of
-a LF. The choices for UARTS_USE_TERMIOS are:
-
- 0 - do not use termios
- 1 - use termios
-
-In most real-time applications, the driver should be configured to use
-termios and interrupt-driven I/O. Special requirements may dictate otherwise.
-
-Polled I/O must be used when running the timing tests. It must also be used
-to run some other tests and some samples, such as the cdtest. Some tests
-change the interrupt mask and will hang interrupt-driven I/O indefinitely.
-Others, such as cdtest, perform console output from the static constructors
-before the console is opened, causing the test to hang. Still other tests
-produce output that is supposed to be in some specific order. For these
-tests, termios should not be used, as termios buffers output and the
-transmission of the buffers occur at somewhat unpredictable times.
-
-The real solution is to fix the tests so that they work with interrupt-driven
-I/O and termios.
-
-
-printk() and debug output
------------------------
-
-The implementation of printk() in RTEMS is mostly independent of most system
-services. The printk() function can therefore be used to print messages to a
-debug console, particularly when debugging startup code or device drivers,
-i.e. code that runs before the console driver is opened or that runs with
-interrupts disabled.
-
-Support is provided to send printk output to any port. Specify the desired
-port at build time in rtems/make/custom/mbx8xx.cfg by setting the value
-of PRINTK_MINOR to one of SMC1_MINOR, SMC2_MINOR, SCC2_MINOR, SCC3_MINOR,
-or SCC4_MINOR. Alternatively, if NVRAM_CONFIGURE is set to 1 in
-rtems/make/custom/mbx8xx.cfg, the printk port is selected based on data that
-is stored in the user area in NVRAM. See the Configuration Parameters section
-below for instructions on setting up NVRAM.
-
-Select the type of output desired for printk() by setting the value of
-PRINTK_IO_MODE in rtems/make/custom/mbx8xx.cfg. The choices are:
-
- 0 - polled I/O done by the supplied device driver,
- 1 - polled I/O done by the supplied device driver,
- 2 - polled I/O done by EPPC-Bug.
-
-printk() does not use termios.
-
-If the printk() port is opened by RTEMS, then PRINK_IO_MODE mode must have
-the same value as UARTS_IO_MODE, otherwise the I/O functions will be in
-conflict. Interrupt-driven printk() output did not work, although we think
-that it should have. It would have been of dubious value anyways. If
-interrupt-driven I/O is selected (value of 1), the driver defaults to using
-polled I/O through the RTEMS driver.
-
-IMPORTANT: Polled I/O through the RTEMS driver requires that the driver be
-initialized. Consequently, to debug startup code using printk prior to the
-initialization of the serial driver, use mode 2: polled I/O through EPPC-Bug,
-and read the next section.
-
-
-EPPC-Bug and I/O
-----------------
-
-IMPORTANT: When using EPPC-Bug 1.1 for polled I/O, only the SMC1 port is
-usable. This is a deficiency of the firmware which may be fixed in later
-revision. When using this monitor with UARTS_IO_MODE set to 2, CONSOLE_MINOR
-must be set to SMC1_MINOR. Similarly, if PRINTK_IO_MODE set to 2,
-PRINTK_MINOR must be set to SMC1_MINOR. When UARTS_IO_MODE is set to 2,
-only SMC1 is usable.
-
-Be warned that when EPPC-Bug does I/O through a serial port, all interrupts
-get turned off in the SIMASK register! This is a definite bug in release 1.1
-of the firmware. It may have been fixed in later releases. EPPB-Bug does
-I/O through its debug port whenever it is given control, e.g. after a
-breakpoint is hit, not just when it is used to perform polled I/O on behalf
-of RTEMS applications. In particular, in our configuration, we have gdb
-communication with EPPC-Bug through SMC1.
-
-To solve this problem, whenever the BSP manipulates the SIMASK, it makes a
-copy of the written value in a global variable called 'simask_copy'. That
-value must be restored by GDB before execution resumes. The following commands
-placed in the .gdbinit file takes care of this:
-
-# GDB Initialization file for EPPC-Bug.
-
-define hook-stepi
-set language c
-set *(int *)0xFA200014=simask_copy
-set language auto
-end
-
-define hook-step
-set language c
-set *(int *)0xFA200014=simask_copy
-set language auto
-end
-
-define hook-continue
-set language c
-set *(int *)0xFA200014=simask_copy
-set language auto
-end
-
-define hook-nexti
-set language c
-set *(int *)0xFA200014=simask_copy
-set language auto
-end
-
-define hook-next
-set language c
-set *(int *)0xFA200014=simask_copy
-set language auto
-end
-
-define hook-finish
-set language c
-set *(int *)0xFA200014=simask_copy
-set language auto
-end
-
-IMPORTANT: When using EPPC-Bug on SMC1, either for debugging or for polled I/O,
-EPPCBUG_SMC1 must be defined in rtems/make/custom/mbx8xx.cfg, or the eppc_bug
-field set to non-zero in NVRAM. Defining this constant prevents the device
-driver from re-initializing SMC1. It also causes the network driver, the clock
-driver, and the asynchronous serial line driver to maintain simask_copy for use
-by gdb.
-
-Polled I/O through EPPC-Bug is pretty funky... If your are old enough, it might
-bring back fond memories of the days of 300 baud modems. If not, you can
-experience for yourself what the state of the art used to be.
-
-
-Floating-point
---------------
-
-The MPC860 and MPC821 do not have floating-point units. All code should
-get compiled with the appropriate -mcpu flag. The nof variants of the gcc
-runtime libraries should be used for linking.
-
-
-Configuration Parameters
-------------------------
-
-If NVRAM_CONFIGURE is set in rtems/make/custom/mbx8xx.cfg, certain
-configuration parameters will be read from the first 31 bytes of the NVRAM
-User Area, which starts at 0xFA001000. The user is responsible for writing
-the appropriate values in NVRAM (via EPPC-Bug). The paramaters
-that are configurable and their default settings are described below.
-
- Cache Mode (0xFA001000 - 1 byte)
- Set the following bits in the byte to control the caches:
- bit 0
- 0 - data cache disable
- 1 - data cache enable
- bit 1
- 0 - instruction cache disable
- 1 - instruction cache enable
- If enabled, all of RAM except for the last 512 KB will be cached using
- copyback mode. The last 512 KB of RAMis for the use of EPPC-Bug.
-
- Console driver I/O mode (0xFA001001 - 1 byte)
- Set the following bits in the byte to set the desired I/O mode
- for the rtems ports:
- bit 0
- 0 - do not use termios
- 1 - use termios
- bit 2 & 1
- 00 - polled I/O through RTEMS driver
- 01 - interrupt-driven I/O
- 10 - polled I/O through EPPC-Bug
- Set the following bits in the byte to set the desired I/O mode
- for printk:
- bit 5 & 4
- 00 - polled I/O through RTEMS driver
- 01 - polled I/O through RTEMS driver
- 10 - polled I/O through EPPC-Bug
-
- Console driver ports (0xFA001002 - 1 byte)
- Set the following bits in the byte to select the console and printk ports:
- bit 2, 1 & 0 select the RTEMS console port
- 000 - /dev/tty0, SMC1
- 001 - /dev/tty1, SMC2
- 011 - /dev/tty2, SCC2
- 100 - /dev/tty3, SCC3
- 101 - /dev/tty4, SCC4
- bit 6, 5 & 4 select the RTEMS printk port
- 000 - /dev/tty0, SMC1
- 001 - /dev/tty1, SMC2
- 011 - /dev/tty2, SCC2
- 100 - /dev/tty3, SCC3
- 101 - /dev/tty4, SCC4
- If the printk port is the same as some other port that will be opened by an
- RTEMS application, then the driver must use polled I/O, or the printk port
- must not be used.
-
- EPPC-Bug in use on SMC1 (0xFA001003 - 1 byte)
- Set to non-zero to indicate that EPPC-Bug is using SMC1. This will prevent
- the SMC1 port from being re-initialized.
-
- IP Address (0xFA001004 - 4 bytes)
- Write the hexadecimal representation of the IP address of the board in this
- location, e.g. 192.168.1.2 = 0xC0A80102
-
- Netmask (0xFA001008 - 4 bytes)
- Write the hexadecimal representation of the netmask in this location
- for example, 255.255.255.0 = 0xFFFFFF00
-
- Ethernet Address (0xFA00100C - 6 bytes)
- Write the Ethernet address of the board in this location
-
- Processor ID (0xFA001012 - 2 bytes)
- Reserved for future use
-
- RMA start (0xFA001014 - 4 bytes)
- Reserved for future use
-
- VMA start (0xFA001018 - 4 bytes)
- Reserved for future use
-
- RamSize (0xFA00101C - 4 bytes)
- Reserved for future use
-
-
-Miscellaneous
--------------
-
-All development was based on the eth_comm port.
-
-
-Host System
------------
-
-The port was developed on Pentiums II and III running RedHat Linux 6.0 and
-6.1. The following tools were used:
-
- - GNU gcc snapshot dated 20000214 configured for powerpc-rtems;
- - GNU binutils 2.10 configured for powerpc-rtems;
-
-Gcc 2.95.2 also worked. Gcc 2.95.1 will not compile the console driver with
--O4 or -O3. Compile it manually with -O2.
-
-
-Known Problems
---------------
-
-The cdtest will not run with interrupt-driven I/O. The reason is that the
-constructors for the static objects are called at boot time when the
-interrupts are still disabled. The output buffer fills up, but never empties,
-and the application goes into an infinite loop waiting for buffer space. This
-should have been documented in the rtems/c/src/tests/PROBLEMS file. The moral
-of this story is: do not do I/O from the constructors or destructors of static
-objects.
-
-When using interrupt-driven I/O, psx08 fails with an internal assertion error.
-
-
-What is new
-----------
-
-All known problems with use of the caches on the MBX860-002 and MBX821-001
-have been resolved.
-
-Configuration of the console and network is now possible at boot time through
-NVRAM parameters.
-
-
-Thanks
-------
-
-- to Jay Monkman (jmonkman@frasca.com) of Frasca International, Inc.
- for his eth_comm port.
-
-- to On-Line Applications Research Corporation (OAR) for developing
- RTEMS and making it available on a Technology Transfer basis;
-
-- to the FSF and to Cygnus Support for great free software;
-
-
-Test Configuration
-------------------
-
-Board: MBX821-001, MBX860-002
-CPU: Motorola MPC821, MPC860
-Clock Speed: 50 MHz, 40 MHz
-RAM: 4 MBytes of 32-bit DRAM
-Cache Configuration: Instruction cache on; data cache on, copyback mode.
-Times Reported in: clock ticks: TMBCLK = system clock / 16.
-Timer Source: Timebase clock
-GCC Flags: -O4 -fno-keep-inline-functions -mcpu=(821/860)
-Console: Operates in polled mode on SMC2. No I/O through EPPC-Bug.
-
-
-Test Results
-------------
-
-Single processor tests: All tests passed, except the following ones:
-
- - cpuuse and malloctest did not work.
-
- - The stackchk test got an access fault exception before the RTEMS stack
- checker had had a chance to detect the corrupted stack.
-
-
-Multi-processort tests: not applicable.
-
-
-Timing tests:
- See the times-mbx821 and times-mbx860 files for the results of the
- timing tests.
-
-
-Network tests:
- Worked.
-
-
-