mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-22 05:28:32 +08:00
2004-11-10 Richard Campbell <richard.campbell@oarcorp.com>
* Makefile.am, configure.ac, bootloader/Makefile.am, include/bsp.h, wrapup/Makefile.am: Add MVME2100 BSP and MPC8240 support. There was also a significant amount of spelling and whitespace cleanup. * README.MVME2100: New file.
This commit is contained in:
@@ -1,3 +1,10 @@
|
||||
2004-11-10 Richard Campbell <richard.campbell@oarcorp.com>
|
||||
|
||||
* Makefile.am, configure.ac, bootloader/Makefile.am, include/bsp.h,
|
||||
wrapup/Makefile.am: Add MVME2100 BSP and MPC8240 support. There was
|
||||
also a significant amount of spelling and whitespace cleanup.
|
||||
* README.MVME2100: New file.
|
||||
|
||||
2004-11-05 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* startup/linkcmds: Add .gnu.linkonce.b and .gnu.linkonce.bs sections.
|
||||
|
||||
@@ -25,6 +25,7 @@ include_bspdir = $(includedir)/bsp
|
||||
|
||||
include_HEADERS += ../../powerpc/shared/include/nvram.h
|
||||
include_HEADERS += ../../shared/include/coverhd.h
|
||||
include_HEADERS += ../../shared/tod.h
|
||||
|
||||
EXTRA_DIST = ../../powerpc/shared/start/start.S
|
||||
start$(LIB_VARIANT).$(OBJEXT): ../../powerpc/shared/start/start.S
|
||||
@@ -57,6 +58,20 @@ startup_g_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
|
||||
|
||||
noinst_DATA += startup$(LIB_VARIANT).rel
|
||||
|
||||
EXTRA_PROGRAMS += tod.rel
|
||||
CLEANFILES += tod.rel
|
||||
tod_rel_SOURCES = ../../shared/tod.c ../../powerpc/shared/tod/todcfg.c
|
||||
tod_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_OPTIMIZE_V)
|
||||
tod_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
|
||||
|
||||
EXTRA_PROGRAMS += tod_g.rel
|
||||
CLEANFILES += tod_g.rel
|
||||
tod_g_rel_SOURCES = $(tod_rel_SOURCES)
|
||||
tod_g_rel_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAGS_DEBUG_V)
|
||||
tod_g_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
|
||||
|
||||
noinst_DATA += tod$(LIB_VARIANT).rel
|
||||
|
||||
EXTRA_PROGRAMS += pclock.rel
|
||||
CLEANFILES += pclock.rel
|
||||
pclock_rel_SOURCES = ../../powerpc/shared/clock/p_clock.c
|
||||
@@ -229,7 +244,8 @@ noinst_DATA += vme$(LIB_VARIANT).rel
|
||||
|
||||
all-local: $(PREINSTALL_FILES) $(TMPINSTALL_FILES)
|
||||
|
||||
EXTRA_DIST += BOOTING README.MVME2300 README.OTHERBOARDS README.dec21140
|
||||
EXTRA_DIST += BOOTING README.mtx603e README.MVME2100 README.MVME2300 \
|
||||
README.OTHERBOARDS README.mcp750 README.MVME2307 README.dec21140
|
||||
EXTRA_DIST += times.mcp750 times.mvme2307
|
||||
|
||||
PREINSTALL_DIRS =
|
||||
@@ -275,6 +291,10 @@ $(PROJECT_INCLUDE)/coverhd.h: ../../shared/include/coverhd.h $(PROJECT_INCLUDE)/
|
||||
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h
|
||||
|
||||
$(PROJECT_INCLUDE)/tod.h: ../../shared/tod.h $(PROJECT_INCLUDE)/$(dirstamp)
|
||||
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/tod.h
|
||||
PREINSTALL_FILES += $(PROJECT_INCLUDE)/tod.h
|
||||
|
||||
$(PROJECT_LIB)/start$(LIB_VARIANT).$(OBJEXT): start$(LIB_VARIANT).$(OBJEXT) $(PROJECT_LIB)/$(dirstamp)
|
||||
$(INSTALL_DATA) $< $(PROJECT_LIB)/start$(LIB_VARIANT).$(OBJEXT)
|
||||
TMPINSTALL_FILES += $(PROJECT_LIB)/start$(LIB_VARIANT).$(OBJEXT)
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
The MVME2100 is a Motorola VMEbus board which is similar to the other
|
||||
Motorola PowerPC boards supported by this BSP. But it does not support
|
||||
the Motorola CPU Configuration Register. This makes it impossible to
|
||||
dynamically probe and determine that you are executing on this board
|
||||
variant. So this BSP variant must be explicitly built to only support
|
||||
the MVME2100. The complete list of differences found so far is:
|
||||
|
||||
* No CPU Configuration Register
|
||||
* one COM port
|
||||
* COM port is on PCI IRQ not ISA IRQ
|
||||
* limited on RAM (32 or 64 MB)
|
||||
* uses the EPIC interrupt controller on the MPC8240
|
||||
* does not have an ISA bus but has an ISA I/O address space
|
||||
* cannot set DBAT2 in bspstart like other variants because
|
||||
there are PCI/ISA Interrupt Acknowledge registers at this space
|
||||
This BSP may have left some PCI memory uncovered
|
||||
* PPCBug starts programs with vectors still in ROM
|
||||
|
||||
Supported Features:
|
||||
- Interrupt driven console using termios
|
||||
- Network device driver
|
||||
- Real-Time Clock driver
|
||||
- Clock Tick Device Driver
|
||||
|
||||
Things to address:
|
||||
- Does not return to monitor
|
||||
- Level 1 cache is disabled for now
|
||||
- Check on trying to read CPU Configuration Register for CHRP/Prep for PCI
|
||||
and report a failure if in the wrong mode. May be able to set the model
|
||||
but it may be hard to test if we break PPCBug.
|
||||
- Use NVRAM for network configuration information
|
||||
|
||||
BSP Features Not Implemented:
|
||||
- VMEbus mapped in but untested
|
||||
- OpenPIC features not required for BSP are not supported
|
||||
|
||||
Memory Map
|
||||
==========
|
||||
BAT Mapping
|
||||
|
||||
ffff ffff |------------------------------------| ----- ffff ffff
|
||||
| ROM/FLASH Bank 0 | |
|
||||
fff0 0000 |------------------------------------| |
|
||||
| System I/O | |
|
||||
ffe0 0000 |------------------------------------| |
|
||||
| Replicated ROM/FLASH Bank 0 | |
|
||||
| Replicated System I/O | |
|
||||
ff80 0000 |------------------------------------| |
|
||||
| ROM/FLASH Bank 1 | DBAT3
|
||||
ff00 0000 |------------------------------------| - Supervisor R/W
|
||||
| PCI Interrupt Acknowledge | - Cache Inhibited
|
||||
fef0 0000 |------------------------------------| - Guarded
|
||||
| PCI Configuration Data Register | |
|
||||
fee0 0000 |------------------------------------| |
|
||||
| PCI Configuration Address Register | |
|
||||
fec0 0000 |------------------------------------| |
|
||||
| PCI I/O Space | |
|
||||
fe80 0000 |------------------------------------| |
|
||||
| PCI/ISA I/O Space | |
|
||||
fe00 0000 |------------------------------------| |
|
||||
| PCI/ISA Memory Space | |
|
||||
fd00 0000 |------------------------------------| |
|
||||
| | |
|
||||
| xxxxxxxxxxxxxx| ----- f000 0000
|
||||
| x not mapped |
|
||||
| xxxxxxxxxxxxxx| ----- 9000 0000
|
||||
| | |
|
||||
| | |
|
||||
| PCI Memory Space | DBAT2
|
||||
| | - Supervisor R/W
|
||||
| | - Cache Inhibited
|
||||
| | - Guarded
|
||||
| | |
|
||||
| | |
|
||||
| | |
|
||||
8000 0000 |------------------------------------| ----- 8000 0000
|
||||
| x |
|
||||
| x not mapped |
|
||||
| Reserved xxxxxxxxxxxxxx| ----- 1000 0000
|
||||
| | |
|
||||
| | |
|
||||
0200 0000 |------------------------------------| |
|
||||
| | |
|
||||
| | |
|
||||
| | |
|
||||
| | |
|
||||
| DRAM (32MB) | DBAT1/IBAT1
|
||||
| | - Supervisor R/W
|
||||
| | |
|
||||
| | |
|
||||
| | |
|
||||
| | |
|
||||
0000 0000 |------------------------------------| ----- 0000 0000
|
||||
|
||||
|
||||
TTCP Performance on First Day Run
|
||||
=================================
|
||||
Fedora Core 1 on (according to /proc/cpuinfo) a 300 Mhz P3 using Netgear
|
||||
10/100 CardBus NIC on a dedicated 10BaseT LAN.
|
||||
|
||||
ON MVME2100: ttcp -t -s 192.168.2.107
|
||||
REPORTED ON MVME2100:
|
||||
ttcp-t: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp -> 192.168.2.107
|
||||
ttcp-t: socket
|
||||
ttcp-t: connect
|
||||
ttcp-t: 16777216 bytes in 20.80 real seconds = 787.69 KB/sec +++
|
||||
ttcp-t: 2048 I/O calls, msec/call = 10.40, calls/sec = 98.46
|
||||
ttcp-t: 0.0user 20.8sys 0:20real 100% 0i+0d 0maxrss 0+0pf 0+0csw
|
||||
|
||||
ON MVME2100: ttcp -t -s 192.168.2.107
|
||||
REPORTED ON MVME2100:
|
||||
ttcp -r -s
|
||||
ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp
|
||||
ttcp-r: socket
|
||||
ttcp-r: accept from 192.168.2.107
|
||||
ttcp-r: 16777216 bytes in 15.41 real seconds = 1063.21 KB/sec +++
|
||||
ttcp-r: 11588 I/O calls, msec/call = 1.36, calls/sec = 751.98
|
||||
ttcp-r: 0.0user 15.4sys 0:15real 100% 0i+0d 0maxrss 0+0pf 0+0csw
|
||||
|
||||
@@ -29,7 +29,7 @@ DEFAULT_INCLUDES =
|
||||
|
||||
# Remove references to EABI when compiling bootloader
|
||||
BOOTLOADER_CPU_FLAGS=$(subst -msdata=eabi,,$(subst -meabi,,$(CPU_CFLAGS)))
|
||||
AM_CPPFLAGS = -D__BOOT__ -DDEBUG
|
||||
AM_CPPFLAGS = -D__BOOT__
|
||||
AM_CFLAGS = $(GCC_SPECS) -specs bsp_specs -qrtems -mrelocatable -msoft-float \
|
||||
-mstrict-align -fno-builtin -Wall -mmultiple -mstring -O2 \
|
||||
-fomit-frame-pointer -ffixed-r13 -mno-sdata $(BOOTLOADER_CPU_CFLAGS)
|
||||
|
||||
@@ -31,6 +31,16 @@ RTEMS_BSPOPTS_HELP([PPC_USE_DATA_CACHE],
|
||||
of PowerPC 603e revisions and emulator versions.
|
||||
The BSP actually contains the call that enables this.])
|
||||
|
||||
RTEMS_BSPOPTS_SET([mvme2100],[mvme2100],[1])
|
||||
RTEMS_BSPOPTS_SET([mvme2100],[*],[])
|
||||
RTEMS_BSPOPTS_HELP([mvme2100],
|
||||
[Defined for MVME2100 -- undefined for others])
|
||||
|
||||
RTEMS_BSPOPTS_SET([mpc8240],[mvme2100],[1])
|
||||
RTEMS_BSPOPTS_SET([mpc8240],[*],[])
|
||||
RTEMS_BSPOPTS_HELP([mpc8240],
|
||||
[Defined for boards with MPC8240 -- undefined for others])
|
||||
|
||||
## HACK: This should better be propagated through the BSP's bsp.h.
|
||||
## however, this BSP doesn't have one :(
|
||||
AC_DEFINE_UNQUOTED([USE_ENHANCED_INTR_API],[1],
|
||||
|
||||
@@ -26,26 +26,58 @@
|
||||
* - Interrupt stack space is not minimum if defined.
|
||||
*/
|
||||
|
||||
#if !defined(mvme2100)
|
||||
#define CONFIGURE_NUMBER_OF_TERMIOS_PORTS 2
|
||||
#endif
|
||||
|
||||
#define CONFIGURE_INTERRUPT_STACK_MEMORY (16 * 1024)
|
||||
|
||||
/* fundamental addresses for this BSP (PREPxxx are from libcpu/io.h) */
|
||||
#define _IO_BASE PREP_ISA_IO_BASE
|
||||
/* fundamental addresses for BSP (CHRPxxx and PREPxxx are from libcpu/io.h) */
|
||||
#if defined(mvme2100)
|
||||
#define _IO_BASE CHRP_ISA_IO_BASE
|
||||
#define _ISA_MEM_BASE CHRP_ISA_MEM_BASE
|
||||
/* address of our ram on the PCI bus */
|
||||
#define PCI_DRAM_OFFSET CHRP_PCI_DRAM_OFFSET
|
||||
#define PCI_MEM_BASE 0x80000000
|
||||
#define PCI_MEM_BASE_ADJUSTMENT 0
|
||||
|
||||
#else
|
||||
#define _IO_BASE PREP_ISA_IO_BASE
|
||||
#define _ISA_MEM_BASE PREP_ISA_MEM_BASE
|
||||
/* address of our ram on the PCI bus */
|
||||
#define PCI_DRAM_OFFSET PREP_PCI_DRAM_OFFSET
|
||||
/* offset of pci memory as seen from the CPU */
|
||||
#define PCI_MEM_BASE PREP_ISA_MEM_BASE
|
||||
#define PCI_MEM_BASE_ADJUSTMENT PREP_ISA_MEM_BASE
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* base address definitions for several devices
|
||||
* Base address definitions for several devices
|
||||
*
|
||||
* MVME2100 is very similar but has fewer devices and uses on-CPU EPIC
|
||||
* implementation of OpenPIC controller. It also cannot be probed to
|
||||
* find out what it is which is VERY different from other Motorola boards.
|
||||
*/
|
||||
|
||||
#if defined(mvme2100)
|
||||
#define BSP_UART_IOBASE_COM1 ((_IO_BASE)+0x01e10000)
|
||||
/* #define BSP_UART_IOBASE_COM1 (0xffe10000) */
|
||||
#define BSP_OPEN_PIC_BASE_OFFSET 0x40000
|
||||
|
||||
#define MVME_HAS_DEC21140
|
||||
#else
|
||||
#define BSP_UART_IOBASE_COM1 ((_IO_BASE)+0x3f8)
|
||||
#define BSP_UART_IOBASE_COM2 ((_IO_BASE)+0x2f8)
|
||||
|
||||
#define BSP_KBD_IOBASE ((_IO_BASE)+0x60)
|
||||
#define BSP_VGA_IOBASE ((_IO_BASE)+0x3c0)
|
||||
|
||||
#if defined(mvme2300)
|
||||
#define MVME_HAS_DEC21140
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define BSP_CONSOLE_PORT BSP_UART_COM1
|
||||
#define BSP_UART_BAUD_BASE 115200
|
||||
|
||||
@@ -60,9 +92,11 @@
|
||||
#define inport_byte(port,value) (value = inb(port))
|
||||
#define inport_word(port,value) (value = inw(port))
|
||||
#define inport_long(port,value) (value = inl(port))
|
||||
|
||||
/*
|
||||
* Vital Board data Start using DATA RESIDUAL
|
||||
*/
|
||||
|
||||
/*
|
||||
* Total memory using RESIDUAL DATA
|
||||
*/
|
||||
|
||||
@@ -12,7 +12,7 @@ ___libbsp_a_LIBADD = ../startup$(LIB_VARIANT).rel \
|
||||
../irq$(LIB_VARIANT).rel ../openpic$(LIB_VARIANT).rel \
|
||||
../pci$(LIB_VARIANT).rel ../residual$(LIB_VARIANT).rel \
|
||||
../vectors$(LIB_VARIANT).rel ../motorola$(LIB_VARIANT).rel \
|
||||
../vme$(LIB_VARIANT).rel
|
||||
../tod$(LIB_VARIANT).rel ../vme$(LIB_VARIANT).rel
|
||||
___libbsp_a_LIBADD += \
|
||||
../../../../libcpu/@RTEMS_CPU@/shared/cpuIdent$(LIB_VARIANT).rel \
|
||||
../../../../libcpu/@RTEMS_CPU@/shared/stack$(LIB_VARIANT).rel \
|
||||
|
||||
Reference in New Issue
Block a user