This documentation explains how the eCos HAL specification has been
mapped onto the Malta hardware, and should be read in conjunction
with that specification. The Malta platform HAL package complements
the MIPS architectural HAL and the MIPS32 variant HAL. It provides
functionality which is specific to the target board.
Startup
Following a hard or soft reset the HAL will initialize or reinitialize
the peripherals that it uses. There is an exception for RAM
startup applications which depend on a ROM monitor for certain
services.
For ROM startup, the HAL will perform additional
initialization, setting up the memory controller and PCI bridge and programming the
various internal registers. This is done in the assembler macros
defined in the arch.inc,
variant.inc and platform.inc
headers and in the hal_platform_init() function
in plf_misc.c.
Linker Scripts and Memory Maps
The platform HAL package provides the memory layout information needed
to generate the linker script. The MMU is not enabled for this
platform, however, the normal MIPS segment address translations are
present. The key memory locations are as follows.
NOTE: The virtual memory maps in this section use a C and B column to indicate
whether or not the region is cached (C) or buffered (B).
Virtual Address Range C B Description
----------------------- - - -----------
0x80000000 - 0x81ffffff Y Y SDRAM
0x9e000000 - 0x9e3fffff Y N System flash (cached)
0x9fc00000 - 0x9fffffff Y N System flash (mirrored)
0xa8000000 - 0xb7ffffff N N PCI Memory Space
0xb4000000 - 0xb40fffff N N Galileo System Controller
0xb8000000 - 0xb80fffff N N Southbridge / ISA
0xb8100000 - 0xbbdfffff N N PCI I/O Space
0xbe000000 - 0xbe3fffff N N System flash (noncached)
0xbf000000 - 0xbfffffff N N Board logic FPGA
MIPS16 Support
The Malta platform HAL enables MIPS16 support in the architecture HAL
for those Core boards that contain capable processors. This allows
application code to be compiled using MIPS16
options and linked against the 32 bit mode eCos library.
To compile for MIPS16 the standard flags that are used in eCos and exported
to the ecos.mak file should be used except that
the -mips32 flag should be replaced by
-mips16 -fwritable-strings. The
-mips16 option enables MIPS16 compilation and the
-fwritable-strings option is a work-around for a
bug in the compiler.